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

Исходное сообщение
"Пассивный FTP, pf,  поделитесь опытом "

Отправлено Serge , 24-Ноя-08 15:53 
Задача - разрешить из локалки доступ к любым ftp серверам через freebsd сервер с pf.
как я понимаю, активный ftp отпадает сразу - на файрволле не сильно хочу открывать разрешения входящих соединений.

Остановился на пассивном ftp, все работает только при добавлении в pf двух правил:
pass quick on $int_if proto tcp from $network port >=1024 to any port { 20, 21, >=1024 } keep state (max-src-conn 100, max-src-conn-rate 15/5)

pass out quick on $ext_if0 proto tcp from ($ext_if0) port >1024 to any port >1024 keep state
где $int_if - сетевуха смотрит в локалку, $network -локалка типа 192.168.1.0/24,  $ext_if0 = tun0 - инет,

как я понимаю это не есть гуд, потому что для локалки разрешается хождение на все "верхние" порты, т.е. использование сторонних прокси-серверов, лишних сервисов и т.п.
Как по другому настроить pf для ftp - yt не представляю (из описания протокола) может я что-то упустил, или имеет смысл реализовать систему как-то по другому? Поделитесь опытом, кто сталкивался с проблемой, пож. Заранее благодарен!


Содержание

Сообщения в этом обсуждении
"Пассивный FTP, pf,  поделитесь опытом "
Отправлено reader , 24-Ноя-08 16:29 
>[оверквотинг удален]
>где $int_if - сетевуха смотрит в локалку, $network -локалка типа 192.168.1.0/24,  
>$ext_if0 = tun0 - инет,
>
>как я понимаю это не есть гуд, потому что для локалки разрешается
>хождение на все "верхние" порты, т.е. использование сторонних прокси-серверов, лишних сервисов
>и т.п.
>Как по другому настроить pf для ftp - yt не представляю (из
>описания протокола) может я что-то упустил, или имеет смысл реализовать систему
>как-то по другому? Поделитесь опытом, кто сталкивался с проблемой, пож. Заранее
>благодарен!

разрешите только на 20 и 21 порты


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено Serge , 24-Ноя-08 16:43 

>разрешите только на 20 и 21 порты

не, так работать не будет - оно завязівается, но на стопается "Команда PORT не выполнена"
Как я понимаю, в пассивном режиме соединение для передачи данных выставляется по верхним портам


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено BulgakowI , 24-Ноя-08 17:18 
>Задача - разрешить из локалки доступ к любым ftp серверам через freebsd
>сервер с pf.
>как я понимаю, активный ftp отпадает сразу - на файрволле не сильно
>хочу открывать разрешения входящих соединений.
>

на 7.0+ есть ftp-proxy
в rc.conf
ftpproxy_enable="YES"
ftpproxy_flags="-v -D 7"

в pf.conf
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from <ftpuser> to !(self) port ftp -> 127.0.0.1 port 8021
anchor "ftp-proxy/*"

ftp-proxy сам будет создавать правила для входящих.

для 6.0+ чуть больше правил,
в pf.conf
rdr on $int_if proto tcp from <ftpuser> to !(self) port ftp -> 127.0.0.1 port 8021
pass in quick on $ext_if inet proto tcp from port ftp-data to $ext_if user proxy flags S/SA keep state
и в inetd.conf
ftp-proxy       stream  tcp     nowait  root    /usr/libexec/ftp-proxy  ftp-proxy
и в в rc.conf
inetd_enable="YES"

<ftpuser> - список IP кому разрешено ходить по ftp
в обоих случаях !(self) - на случай ftp на самом шлюзе


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено sergetv , 01-Дек-08 11:01 
>на 7.0+ есть ftp-proxy
>в rc.conf
>ftpproxy_enable="YES"
>ftpproxy_flags="-v -D 7"
>http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...

Спасибо, попробую сделать. Мне кажется это лучший вариант из всего того, что я видел.



"Пассивный FTP, pf,  поделитесь опытом "
Отправлено angra , 24-Ноя-08 17:37 
Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного порта передается в данных самого ftp протокола, а не tcp/ip. Для iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять разрешающие правила на лету. Может и для pf есть подобное.

"Пассивный FTP, pf,  поделитесь опытом "
Отправлено reader , 25-Ноя-08 10:50 
>Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного
>порта передается в данных самого ftp протокола, а не tcp/ip. Для
>iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять
>разрешающие правила на лету. Может и для pf есть подобное.

в pf такого помоему нет.

http://dreamcatcher.ru/index.php?option=com_content&task=vie...


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено alfss , 27-Ноя-08 01:50 
>>Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного
>>порта передается в данных самого ftp протокола, а не tcp/ip. Для
>>iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять
>>разрешающие правила на лету. Может и для pf есть подобное.
>
>в pf такого помоему нет.
>
>http://dreamcatcher.ru/index.php?option=com_content&task=vie...

ftp-proxy настраиваем для пассивного FTP


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено reader , 27-Ноя-08 22:17 
>>>Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного
>>>порта передается в данных самого ftp протокола, а не tcp/ip. Для
>>>iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять
>>>разрешающие правила на лету. Может и для pf есть подобное.
>>
>>в pf такого помоему нет.
>>
>>http://dreamcatcher.ru/index.php?option=com_content&task=vie...
>
>ftp-proxy настраиваем для пассивного FTP

http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено sergetv , 01-Дек-08 10:41 
>>ftp-proxy настраиваем для пассивного FTP
>
>http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...

Спасибо, попробую сделать. Мне кажется это лучший вариант из всего того, что я видел


"Пассивный FTP, pf,  поделитесь опытом "
Отправлено Zedik , 06-Окт-09 09:35 
Удалось ли Вам решить проблему?
Столкнулся с аналогичной. Подскажите как Вы решили ее?
Блока ниже мне не хватило.

>[оверквотинг удален]
>в rc.conf
>ftpproxy_enable="YES"
>ftpproxy_flags="-v -D 7"
>
>в pf.conf
>rdr-anchor "ftp-proxy/*"
>rdr on $int_if proto tcp from <ftpuser> to !(self) port ftp -> 127.0.0.1 port 8021
>anchor "ftp-proxy/*"
>
>ftp-proxy сам будет создавать правила для входящих.

Спасибо