Задача - разрешить из локалки доступ к любым 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 не представляю (из описания протокола) может я что-то упустил, или имеет смысл реализовать систему как-то по другому? Поделитесь опытом, кто сталкивался с проблемой, пож. Заранее благодарен!
>[оверквотинг удален]
>где $int_if - сетевуха смотрит в локалку, $network -локалка типа 192.168.1.0/24,
>$ext_if0 = tun0 - инет,
>
>как я понимаю это не есть гуд, потому что для локалки разрешается
>хождение на все "верхние" порты, т.е. использование сторонних прокси-серверов, лишних сервисов
>и т.п.
>Как по другому настроить pf для ftp - yt не представляю (из
>описания протокола) может я что-то упустил, или имеет смысл реализовать систему
>как-то по другому? Поделитесь опытом, кто сталкивался с проблемой, пож. Заранее
>благодарен!разрешите только на 20 и 21 порты
>разрешите только на 20 и 21 портыне, так работать не будет - оно завязівается, но на стопается "Команда PORT не выполнена"
Как я понимаю, в пассивном режиме соединение для передачи данных выставляется по верхним портам
>Задача - разрешить из локалки доступ к любым 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 на самом шлюзе
>на 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 протокола, а не tcp/ip. Для iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять разрешающие правила на лету. Может и для pf есть подобное.
>Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного
>порта передается в данных самого ftp протокола, а не tcp/ip. Для
>iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять
>разрешающие правила на лету. Может и для pf есть подобное.в pf такого помоему нет.
http://dreamcatcher.ru/index.php?option=com_content&task=vie...
>>Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного
>>порта передается в данных самого ftp протокола, а не tcp/ip. Для
>>iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять
>>разрешающие правила на лету. Может и для pf есть подобное.
>
>в pf такого помоему нет.
>
>http://dreamcatcher.ru/index.php?option=com_content&task=vie...ftp-proxy настраиваем для пассивного FTP
>>>Без анализа данных такое нереализуемо, так как в обоих случаях номер дополнительного
>>>порта передается в данных самого ftp протокола, а не tcp/ip. Для
>>>iptables есть(или были) модули для анализа ftp соединений, которые позволяли добавлять
>>>разрешающие правила на лету. Может и для pf есть подобное.
>>
>>в pf такого помоему нет.
>>
>>http://dreamcatcher.ru/index.php?option=com_content&task=vie...
>
>ftp-proxy настраиваем для пассивного FTPhttp://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...
>>ftp-proxy настраиваем для пассивного FTP
>
>http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...Спасибо, попробую сделать. Мне кажется это лучший вариант из всего того, что я видел
Удалось ли Вам решить проблему?
Столкнулся с аналогичной. Подскажите как Вы решили ее?
Блока ниже мне не хватило.>[оверквотинг удален]
>в 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 сам будет создавать правила для входящих.Спасибо