使用 PureFTPd 时,如果我不在 iptables 中接受新连接,则被动模式不起作用

使用 PureFTPd 时,如果我不在 iptables 中接受新连接,则被动模式不起作用

我配置了 Pure-FTPd-MySQL + IPTables,但是在被动模式上遇到了问题(谁没有呢?)

我强制了这个端口范围:

echo "1024 65535" > /etc/pure-ftpd/conf/PassivePortRange

在 Iptables 中,有一些规则处理 FTP 限制。其中一条规则让我遇到了问题:

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d $SERVER_IP --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

我想禁止新连接,但如果我这样做,被动模式就不再起作用了。知道为什么吗?我看不出有什么理由。

答案1

缺少 ip_conntrack 和 ip_conntrack_ftp。我将它们添加到 /etc/modules,然后就好了。

答案2

被动模式之所以存在,是因为否则您将依赖于能够连接到任意端口上的客户端来进行数据连接。在防火墙出现之前,这没什么问题,但在当今网络安全和 NATted 段时代,这种尝试很可能会失败。

被动模式通过让客户端在数据传输开始时连接到服务器来解决该问题。这意味着服务器可以控制允许哪些连接以及在哪些端口上进行连接。换句话说,您必须允许从任何地方连接到您的被动端口(假设您的 ftp 服务器对全世界开放)。

我的建议是大幅缩小端口范围(我通常选择 40000-40100 左右;如果您预计同时传输超过 100 个数据,显然您需要更大的范围)。出于上述原因,您仍然需要防火墙规则来接受这些传入连接。

相关内容