Разрешение пассивных FTP-соединений в FirewallD (CentOS 7)
В CentOS 7, который поставляется с FirewallD, включить HTTP-доступ было легко:
firewall-cmd --permanent --zone=public --add-service=http
Тем не мение,
firewall-cmd --permanent --zone=public --add-service=ftp
не работает: правило применяется, но я не могу получить доступ к FTP любым способом, кроме отключения FirewallD.
Некоторая диагностическая информация:
- Я проверил файл определения сервиса (ftp.xml), и он использует модуль nf_conntrack_ftp.
- На моем VPS модуль скомпилирован в ядро (а не отдельно), поэтому его нет с помощью lsmod, но я могу подтвердить, что он там:
zgrep FTP /proc/config.gz
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NF_NAT_FTP=y
CONFIG_NF_NAT_TFTP=y
2 ответа
Я не исследовал проблему полностью, поэтому не понимаю деталей, но, похоже, это как-то связано с тем, как активно-пассивные соединения настраиваются как для vsftpd на сервере, так и для клиента (например, Filezilla).
В основном вам необходимо:
- настройте пассивный режим vsfptd, добавив следующее в /etc/vsftpd/vsftpd.conf:
pasv_enable=Yes pasv_max_port=40000 pasv_min_port=40000
- Перезапустите vsftpd:
systemctl restart vsftpd.service
- Опе порт 4000 в FirewallD:
firewall-cmd --permanent --add-port=40000/tcp firewall-cmd --reload
- Тогда я смог связаться с
lftp
, Для настройки Filezilla на использование активного режима проверьте http://www.itzgeek.com/how-tos/linux/centos-how-tos/enable-passive-mode-in-ftp-on-centos-7-rhel-7-for-filezilla-and-winscp.html
Попробуй : отредактируй /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=65400
pasv_max_port=65410
Затем:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p TCP --dport 21 --sport 1024:65534 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p TCP --dport 65400:65410 --sport 1024:65534 -j ACCEPT
firewall-cmd --reload
firewall-cmd --permanent --direct --get-all-rules
Я использую сервер vsftp и клиент FileZilla может работать