Страница 1 из 1

FTP nat PF Нужна помощь

Добавлено: 2009-05-06 8:23:13
andrei82x
Здравствуйте все.

Очень нужна помощь.

Ребята помогите пжл настройть пакетный фильтр.
ситуация такая: шлюз на ос FreeBSD 7.1 и ftp сервер в DMZ
нужно сделать доступ из локалки к фтп.

ext_if="vic2" # ext
int_if="vic0" # lan
dmz="vic1"
#lan="192.168.140.0/24"
ftp_server="192.168.198.133"

set skip on lo0
scrub in

nat on $ext_if from !($ext_if) -> ($ext_if:0)
nat on $dmz from 192.168.140.0/24 to 192.168.198.133 port 21 -> ($dmz)
nat on $dmz from 192.168.140.0/24 to 192.168.198.133 port 20 -> ($dmz)
nat on $dmz from 192.168.140.0/24 to 192.168.198.133 port 22 -> ($dmz)
nat on $dmz from 192.168.140.0/24 to 192.168.198.133 port 80 -> ($dmz)
nat on $dmz from 192.168.140.0/24 to 192.168.198.133 port 53 -> ($dmz)
nat on $dmz from 192.168.140.0/24 to 192.168.198.133 port 49151:65535 -> ($dmz) port 49152:65535


block in log all
block out log all

pass quick on $dmz proto icmp all
pass quick on $dmz proto tcp from any to any port { 80, 22, 53, 49152:65535, 20, 21 > 49151 } flags S/SA keep state
pass quick on $dmz proto udp from any to any port { 137, 138, 53, 20, 21, 53 } keep state

pass quick on $int_if proto icmp all
pass quick on $int_if proto tcp from any to any port { 80, 22, 53, 49152:65535, 20, 21 > 49151 } flags S/SA keep state
pass quick on $int_if proto udp from any to any port { 137, 138, 20, 21, 53 } keep state




Доступ с локалки к фтп (в DMZ) получается только с помощью пассивного режима, а мне очень нужно чтобы при использовании активного режима у меня не появлялась ошибка
(пытаюсь зайти через FAR)
500 Illegal PORT range rejected
:unknown:

Re: FTP nat PF Нужна помощь

Добавлено: 2009-05-06 8:28:34
princeps
А ftp-сервер у тебя какой? Может на нем диапазон портов для активного режима настроить?

Re: FTP nat PF Нужна помощь

Добавлено: 2009-05-06 8:44:33
andrei82x
Re: FTP nat PF Нужна помощь

princeps » 2009-05-06 9:28:34
А ftp-сервер у тебя какой? Может на нем диапазон портов для активного режима настроить?
Ftp сервер у меня также на FreeBSD ftp стандартный. Я отключал фаервол на стороне фтп, все равно не шло.

princeps подскажи пжл в какую сторону копать.??

Re: FTP nat PF Нужна помощь

Добавлено: 2009-05-06 8:59:13
D_CPU350
man ftp-proxy

P.S. еще можно задать шлюзу еще один IP и сделать

Код: Выделить всё

DMZ_INT_IP="192.168.140.99" #Еще один IP адрес который нужно повесить шлюзу
binat on $int_if from $ftp_server to any -> $DMZ_INT_IP
У меня именно так и работает. не стал возится с ftp-proxy
Проблема в том, что в активном режиме: "В ответ, сервер соединяется с указанным портом данных клиента из своего локального порта данных 20." а этот указанный порт сами знаете откуда берется :st:
Изображение

Re: FTP nat PF Нужна помощь

Добавлено: 2009-05-06 10:45:04
princeps
мне кажется, стоит поставить какой-нибудь другой ftp-сервер, в котором возможностей конфигурирования побольше, в ftpd, кажется, нельзя указывать диапазон портов, хотя я могу ошибаться. На форуме как-то поднималась тема выбора ftp-сервера.

Re: FTP nat PF Нужна помощь

Добавлено: 2009-05-06 14:33:27
andrei82x
D_CPU350

Спасибо
сейчас попробую

:sorry:

Re: FTP nat PF Нужна помощь

Добавлено: 2009-05-07 7:30:16
andrei82x
Большое спасибо D_CPU350

Получилось решить эту проблему через ftp-proxy
сейчас хочу сделать все это на binat
почему? не знаю не могу объяснить, наверное руки чешутся.
D_CPU350 был прав возьни много от прокси.


Решение данной задачи нашел в инете.
Некий osipen сделал нижеуказанное.

Код: Выделить всё

На самом деле тут просто были грабли, с запуском ftp-proxy. 

Начнем с начала! 
Ставим ftp-proxy ( в дефолтной фре его нет ) Код:

# cd /usr/ports/ftp/ftp-proxy 
# make install 


Далее важный момент где я споткнулся. 
Запускать надо не через Inetd почему не понятно. 
В rc.conf добавляем: Код:

# ee /etc/rc.conf 
# Разрешаем запуск ftp-proxy 
ftpproxy_enable="YES" 
# Проксируем на ftp в моем случае это 192.168.0.250, ключ –R обязателен служит для перенаправления. 
ftpproxy_flags="-R 192.168.0.250" 


ну далее: 

В pf.conf ничего сильно не изменилось, но все равно посмотрите. Код:

# ee /etc/pf.conf 

prov_if="rl0" # Внешняя сетевуха 
int_if="fxp0" # Внутренняя сетевуха 
ftp_server="192.168.0.250" # фтп сервер 
internal_net="{192.168.0.0/24}" # локальная сеть 
scrub in all 

nat on $prov_if from $internal_net to any -> $prov_if 

# Вот правила для проксиравания, но тут так заморочка мозги поразмять? вол линк кому интересно почитайте 
# http://house.hcn-strela.ru/BSDCert/BS...-ftp-modes­
nat-anchor "ftp-proxy/*" 
rdr-anchor "ftp-proxy/*" 
rdr pass on $prov_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021 

# Если не хотите использовать ftp-proxy просто расскоментируйте и уберите выше стоящие правила, только не жалуйтесь потом что 
# ftp работает как то криво и медленно 
# rdr on $prov_if proto tcp from any to any port ftp-data -> $ftp_server port 21 
# rdr on $prov_if proto tcp from any to any port 21 -> $ftp_server port 21 
# rdr on $prov_if proto tcp from any to any port 49152:65535 -> $ftp_server port 49152:65535 

pass in all 
pass out all 

anchor "ftp-proxy/*" 



В итоге действительно по сравнению с nat скорость даже визуально возврасла.
[/code]


Ребята реально все работает. :Yahoo!:
Все спасибо.
Тема закрыта.