在使用SPI防火墙时,要确保服务器安装了使用被动(PASV)模式连接的FTP用户应用程序。
在运行Monolithic内核的服务器上(例如:VPS Virtuozzo/OpenVZ 和自定义内核)ip_conntrack和ip_conntrack_ftp iptables内核模块可能不能使用或功能不齐全。如果是这样,FTP被动模式(PASV)将不能工作。那么,您需要在防火墙打开一个洞,并配置FTP服务器以使用该洞。
例如,您可以使用pure-ftpd 添加端口范围30000:35000 到TCP_IN,添加下述行至/etc/pure-ftpd.conf ,然后重启pure-ftpd:
PassivePortRange 30000 35000
例如,您可以使用proftpd添加端口范围30000:35000至TCP_IN,添加下述行至/etc/proftpd.conf,然后重启proftpd:PassivePorts 30000 35000
通过SSL/TLS的FTP在使用SPI防火墙时经常会失败。这是由FTP协议在用户和服务器之间建立连接的方式导致的。在通过SSL使用FTP时,iptables不能建立相关连接是因为FTP控制连接已加密,因此不能跟踪该连接和临时端口分配的关系。
如果您需要通过SSL使用FTP,那么您要在csf和FTP服务器配置各开放一个被动端口块。(见上)
在试着使FTP连接更加安全的同时,却降低了您的防火墙的安全性。