Есть ли способ узнать диапазон портов «пассивного» FTP-сервера, который не входит в мои полномочия. Диапазон можно установить в файле конфигурации. Например внутри vsftpd.conf
:
pasv_min_port=25000
pasv_max_port=25500
#pasv_min_port=0
#pasv_max_port=0 (any port)
Поскольку я хочу применить брандмауэр OUTPUT (iptables) с очень ограниченным доступом на моем сервере терминалов Linux, мне нужно знать диапазон портов удаленного сервера. Поддерживает ли FTP предоставление информации о диапазоне портов, которую могут использовать клиенты?
Я также открыт для любых других возможных решений, кроме следующего, где я предполагаю, что IP-адрес сервера - 10.1.1.1:
-A OUTPUT -d 10.1.1.1 -j ACCEPT
Спасибо за ваш интерес...
С уважением
РЕДАКТИРОВАТЬ
Спасибо @ aaron-copley, @ martin-prikryl, @ user3590719
Ответ на главный вопрос: FTP не предоставляет клиентам диапазон пассивных портов.
Решение проблемы - загрузка модуля отслеживания соединений netfilter для FTP.
ip_conntrack_ftp (Module alias for CentOS/Red Hat : nf_conntrack_ftp)
Конфигурация рабочего примера для Red Hat 7:
/ и т.д. / sysconfig / iptables-config
IPTABLES_MODULES="nf_conntrack_ftp"
правила iptables
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 10.1.1.1/32 -p tcp -m tcp --dport 21 -j ACCEPT
-A OUTPUT -j DROP
Наконец, вручную загрузите модуль или перезапустите iptables.service.
Я нашел это в предыдущем ответе
Настройка Linux iptables для подключений в режиме FTP PASV
Это: https://major.io/2007/07/01/active-ftp-connections-through-iptables/
и это:
https://www.cyberciti.biz/tips/how-do-i-use-iptables-connection-tracking-feature.html
Во всех из них вы захотите использовать ip_conntrack_ftp и соответствующее правило в ваших правилах iptables, чтобы пассивные соединения оставались открытыми.
Пассивный диапазон портов публично не объявляется FTP-сервером.
Все, что вы можете сделать, - это автоматизировать параллельную передачу множества файлов на / с сервера и определить диапазон по портам, используемым для этих передач.