понедельник, 19 октября 2009 г.

Пакетный фильтр pf на клиенте ftp активного и пассивного режимов

Коротко о режимах.
Активный режим:
1)клиент инициирует соединение со своего произвольного непривилигированного Х-го порта на 21-м порту сервера;
2)сервер инициирует соединение со своего 20-го порта на (Х+1)-м порту клиента;
Пассивный режим:
1)клиент инициирует соединение со своего произвольного непривилигированного Х-го порта на 21-м порту сервера;
2)клиент инициирует соединение со своего произвольного непривилигированного (Х+1)-го порта на непривилигированном Y-м порту сервера;
Разрешающие правила

Активный режим.
Пользуемся ftp-proxy.
#grep ftp-proxy /etc/services
ftp-proxy 8021/tcp # FTP proxy
#grep proxy /etc/group
proxy:*:62:
#which ftp-proxy
/usr/sbin/ftp-proxy
Добавим в файл /etc/inetd.conf такую строку:
ftp-proxy stream tcp nowait root /usr/sbin/ftp-proxy ftp-proxy -u proxy -m 55000 -M 57000 -t 180
Добавляем правила пакетного фильтра на клиенте, которые разрешают вышеописанные соединения:
rdr on $INT proto tcp from 192.168.0.1/24 to any port 21 -> 127.0.0.1 port 8021
Это нужно в случае если данная машина - шлюз локальной сети.
$INT означает внутренний интерфейс, $EXT - внешний.
pass in on $EXT inet proto tcp from any port 20 to $EXT port 55000 >< 57000 user proxy flags S/SA
pass out on $EXT inet proto tcp from $EXT to any port 20 flags S/AUPRFS modulate state


Пассивный режим.
nat on $EXT from 127.0.0.1/32 to any -> $EXT
pass out on $EXT inet proto tcp from $EXT to any port 21 flags S/AUPRFS modulate state
pass out on $EXT inet proto tcp from $EXT to any port > 1024 flags S/AUPRFS modulate state

Если клиент - шлюз, то вместо 127.0.0.1/32 пишем адреса внутренней сети.

По материалам этого источника.

Комментариев нет: