Iptables и пассивный режим FTP.

Небольшая заметка о том, как настроить iptables на сервере так, чтобы разрешить подключаться к нему в пассивном режиме FTP. На эту тему в интернете написано немало статей, но описанный вариант, с моей точки зрения, является наиболее правильным и оптимальным.

Для начала необходимо настроить  сервер FTP. Будем настраивать сервер на использование фиксированного диапазона верхних портов, например 49152—65535. Эти порты согласно спецификации IANA являются динамическими или частными. Конфигурация каждого конкретного FTP сервера будет выглядеть по своему.

Для vsftpd, например необходимо отредактировать файл /etc/vsftpd/vsftpd.conf (в зависимости от операционной системы путь может отличаться) и внести (или изменить) следующие строки:

 

pasv_min_port=49152
pasv_max_port=65534

 

 

Для proftpd в файле /etc/proftpd.conf (путь, опять таки, может отличаться в зависимости от операционной системы или от способа установки) в секции Global нужно внести следующие изменения:

<Global>
......
PassivePorts 49152 65534
</Global>

 

И аналогично для всех остальных FTP серверов.

После внесения изменений, соответственно, сервер нужно перезапустить.

 

Теперь необходимо загрузить модуль ip_conntrack_ftp для iptables. В RedHat/CentOS достаточно в файл /etc/sysconfig/iptables-config добавить ссылку на загрузку модуля ip_conntrack_ftp:

 

IPTABLES_MODULES="ip_conntrack_ftp"

 

 

и отредактировать /etc/sysconfig/iptables, добавив в него строку, разрешающую входящие соединения на порт 21. Пример конфига Iptables, добавленная строка — номер 8.

 

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

Теперь нужно перезапустить файервол:

service iptables restart

 

 

Можно проверить правильность диапазона портов через lsmod:

lsmod | grep conntrack_ftp

 

 

В результате система ответит чем-то вроде этого:

 

nf_conntrack_ftp 41361 1 nf_nat_ftp
nf_conntrack 65661 8 nf_nat_ftp,nf_conntrack_ftp,ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state

 

 

С этого момента пассивный режим FTP можно использовать.

Небольшое дополнение: Если ваш сервер находится за NAT, возможно придётся загрузить ещё один модуль — ip_nat_ftp.

Помогла заметка - поделись с другом:
  1. Комментов пока нет

  1. Трэкбэков пока нет.

Оставьте эти два поля как есть:

 
Яндекс.Метрика
Array ( [path] => /var/sites/homeless.su/www/wp-content/uploads/2023/12 [url] => https://www.homeless.su/wp-content/uploads/2023/12 [subdir] => /2023/12 [basedir] => /var/sites/homeless.su/www/wp-content/uploads [baseurl] => https://www.homeless.su/wp-content/uploads [error] => )