URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 83350
[ Назад ]

Исходное сообщение
"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"

Отправлено Alex123 , 15-Дек-08 05:14 
Я туплю :((, хотя странно:
есть внутренняя сетка на 5 компов с ипами диапазона {intnet}
есть роутер с фрёй 7, натом и ипфв
есть интерфейс роутера, смотрящи во внутреннюю сеть {intif}
есть интерфейс роутера, смотрящи во внешнюю сеть {outif}
есть ip адресс внешнего интерфейса роутера {routerip}

Есть проблема: фтп клиенты из внутренней сети не могут подключится к серверам во внешней сети, не только по активному, но и по пассивному протоколу :((
причём интернет по http работает без проблем, хотя правила применяются почти одни и теже
подключения происходят с внутренних компов порты 6000-7000 на сервера порты 21 того же диапазона что и {routerip} в пределах маски 255.0.0.0.

ниже привожу правила фаерволла и лог фтп клиента

[log=filezilla]
Статус:    Соединяюсь с {server_ip}:21...
Статус:    Соединение установлено, ожидание приглашения...
Ответ:    220 Gene6 FTP Server v3.9.0 (Build 2) ready...
Команда:    USER anonymous
Ответ:    331 Password required for anonymous.
Команда:    PASS **************
Ответ:    230 User anonymous logged in.
Команда:    SYST
Ответ:    215 UNIX Type: L8
Команда:    FEAT
Ответ:    211-Extensions supported:
Ответ:     AUTH TLS
Ответ:     CCC
Ответ:     CLNT
Ответ:     CPSV
Ответ:     EPRT
Ответ:     EPSV
Ответ:     MDTM
Ответ:     MFCT
Ответ:     MFMT
Ответ:     MLST type*;size*;create;modify*;
Ответ:     PASV
Ответ:     PBSZ
Ответ:     PROT
Ответ:     REST STREAM
Ответ:     SIZE
Ответ:     SSCN
Ответ:     TVFS
Ответ:     UTF8
Ответ:     XCRC "filename" SP EP
Ответ:     XMD5 "filename" SP EP
Ответ:     XSHA1 "filename" SP EP
Ответ:    211 End.
Команда:    CLNT FileZilla
Ответ:    200 Noted.
Команда:    OPTS UTF8 ON
Ответ:    200 UTF8 OPTS ON
Статус:    Соединение установлено
Статус:    Получение списка каталогов...
Команда:    PWD
Ответ:    257 "/" is current directory.
Команда:    TYPE I
Ответ:    200 Type set to I.
Команда:    PASV
Ответ:    227 Entering Passive Mode ({server_ip},80,183)
Команда:    LIST
Ошибка:    Превышено время ожидания соединения
Ошибка:    Не могу получить список каталогов!
[/log]

правила ipfw:
[rules=ipfw]
#from intnet to NAT
add 50 skipto 72 tcp from {intnet} to not {intnet} 20,21,80,8080,443,53 out via {outif}
add 51 skipto 72 udp from {intnet} to not {intnet} 20,21,53 out via {outif}
#from Global to NAT
add 52 skipto 72 tcp from not {intnet} 20,21,80,8080,443,53 to {routerip} in via {outif}
add 53 skipto 72 udp from not {intnet} 20,21,53 to {routerip} in via {outif}
add 60 check-state
#NAT
nat 72 config ip {routerip} deny_in reset same_ports
add 70 deny all from any to any via {outif}
add 73 nat 72 ip from any to any via {outif}
#from intnet to Global via intinterface
add 80 allow tcp from {intnet} to not {intnet} 20,21,80,8080,443,53,1723 keep-state via {intif}
add 81 allow udp from {intnet} to not {intnet} 20,21,53 keep-state via {intif}
#from intnet to Globalt via out interface
add 82 allow tcp from {routerip} to not {intnet} 20,21,80,8080,443,53,1723 out via {outif}
add 83 allow udp from {routerip} to not {intnet} 20,21,53 out via {outif}
#from NAT to intnet via outinterface
add 84 allow tcp from not {intnet} 20,21,80,8080,443,53,1723 to {intnet} in via {outif}
add 85 allow udp from not {intnet} 20,21,53 to {intnet} in via {outif}
#Deny all
add 1000 deny all from any to any
[/rules]


Содержание

Сообщения в этом обсуждении
"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Pahanivo , 15-Дек-08 08:01 
>Я туплю :((, хотя странно:
>есть внутренняя сетка на 5 компов с ипами диапазона {intnet}
>есть роутер с фрёй 7, натом и ипфв
>есть интерфейс роутера, смотрящи во внутреннюю сеть {intif}
>есть интерфейс роутера, смотрящи во внешнюю сеть {outif}
>есть ip адресс внешнего интерфейса роутера {routerip}
>
>Есть проблема: фтп клиенты из внутренней сети не могут подключится к серверам
>во внешней сети, не только по активному, но и по пассивному
>протоколу :((

странная формулировка - вот если бы ты спросил не только по пассивному, но и поактивному ...
по поводу пассива - кури маны по настройке шлюза, в поиске дофега
по поводу активного - тудаже
>[оверквотинг удален]
>add 83 allow udp from {routerip} to not {intnet} 20,21,53 out via
>{outif}
>#from NAT to intnet via outinterface
>add 84 allow tcp from not {intnet} 20,21,80,8080,443,53,1723 to {intnet} in via
>{outif}
>add 85 allow udp from not {intnet} 20,21,53 to {intnet} in via
>{outif}
>#Deny all
>add 1000 deny all from any to any
>[/rules]

как уже подзае.. надоело смотреть кучи чужих правил, написанных непонятно зачем и вываленных тут. НЕ МОЖЕТЕ САМОСТОЯТЕЛЬНО НАСТРОИТЬ ФАРЕВОЛ? ВОЗМИТЕ ТИПОВЫЕ ПРАВИЛА ТИПА
ALLOW ALL FROM ANY TO ANY, И ПОСТЕПЕННО УСЛОЖНЯЙТЕ ИХ, ДОВОДЯ ДО НУЖНОГО ВАМ СОСТОЯНИЯ, А НЕ БЕРИТЕСЬ СРАЗУ ЗА СЛОЖНЫЕ НЕПОНЯТНЫЕ ВАМ ВЫРАЖЕНИЯ.


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 15-Дек-08 15:43 
>странная формулировка - вот если бы ты спросил не только по пассивному,
>но и поактивному ...
>по поводу пассива - кури маны по настройке шлюза, в поиске дофега
>

ОК попробую, но что-то не находил, может только на английском???
>
>как уже подзае.. надоело смотреть кучи чужих правил, написанных непонятно зачем и
>вываленных тут. НЕ МОЖЕТЕ САМОСТОЯТЕЛЬНО НАСТРОИТЬ ФАРЕВОЛ? ВОЗМИТЕ ТИПОВЫЕ ПРАВИЛА ТИПА
>
>ALLOW ALL FROM ANY TO ANY, И ПОСТЕПЕННО УСЛОЖНЯЙТЕ ИХ, ДОВОДЯ ДО
>НУЖНОГО ВАМ СОСТОЯНИЯ, А НЕ БЕРИТЕСЬ СРАЗУ ЗА СЛОЖНЫЕ НЕПОНЯТНЫЕ ВАМ
>ВЫРАЖЕНИЯ.

Ну я там не писал ничего не понятного -- правила составлял собственноручно, по этому не такие красивые, и, может, можно было проще, зато читаются очвидно.

Суть проста через intif разрешить по динамике коннект к опр. портам во вне
Через outif -- задать тоже, но в статике, с указанием направлений, указания разрешонных портов клиентских пока не указал, но среди не приведённых правил было блокирование портов с 1-1023 на клиентских машинах; правила составлял изходя из описаний протоколов http, ftp и dns, с первым и последним проблем не возникло; проблема именно в ftp, подозреваю что до конца с ним не разобрался, почему не работает активный режим я понимаю (в нате стоит запрет на вход), а вот почему пассивный -- нет.


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Pahanivo , 15-Дек-08 15:55 
>[оверквотинг удален]
>Суть проста через intif разрешить по динамике коннект к опр. портам во
>вне
>Через outif -- задать тоже, но в статике, с указанием направлений, указания
>разрешонных портов клиентских пока не указал, но среди не приведённых правил
>было блокирование портов с 1-1023 на клиентских машинах; правила составлял изходя
>из описаний протоколов http, ftp и dns, с первым и последним
>проблем не возникло; проблема именно в ftp, подозреваю что до конца
>с ним не разобрался, почему не работает активный режим я понимаю
>(в нате стоит запрет на вход), а вот почему пассивный --
>нет.

1) разберись что такое FTP, автивный, пассивный режимы, пойми как как все ходит, и ты поймешь, где крутить. В частности работа пассивного режима ничем не отличается от работы браузера по http с точки зрения файервола. Делай выводы.
2) вот потом уже можно заняться активынм FTP. Например обратить особое внимание на оптию natd - punch_fw.


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 15-Дек-08 16:45 

>
>1) разберись что такое FTP, автивный, пассивный режимы, пойми как как все
>ходит, и ты поймешь, где крутить. В частности работа пассивного режима
>ничем не отличается от работы браузера по http с точки зрения
>файервола. Делай выводы.

Во, нашёл -- всётаки отличается от ftp!! Спасибо!!, разобрался почему пассивный не работает: на стороне сервера используется не 20 порт для передаи данных, а динамиеский :((, а я ставил запрет на коннект клиента к динам. портам.  
http://www.sys-adm.org.ua/system/ftp-nat.php#c2

>2) вот потом уже можно заняться активынм FTP. Например обратить особое внимание
>на оптию natd - punch_fw.

Поему не работает активный режим тоже понятно: в нате стоит deny_in, и на intif стоят динам. правила(не уверен, но они тоже могут блочить).

Хотя у меня не natd, а ipfw kernel nat, но думаю, что punch_fw там тоже присутствует -- пошёл курить ман...

Ещё раз СПАСИБО!!!  


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 15-Дек-08 17:07 
А не кто не подскажит, есть ли модули аналогичные ip_nat_ftp и ip_conntrack_ftpip_nat_ftp, но для ipfw + kernel nat; я, конечно, привык всё делать ручками, но изобретать велосиед желания нет...

"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Pahanivo , 16-Дек-08 07:50 
>Во, нашёл -- всётаки отличается от ftp!! Спасибо!!, разобрался почему пассивный не
>работает: на стороне сервера используется не 20 порт для передаи данных,
>а динамиеский :((, а я ставил запрет на коннект клиента к
>динам. портам.

ну если учитывать по номерам портов - естественно отличается )
если нет - то все три щняги - http и оба конекта ПАССИВНОГО ftp идут по tcp изнутри.
Вообще если нt стоит задача настроить пароноидальный фаревол - такие ограничения по портам делать не следует на исходящие конекты, это потенциальные грабли. Единственное что лучше всегда делать , дак это рубить все конекты исходящие на smtp (кроме собственных релеев) чтобы защитится от попадания в блек листы rbl.


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Mr_Dee , 16-Дек-08 15:59 
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 16-Дек-08 16:29 
>/sbin/modprobe ip_conntrack_ftp
>/sbin/modprobe ip_nat_ftp

Этож модули ipnat, а не natd/kernel NAT? (тот что в седьмой под ipfw работает)?? или я не прав??


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Mr_Dee , 16-Дек-08 16:45 
>>/sbin/modprobe ip_conntrack_ftp
>>/sbin/modprobe ip_nat_ftp
>
>Этож модули ipnat, а не natd/kernel NAT? (тот что в седьмой под
>ipfw работает)?? или я не прав??

я понял , не сразу дочитал .
у меня есть вариант для pf
:
ipreal=
iplocal=10.35.0.0/16

map em0 $iplocal -> $ipreal portmap tcp/udp 40000:50000
map em0 $iplocal -> $ipreal proxy port ftp ftp/tcp
map em0 $iplocal -> $ipreal

после чего :
/sbin/ipnat -CF -f /my_nat_rules

пс , а те модули что я выше написал актуальны толкьо для Линукса.


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 16-Дек-08 16:32 
>Вообще если нt стоит задача настроить пароноидальный фаревол

Как раз на оборот -- именно такая задача и стоит -- в сети же компы с виндой :(

А куды глядеть, чтоб активный режим настроить?


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Pahanivo , 17-Дек-08 11:34 
>>Вообще если нt стоит задача настроить пароноидальный фаревол
>
>Как раз на оборот -- именно такая задача и стоит -- в
>сети же компы с виндой :(

если ты поставил шлюз, те физически разделил сети - о внешних угрозаз можно забыть, ибо забратся венутрь практически нереально, если ты конечно не используешь пароли типа 123 и не закрыл ssh из вне. Параноидальность как раз заключается в фильтрации также всего исходящего - задай себе вопрос - ОНО ТЕБЕ НАДО? каждый раз донастравать шлюз под новые требования? если требуется разграничить интернет для пользователей - это одно, если просто защитить сеть - это уже совершенно другое.
>А куды глядеть, чтоб активный режим настроить?

у тебя же не natd?


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 17-Дек-08 16:07 
>если просто защитить сеть - это уже совершенно другое.

Ну в винде есть такое понятие как вирусы -- защита от них фаерволом -- не лучьшее решение, но тем не менее процентов 20-30 таким образом можно убрать.

>>А куды глядеть, чтоб активный режим настроить?
>
>у тебя же не natd?

Вроде, если я правильно разобрался, kenel nat -- потомок natd, просто с изменённым синтаксисом, и встроенный в ядро.


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Pahanivo , 17-Дек-08 16:20 
>>если просто защитить сеть - это уже совершенно другое.
>
>Ну в винде есть такое понятие как вирусы -- защита от них
>фаерволом -- не лучьшее решение, но тем не менее процентов 20-30
>таким образом можно убрать.

Фереволом можно в лучшем случае их обнаружить, например спамботов.

>>>А куды глядеть, чтоб активный режим настроить?
>>
>>у тебя же не natd?
>
>Вроде, если я правильно разобрался, kenel nat -- потомок natd, просто с
>изменённым синтаксисом, и встроенный в ядро.

с кернел нат я не копался - попробуй для начала разрешить все на вход выход
возможно при полность открытом фареволе актив и так заработает


"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено v0id , 02-Июл-09 09:19 
столько оффтопа, а по делу так никто ничего и не сказал.

"Пассивный FTP через роутер с ipfw kernel nat freebsd 7"
Отправлено Alex123 , 17-Мрт-10 23:02 
>столько оффтопа, а по делу так никто ничего и не сказал.

Давно забил на это дело, но недавно подвернулось, может кому поможет:

[q]
после запуска модуля alias_ftp.ko (или вручную через kldload alias_ftp.ko или через /boot/loader.conf alias_ftp_load="YES") поведение ipfw nat изменяется к лучшему - он начнет пропускать через себя активные FTP сессии инициализированные от клиентов находящихся за ним. Модуль alias_ftp отслеживат FTP трафик проходящий через нат и динамически изменяет внутреннюю таблицу ната для установления соответствия номеров портов используемых в сессии.
[/q]

Если кто знает, как заставить ipfw создавать динамические правила вытаскивая из фтп командных сессий номера дата портов, напишите -- буду благодарен и вновь вернусь к данному вопросу....