компьютерный форум
Вернуться   Компьютерный форум > Компьютерный форум > Операционные системы и ПО > UNIX (Linux)

Ответ
 
LinkBack Опции темы Опции просмотра
Старый 18.01.2008, 03:53   #1
Пользователи
 
Регистрация: 07.05.2007
Сообщений: 54
Thumbs up

Z][ANSWER прошу вас помочь мне. Собрал ядро с поддеркой IPDEVERT и IPFW
Но трансляция не работает и я заблокировал свой FTP извне. Помогите найти ошибку в правилах

/etc/rc.conf:

Код:
firewall_enable="YES"
firewall_script="/etc/firewall.conf"
firewall_type="open"
natd_enable="YES"
natd_interface="rl1"
natd_flags="-dynamic -m"

/etc/firewall.conf:

Код:
#!/bin/sh
############ Начало файла правил IPFW ################
ipfw -q -f flush**#Сброс списка правил
# Префиксы команд для набора правил
cmd="ipfw -q add" # Замена префикса на cmd, только не забывать добавлять знак $
skip="skipto 800" # Переправляем данный правило на правило
pif="rl1"******** # Имя сетевой карты, которая смотрит в Интернет

${cmd} 005 allow all from any to any via rl0 # Нет запретов на внутренную сеть

##############################################################
### Нет ограничений на Loopback интерфейсе
##############################################################

${cmd} 010 allow all from any to any via lo0

###############################################################
### Проверяем входящий пакет и был ли он транслирован прежде
###############################################################

${cmd} 014 divert natd ip from any to any in via ${pif}

###############################################################
### Позволяем пакету проходить, если предыдущий был добавлен
# в "динамическую" таблицу правил с разрешением состояния keep-sate
###############################################################
${cmd} 015 check-state


###############################################################
### Далее ИСХОДЯЩАЯ СЕКЦИЯ. Для внешнего интерфейса
###############################################################

# Разрешаем исходящий доступ к DNS провайдера
${cmd} 020 ${skip} tcp**from any to any 53**out via ${pif} setup keep-state
${cmd} 021 ${skip} udp**from any to any 53**out via ${pif} keep-state
${cmd} 022 ${skip} icmp from any to any**** out via ${pif} keep-state

# Разрешаем исходящие WWW-http на 80 порт
${cmd} 040 ${skip} tcp from any to any 80 out via ${pif} setup keep-state

# Разрешаем исходящий WWW-https на 443 порт
${cmd} 050 ${skip} tcp from any to any 443 out via ${pif} setup keep-state

# Разрешаем исходящие запросы для почты
${cmd} 060 ${skip} tcp from any to any 25 out via ${pif} setup keep-state
${cmd} 061 ${skip} tcp from any to any 110 out via ${pif} setup keep-state

# Даем пользователю root неограниченные права, для проведения различных
# работ связанных с обнавление и т.д.
${cmd} 070 ${skip} tcp from me to any out via ${pif} setup keep-state uid root
${cmd} 070 ${skip} udp from me to any out via ${pif}**keep-state uid root
${cmd} 070 ${skip} icmp from me to any out via ${pif} keep-state uid root
# Разрешаем исходящий ping
${cmd} 080 ${skip} icmp from any to any out via ${pif} keep-state

# Разрешаем исходящий Time
${cmd} 090 ${skip} tcp from any to any 47 out via ${pif} setup keep-state

# Разрешаем исходящий nntp news
${cmd} 100 ${skip} tcp from any to any 119 out via ${pif} setup keep-state

# Разрешаем исхощие FTP, Telnen, SHH соединения
${cmd} 110 ${skip} tcp from any to any 21 out via ${pif} setup keep-state # FTp
${cmd} 111 ${skip} tcp from any to any 22 out via ${pif} setup keep-state # SHH
${cmd} 112 ${skip} tcp from any to any 23 out via ${pif} setup keep-state # Telnet

# Разрешаем исходящий whois
${cmd} 120 ${skip} tcp from any to any 43 out via ${pif} setup keep-state
# Разрешаем прохождение пакетов ntp time server
${cmd} 130 ${skip} udp from any to any 123 out via ${pif} keep-state

###############################################################
### Далее ВХОДЯЩАЯ СЕКЦИЯ. Для внешнего интерфейса
###############################################################

# Запрещаем весь входящий трафик из зарезервированных адресных пространств
${cmd} 300 deny all from 192.168.0.0/16 to any in via ${pif}
${cmd} 301 deny all from 172.16.0.0/12**to any in via ${pif}
${cmd} 302 deny all from 10.0.0.0/8**** to any in via ${pif}
${cmd} 303 deny all from 127.0.0.0/8****to any in via ${pif}
${cmd} 304 deny all from 0.0.0.0/8******to any in via ${pif}
${cmd} 305 deny all from 169.254.0.0/16 to any in via ${pif}
${cmd} 306 deny all from 192.0.0.2/24****to any in via ${pif}
${cmd} 307 deny all from 204.152.64.0/23 to any in via ${pif}
${cmd} 308 deny all from 224.0.0.0/3**** to any in via ${pif}

# Запрещаем ident
${cmd} 315 deny tcp from any to any 113 in via ${pif}
# Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия
# Netbios это сервис общего доступа MS/Windows
# Блокируем MS/Windows hosts2 name server requests 81
${cmd} 320 deny tcp from any to any 137 in via ${pif}
${cmd} 321 deny tcp from any to any 138 in via ${pif}
${cmd} 322 deny tcp from any to any 139 in via ${pif}
${cmd} 323 deny tcp from any to any 81**in via ${pif}

# Запрещаем пакты прибывшие позже
${cmd} 330 deny all from any to any frag in via ${pif}

# Запрещаем АСК пакеты которые не совпадают с динамической таблицей правил
${cmd} 332 deny tcp from any to any established in via ${pif}

# Разрешаем входящие безопасные FTP, SSH
${cmd} 350 allow from any to me 22 in via ${pif} setup limit src-addr 3
${cmd} 351 allow from any to me 21 in via ${pif} setup limit src-addr 6

${cmd} 400 deny log all from any to any in via ${pif}
${cmd} 401 deny log all from any to any out via ${pif}

# Местоположение skipto для исходящих правил состояния
${cmd} 800 divert natd ip from any to any out via ${pif}
${cmd} 801 allow ip from any to any

${cmd} 60666 deny log all from any to any




imas-filter вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
18.01.2008, 03:53
Техник
реклама
Thumbs up

Старый 18.01.2008, 08:07   #2
Пользователи
 
Регистрация: 03.11.2005
Сообщений: 1,375
По умолчанию

МяФ! такс, в целом правила выглядят вполне себе правильными, на ум сейчас пришло, есть ли в rc.conf - gateway_enable="YES", если есть продолжим думать...
Z][ANSWER вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 22.01.2008, 12:46   #3
Пользователи
 
Регистрация: 07.05.2007
Сообщений: 54
По умолчанию

Цитата:
[ANSWER' date='18.1.2008, 15:07' post='78305']
МяФ! такс, в целом правила выглядят вполне себе правильными, на ум сейчас пришло, есть ли в rc.conf - gateway_enable="YES", если есть продолжим думать...
конф подредактировал но VSFTPD так и не заработал, с NAT'ом все ОТЛИЧНО
когда соединяюсь через внутреннюю сеть на ftp все ОК, через внешнюю фиг,
Примерно такое

Код:
Connect to: (22.01.2008 18:45:22)
hostname=xx.xx.xx.xx:21
username=andreev
startdir=
220 Welcom to Alcatel IS GmbH Kz ftp server
USER XXXXXX
331 Please specify the password.
PASS ***********
230 Login successful.
SYST
215 UNIX Type: L8
FEAT
211-Features:
 EPRT
 EPSV
 MDTM
 PASV
 REST STREAM
 SIZE
 TVFS
211 End
Connect ok!
PWD
257 "/"
Чтение каталога...
TYPE A
200 Switching to ASCII mode.
PASV
227 Entering Passive Mode (82,200,174,67,218,202)
LIST
На последней команде LIST все, дальне никак

ipfw -d list выдает такое:

Код:
## Dynamic rules (27):
00351**23** 1184 (218s) STATE tcp 82.xx.xx.66 60220  82.xx.xx.67 21
00351**30** 1602 (279s) STATE tcp 82.xx.xx.66 60221  82.xx.xx.67 21
00351**40** 2015 (245s) STATE tcp 82.xx.xx.66 60206  82.xx.xx.67 21
00351**45** 2214 (78s) STATE tcp 82.xx.xx.66 58691  82.xx.xx.67 21
00022**48** 2880 (5s) STATE icmp 192.168.0.38 0  194.67.57.126 0/
Как видно содинение в динамической таблице, только не понятно зачем
82.xx.xx.67 - IP FTP сервера
82.xx.xx.66 - Ip хоста с которого пытаюсь зайти


в /var/log/security примерно такие ошибки:

Код:
Jan 22 17:50:27 ftp kernel: ipfw: 401 Deny TCP 82.xx.xx.67:21 82.xx.xx.66:55674 out via rl1
Jan 22 17:50:27 ftp last message repeated 2 times
Jan 22 17:50:27 ftp kernel: ipfw: limit 3 reached on entry 401
Jan 22 18:11:38 ftp kernel: ipfw: 401 Deny TCP 192.168.0.38:1165 65.54.81.107:80 out via rl1
Jan 22 18:11:54 ftp kernel: ipfw: 400 Deny TCP 82.xx.xx.66:58594 82.xx.xx.67:57876 in via rl1
Jan 22 18:11:57 ftp kernel: ipfw: 400 Deny TCP 82.xx.xx.66:58594 82.xx.xx.67:57876 in via rl1
Jan 22 18:12:02 ftp kernel: ipfw: 401 Deny TCP 192.168.0.38:1165 65.54.81.107:80 out via rl1
Jan 22 18:12:03 ftp kernel: ipfw: 400 Deny TCP 82.xx.xx.66:58594 82.xx.xx.67:57876 in via rl1
Jan 22 18:12:03 ftp kernel: ipfw: limit 3 reached on entry 400
Jan 22 18:12:50 ftp kernel: ipfw: 401 Deny TCP 192.168.0.38:1165 65.54.81.107:80 out via rl1
Jan 22 18:12:50 ftp kernel: ipfw: limit 3 reached on entry 401

/etc/rc.conf выглядит сейчас так

Код:
#!/bin/sh
############ Начало файла правил IPFW ################
ipfw -q -f flush**#Сброс списка правил
# Префиксы команд для набора правил
cmd="ipfw -q add" # Замена префикса на cmd, только не забывать добавлять знак $
skip="skipto 800" # Переправляем данный правило на правило
pif="rl1"******** # Имя сетевой карты, которая смотрит в Интернет

$cmd 005 allow all from any to any via rl0 # Нет запретов на внутренную сеть

##############################################################
### Нет ограничений на Loopback интерфейсе
##############################################################

$cmd 010 allow all from any to any via lo0

###############################################################
### Проверяем входящий пакет и был ли он транслирован прежде
###############################################################

$cmd 014 divert natd ip from any to any in via $pif

###############################################################
### Позволяем пакету проходить, если предыдущий был добавлен
# в "динамическую" таблицу правил с разрешением состояния keep-sate
###############################################################
$cmd 015 check-state


###############################################################
### Далее ИСХОДЯЩАЯ СЕКЦИЯ. Для внешнего интерфейса
###############################################################

# Разрешаем исходящий доступ к DNS провайдера
$cmd 020 $skip tcp**from any to any 53**out via $pif setup keep-state
$cmd 021 $skip udp**from any to any 53**out via $pif keep-state
$cmd 022 $skip icmp from any to any**** out via $pif keep-state

# Разрешаем исходящие WWW-http на 80 порт
$cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state

# Разрешаем исходящий WWW-https на 443 порт
$cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state

# Разрешаем исходящие запросы для почты
$cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state

# Даем пользователю root неограниченные права, для проведения различных
# работ связанных с обнавление и т.д.
$cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root
$cmd 071 $skip tcp from me to any out via $pif setup keep-state uid vsftpd
# Разрешаем исходящий ping
$cmd 080 $skip icmp from any to any out via $pif keep-state

# Разрешаем исходящий Time
$cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state

# Разрешаем исходящий nntp news
$cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state

# Разрешаем исхощие FTP, Telnen, SHH соединения
$cmd 110 $skip tcp from any to any 21 out via $pif setup keep-state # FTp
$cmd 111 $skip tcp from any to any 22 out via $pif setup keep-state # SHH
$cmd 112 $skip tcp from any to any 23 out via $pif setup keep-state # Telnet

# Разрешаем исходящий whois
$cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state
# Разрешаем прохождение пакетов ntp time server
$cmd 130 $skip udp from any to any 123 out via $pif keep-state

###############################################################
### Далее ВХОДЯЩАЯ СЕКЦИЯ. Для внешнего интерфейса
###############################################################

# Запрещаем весь входящий трафик из зарезервированных адресных пространств
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif
$cmd 301 deny all from 172.16.0.0/12**to any in via $pif
$cmd 302 deny all from 10.0.0.0/8**** to any in via $pif
$cmd 303 deny all from 127.0.0.0/8****to any in via $pif
$cmd 304 deny all from 0.0.0.0/8******to any in via $pif
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif
$cmd 306 deny all from 192.0.0.2/24****to any in via $pif
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif
$cmd 308 deny all from 224.0.0.0/3**** to any in via $pif

# Запрещаем ident
$cmd 315 deny tcp from any to any 113 in via $pif
# Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия
# Netbios это сервис общего доступа MS/Windows
# Блокируем MS/Windows hosts2 name server requests 81
$cmd 320 deny tcp from any to any 137 in via $pif
$cmd 321 deny tcp from any to any 138 in via $pif
$cmd 322 deny tcp from any to any 139 in via $pif
$cmd 323 deny tcp from any to any 81**in via $pif

# Запрещаем пакты прибывшие позже
$cmd 330 deny all from any to any frag in via $pif

# Запрещаем АСК пакеты которые не совпадают с динамической таблицей правил
$cmd 332 deny tcp from any to any established in via $pif

# Разрешаем входящие безопасные FTP, SSH
$cmd 351 allow ip from any to me 21 in via $pif setup keep-state
$cmd 352 allow ip from any to me 22 in via $pif setup keep-state

#Принимаем и логируем все не авторизированные соединения с интернета
$cmd 400 deny log all from any to any in via $pif
$Принимаем и логируем все не авторизированные соединения с интернетом
$cmd 401 deny log all from any to any out via $pif

# Местоположение skipto для исходящих правил состояния
$cmd 800 divert natd ip from any to any out via $pif
$cmd 801 allow ip from any to any

$cmd 999**deny log all from any to any
Как должно выглядить правило для VSFTPd чтобы он работал и через внешнюю NIC? :help:
imas-filter вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 22.01.2008, 15:41   #4
Пользователи
 
Регистрация: 03.11.2005
Сообщений: 1,375
По умолчанию

Цитата:
конф подредактировал но VSFTPD так и не заработал, с NAT'ом все ОТЛИЧНО
когда соединяюсь через внутреннюю сеть на ftp все ОК, через внешнюю фиг,
Примерно такое

Код:
Connect to: (22.01.2008 18:45:22)
hostname=xx.xx.xx.xx:21
username=andreev
startdir=
220 Welcom to Alcatel IS GmbH Kz ftp server
USER XXXXXX
331 Please specify the password.
PASS ***********
230 Login successful.
SYST
215 UNIX Type: L8
FEAT
211-Features:
 EPRT
 EPSV
 MDTM
 PASV
 REST STREAM
 SIZE
 TVFS
211 End
Connect ok!
PWD
257 "/"
Чтение каталога...
TYPE A
200 Switching to ASCII mode.
PASV
227 Entering Passive Mode (82,200,174,67,218,202)
LIST
На последней команде LIST все, дальне никак

ipfw -d list выдает такое:

Код:
## Dynamic rules (27):
00351**23** 1184 (218s) STATE tcp 82.xx.xx.66 60220  82.xx.xx.67 21
00351**30** 1602 (279s) STATE tcp 82.xx.xx.66 60221  82.xx.xx.67 21
00351**40** 2015 (245s) STATE tcp 82.xx.xx.66 60206  82.xx.xx.67 21
00351**45** 2214 (78s) STATE tcp 82.xx.xx.66 58691  82.xx.xx.67 21
00022**48** 2880 (5s) STATE icmp 192.168.0.38 0  194.67.57.126 0/
Как видно содинение в динамической таблице, только не понятно зачем
82.xx.xx.67 - IP FTP сервера
82.xx.xx.66 - Ip хоста с которого пытаюсь зайти
в /var/log/security примерно такие ошибки:

Код:
Jan 22 17:50:27 ftp kernel: ipfw: 401 Deny TCP 82.xx.xx.67:21 82.xx.xx.66:55674 out via rl1
Jan 22 17:50:27 ftp last message repeated 2 times
Jan 22 17:50:27 ftp kernel: ipfw: limit 3 reached on entry 401
Jan 22 18:11:38 ftp kernel: ipfw: 401 Deny TCP 192.168.0.38:1165 65.54.81.107:80 out via rl1
Jan 22 18:11:54 ftp kernel: ipfw: 400 Deny TCP 82.xx.xx.66:58594 82.xx.xx.67:57876 in via rl1
Jan 22 18:11:57 ftp kernel: ipfw: 400 Deny TCP 82.xx.xx.66:58594 82.xx.xx.67:57876 in via rl1
Jan 22 18:12:02 ftp kernel: ipfw: 401 Deny TCP 192.168.0.38:1165 65.54.81.107:80 out via rl1
Jan 22 18:12:03 ftp kernel: ipfw: 400 Deny TCP 82.xx.xx.66:58594 82.xx.xx.67:57876 in via rl1
Jan 22 18:12:03 ftp kernel: ipfw: limit 3 reached on entry 400
Jan 22 18:12:50 ftp kernel: ipfw: 401 Deny TCP 192.168.0.38:1165 65.54.81.107:80 out via rl1
Jan 22 18:12:50 ftp kernel: ipfw: limit 3 reached on entry 401
Как должно выглядить правило для VSFTPd чтобы он работал и через внешнюю NIC? :help:
Такс, из логов мы видим следующие, Ты в фаерволе создаёшь state соединение, если кто-то обращается к 21 порту, но для работы пасивного работа нужно, чтобы были разрешены порты из диапазона >=5000, как и видно из лога, он заблокировал именно на 400 и 401 правиле соединения, на 5000>= порты, потому, что они не подпадают под правило для FTP, соотвественно нужно зделать правило в котором разрешить доступ к портам 5000>=, диапазон для сервера можно задать в конфиге, соотвественно разрешить и соотвествующий диапазон только...
Z][ANSWER вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 23.01.2008, 06:45   #5
Пользователи
 
Регистрация: 07.05.2007
Сообщений: 54
По умолчанию

Цитата:
[ANSWER' date='22.1.2008, 22:41' post='78373']
Такс, из логов мы видим следующие, Ты в фаерволе создаёшь state соединение, если кто-то обращается к 21 порту, но для работы пасивного работа нужно, чтобы были разрешены порты из диапазона >=5000, как и видно из лога, он заблокировал именно на 400 и 401 правиле соединения, на 5000>= порты, потому, что они не подпадают под правило для FTP, соотвественно нужно зделать правило в котором разрешить доступ к портам 5000>=, диапазон для сервера можно задать в конфиге, соотвественно разрешить и соотвествующий диапазон только...
этот дипазон лушче в правилах для IPFW задать или его можно как-то прописать в /etc/rc/conf?
imas-filter вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 23.01.2008, 08:49   #6
Пользователи
 
Регистрация: 07.05.2007
Сообщений: 54
По умолчанию

Разобрался :clap:
Как полезно иногда повторить старое!
Забыл что в vsftpd.conf есть такое:
pasv_max_port и pasv_min_port
их и открыл... :clap:
Все заработало.
Спасибо за поддержку
imas-filter вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 19.05.2008, 03:12   #7
Пользователи
 
Регистрация: 07.05.2007
Сообщений: 54
По умолчанию

Появился еще один вопрос. если на ходу переназначить IP адрес на каточку смотрящую в инет, то перестает работать NAT. IPWF restart не помогает. Подскажите плиз :help:
imas-filter вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 19.05.2008, 08:35   #8
Пользователи
 
Регистрация: 03.11.2005
Сообщений: 1,375
По умолчанию

Цитата:
Появился еще один вопрос. если на ходу переназначить IP адрес на каточку смотрящую в инет, то перестает работать NAT. IPWF restart не помогает. Подскажите плиз :help:
МяФ! а правила Ты при этом меняешь согласно изменившемуся IP, да и NATD нужно перегружать, а не IPFW, NAT до FreeBSD 7.0 был userspace-овый, через NATD, в FreeBSD 7.0 можно использовать ядерный, но в Твоём случае нужно перезапускать не только IPFW, но и NATD...
Z][ANSWER вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 19.05.2008, 10:05   #9
Пользователи
 
Регистрация: 07.05.2007
Сообщений: 54
По умолчанию

Цитата:
[ANSWER' date='19.5.2008, 14:35' post='80213']
МяФ! а правила Ты при этом меняешь согласно изменившемуся IP, да и NATD нужно перегружать, а не IPFW, NAT до FreeBSD 7.0 был userspace-овый, через NATD, в FreeBSD 7.0 можно использовать ядерный, но в Твоём случае нужно перезапускать не только IPFW, но и NATD...
Да про 7.0 читал, но у меня пока 6,2 стоит.
Код:
/etc/rc.d/natd restart
результата ноль

Но вроде /etc/rc.d/ipfw restart - перезапускает natd тоже ?

и при попытки хотя бы пингануть получаю такое:

Код:
ping: cannot resolve mail.ru: Host name lookup failure
imas-filter вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 19.05.2008, 11:55   #10
Пользователи
 
Регистрация: 03.11.2005
Сообщений: 1,375
По умолчанию

Цитата:
Да про 7.0 читал, но у меня пока 6,2 стоит.
Код:
/etc/rc.d/natd restart
результата ноль

Но вроде /etc/rc.d/ipfw restart - перезапускает natd тоже ?

и при попытки хотя бы пингануть получаю такое:

Код:
ping: cannot resolve mail.ru: Host name lookup failure
Хм... странно, я чесно говоря не работал с NATD, точнее перенёс NAT просто на PF, не разбираясь с первым, поэтому даже незнаю, может баг какой?? :unsure:
Z][ANSWER вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 21:34. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2