有什么方法可以了解我没有权限的“被动”FTP服务器的端口范围。可以在配置文件中设置范围。例如在vsftpd.conf
:
pasv_min_port=25000
pasv_max_port=25500
#pasv_min_port=0
#pasv_max_port=0 (any port)
因为我想在我的 Linux 终端服务器上应用一个非常受限的 OUTPUT 防火墙(iptables),所以我需要知道远程服务器的端口范围。FTP 是否支持客户端可以使用的端口范围信息的公开?
我也愿意接受任何其他可能的解决方案,除了以下我假设服务器 IP 地址为 10.1.1.1 的解决方案:
-A OUTPUT -d 10.1.1.1 -j ACCEPT
感谢您的关注...
问候
编辑
感谢@aaron-copley,@martin-prikryl,@user3590719
回答主要问题,FTP 不会向客户端公开被动端口范围。
需要的解决方案是为 FTP 加载 netfilter 连接跟踪模块。
ip_conntrack_ftp (Module alias for CentOS/Red Hat : nf_conntrack_ftp)
Red Hat 7 的工作示例配置:
/etc/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。
我在以前的答案中找到了这个
为 FTP PASV 模式连接设置 Linux iptables
这个: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 服务器公开宣布。
您所能做的就是自动将许多文件并行传输到服务器或从服务器传输,并从用于这些传输的端口中推断出范围。