use*_*952 4 iptables ftp vsftpd
我正在使用带有活动 ftp 的 vsftpd。我打开了模块“ip_conntrack_ftp”(在 /etc/sysconfig/iptables-config 中)并且端口 21 已打开。使用 FTP 连接有效,但 FTPS 无效。我可以登录但没有列表:
227 Entering Passive Mode
LIST -a
Run Code Online (Sandbox Code Playgroud)
停止防火墙时它可以工作(我的意思是 ftp 服务器本身上的 iptables)。我在http://www.experts-exchange.com/Software/Server_Software/File_Servers/FTP/Q_22418222.html中读到,无法将 FTPS 与活动 FTP 一起使用。这是真的?
我的 iptables 配置:
*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
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了这个问题。使用带有显式 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
Run Code Online (Sandbox Code Playgroud)
您需要明确允许访问ftp-data传入端口范围。Nic 的回答建议静态打开全范围,但这可能太开放了。此外,RELATED在这种情况下是无用的,因为conntrack_ftp模块无法窥探加密的控制连接。
我的建议是使用最近的比赛。请尝试以下操作:
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
Run Code Online (Sandbox Code Playgroud)
该--set规则将通过控制连接进行匹配,并将源 ip 添加到ftpdata最近的列表中。该--update规则将完成大部分有趣的工作:
ftpdata列表 ( --update) 中并且源地址在过去 1800 秒 ( --seconds 1800)内出现,则将匹配。--update)。ftpdata过去 1800 年中未出现的列表中的条目将被删除 ( --reap)。因此,在控制连接被ACCEPT编辑后,您有 1800 秒的时间来启动数据连接。在那之后,您将需要重新打开控制连接以将源地址重新添加到ftpdata列表中。
如果 ftp 客户端在上次控制连接建立时间的 1800 秒后无法启动数据连接,则此解决方案会带来不便。如果愿意,您可以使用 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
Run Code Online (Sandbox Code Playgroud)
每当建立的控制连接数据包进入时刷新源地址,但我更喜欢将--state RELATED,ESTABLISHED规则放在顶部附近。
还要检查accept_timeout,data_connection_timeout和idle_session_timeout的PARAMS的vsftpd.conf。
| 归档时间: |
|
| 查看次数: |
11907 次 |
| 最近记录: |