当我的防火墙启用时,我的FTP(s)不起作用。 过去我一直在为我设置iptables,我昨天大致了解到如何设置一个iptables,但是我错过了这个要求。 这是我的iptables.rules
#由iptables-save v1.4.4于2010年11月16日23:23:50生成 *过滤 :FORWARD ACCEPT [0:0] :input接受[0:0] :OUTPUT ACCEPT [0:0] -Ainput-i lo -j接受 -A INPUT -m状态-i eth0 - 状态RELATED,ESTABLISHED -j接受 -A INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT -A INPUT -p tcp -m tcp --dport 989:990 -j ACCEPT -A INPUT -p tcp -m tcp -i eth0 --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp -i eth0 --dport 80 -j ACCEPT -Ainput-p tcp -m tcp -i eth0 --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp -i eth0 --dport 10000 -j ACCEPT -Ainput-p icmp -i eth0 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-port-unreachable 承诺 #2010年11月16日23:23:50完成 #由iptables-save v1.4.4于2010年11月16日23:23:50生成 *撕裂 :预备接受[95811:65665815] :input接受[92355:65212126] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [55795:22371752] :承认接受[55795:22371752] 承诺 #2010年11月16日23:23:50完成 #由iptables-save v1.4.4于2010年11月16日23:23:50生成 * NAT :预备接受[5132:543438] :承认接受[953:67517] :OUTPUT ACCEPT [953:67517] 承诺 #2010年11月16日23:23:50完成
所以只是总结,我的FTP将连接,但不显示防火墙启用任何文件。 禁用防火墙,一切都是完美的。
编辑:唯一的另一方面,我得到这个防火墙工作是禁用ipv6,禁用TLS和添加一个规则到防火墙,允许从我的家庭networking连接(服务器在别处)
在被动模式下,当客户端要从服务器获取文件或向服务器发送文件时,FTP服务器将select一个随机端口并将该端口发送到FTP客户端。
如果不使用encryption,则正确configuration的防火墙(使用ip_conntrack_ftp
帮助器内核模块,可能是缺less非TLS连接的内容)会“监听”连接,并将这些连接标记为RELATED
。 通过encryption,防火墙无法侦听。
对此的快速和肮脏的解决scheme是configurationFTP服务器为被动连接select一个小范围的端口,然后允许访问所有这些端口。 例如,在vsftpd
:
pasv_min_port=12000 pasv_max_port=12049
然后在iptables中:
iptables -A INPUT -p tcp -m tcp -i eth0 --dport 12000:12049 -j ACCEPT
允许任何人访问这些端口会导致一个可能的漏洞:如果有人反复扫描,他们可能会很幸运,并能够将真正的用户“击败”到数据端口并获取文件。 理想情况下,您的FTP服务器将检查并确保连接来自原始连接的相同位置,但要感谢诸如“FXP”(通过说服一个服务器与另一个服务器build立主动连接被动数据端口)一些服务器默认情况下不检查连接。 您应该检查您的configuration文件,看看是否有一个选项来禁用FXP,并使用它。 (vsftpd调用这个“混杂”,默认情况下是禁用的。)
如果FTP连接启动,但没有文件可以看到/传输,则尝试使用被动模式(只需在命令行ftp客户端键入PASV)。 如果没有被动模式,服务器将尝试在匿名端口上build立一个连接回你的机器。 至less,这是普通的FTP发生的事情 – 不知道如何完成FTPS:S
HTH,
JJK
我没有FTPS的直接经验,但可能是因为控制通道被encryption,netfilter的连接跟踪代码无法学习到适当的端口打开,以允许客户端的传入数据连接(被动模式)。 这也许可以解释为什么当防火墙被禁用时,“一切都是完美的”。 如果可能的话,尝试使用主动模式。 不幸的是,我怀疑如果客户端也在防火墙后面,那么主动模式也可能会被阻塞,原因很多。