无法为 FTPS (带有 TLS 的纯 ftpd) 设置 iptables 规则

无法为 FTPS (带有 TLS 的纯 ftpd) 设置 iptables 规则

我正在运行支持 TLS 的 pure-ftpd,在启用 iptables 之前,一切都运行正常。使用有效的 iptables,我可以连接到 ftp,但无法获取文件列表。

ip_conntrack_ftp模块已启用,这是我为 ftps 设置的规则:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 989 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 990 -j ACCEPT

答案1

被动模式下的 FTP 涉及客户端在端口 21 上的控制连接中指示的端口号上与服务器建立第二个数据连接。conntrack 模块嗅探控制连接并检测数据连接的端口号,然后将传入的数据连接视为 RELATED,这通常会被以下规则接受:

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

但是,当控制连接加密时,conntrack 模块无法检测到端口号,因此不会接受传入连接。解决方案是配置 FTP 服务器,使其具有在被动模式下使用的一系列端口(PassivePortRange如 @cyberx86 所述),并将防火墙配置为接受到该范围的所有传入连接,例如:

iptables --append INPUT --protocol tcp --dport 10000:10100 --jump ACCEPT

相关内容