我正在使用vsftpd与主动ftp。 我有模块“ip_conntrack_ftp”(在/ etc / sysconfig / iptables-config),端口21打开。 连接FTP工作,但FTPS不。 我可以login,但没有列出:
227 Entering Passive Mode LIST -a
当停止防火墙它的工作(我的意思是在FTP服务器本身的iptables)。 我在http://www.experts-exchange.com/Software/Server_Software/File_Servers/FTP/Q_22418222.html阅读,它是不可能与主动FTP使用FTPS。 这是真的?
我的iptablesconfiguration:
*filter :INPUT DROP [15:2752] :FORWARD DROP [0:0] :OUTPUT ACCEPT [132:159725] -A INPUT -i lo -j ACCEPT -A INPUT -d 127.0.0.0/255.0.0.0 -i ! lo -j REJECT --reject-with icmp-port-unreachable -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT -A INPUT -p tcp -m tcp --dport 990 -j ACCEPT -A INPUT -p tcp -m tcp --dport 989 -j ACCEPT COMMIT
我遇到了这个问题。 看起来您需要在使用明确的TLS / SSL使用FTP时打开ftp数据传输范围的端口。 尝试以下操作:
iptables -A INPUT -p tcp --sport 1024: --dport 64000:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 64000:65535 --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
您需要明确允许访问ftp数据传入端口范围。 Nic的回答build议静态打开全部范围,但可能太开放了。 另外, RELATED在这种情况下是无用的,因为conntrack_ftp模块不能窥探encryption的控制连接。
我的build议是使用最近的比赛。 尝试以下操作:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state NEW -j in_new iptables -A in_new -p tcp --sport 1024: --syn --dport 64000:65535 -m recent --name ftpdata --update --seconds 1800 --reap -j ACCEPT iptables -A in_new -p tcp --syn --dport ftp -m recent --name ftpdata --set -j ACCEPT
--set规则将被控制连接匹配,并将源ip添加到ftpdata最近列表。 --update规则将完成大部分有趣的工作:
ftpdata列表( --update )中,并且在最后1800秒( – --seconds 1800 )内看到源地址,则匹配。 ftpdata列表中最近1800年没有看到的条目将被删除( --reap )。 所以,控制连接被ACCEPT ,你有1800秒来启动数据连接。 之后,您将需要重新打开控制连接以将源地址重新添加到ftpdata列表中。
如果这个ftp客户端在最后一次控制连接build立时间1800秒之后将不能启动数据连接,这个解决scheme是不方便的。 你可以使用24小时,如果你喜欢,它将不会打开永远打开整个端口范围。 你也可以有一个序列,如:
iptables -A INPUT -m state --state ESTABLISHED -p tcp --dport ftp -m recent --set iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
每当build立的控制连接数据包进来时刷新源地址,但是我更喜欢在顶部附近有 – --state RELATED,ESTABLISHED规则。
还请检查vsftpd.conf的 accept_timeout , data_connection_timeout和idle_session_timeout参数。
/etc/sysconfig/iptables下行添加到/etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 64000:65535 -j ACCEPT
重新启动iptables