我有一台 Linux 服务器,默认INPUT
操作是DROP
。
OUTPUT
并且FORWARD
都是ACCEPT
。
我必须添加哪条规则才能使计算机能够作为 FTP 客户端建立 FTP 会话。该服务器不是 FTP 服务器。这是我的防火墙规则。为什么我无法 ping 任何远程计算机或有关 OUTPUT 的任何信息。
# Generated by iptables-save v1.4.12 on Wed Oct 10 15:30:17 2012
*nat
:PREROUTING ACCEPT [379:59440]
:INPUT ACCEPT [162:34762]
:OUTPUT ACCEPT [5008:361967]
:POSTROUTING ACCEPT [5008:361967]
COMMIT
# Completed on Wed Oct 10 15:30:17 2012
# Generated by iptables-save v1.4.12 on Wed Oct 10 15:30:17 2012
*filter
:INPUT DROP [8:528]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [201:14768]
:LOGGING - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -i ppp+ -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i lo -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j ACCEPT
-A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
犯罪
更新:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -i ppp+ -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i lo -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
答案1
作为一个客户,要允许 FTP 处于被动模式,只需允许后半部分连接即可:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
不过,由于规则处理是顺序敏感的,因此您需要将规则放在 INPUT 链中的正确位置。靠近顶部可能是个好位置。
编辑:根据您发布的规则,OUTPUT 流量是允许的。如果您认为不允许,请查看跑步规则集不是启动规则集;尝试iptables -L -n -v
,并发布其输出。
至于 PING,您也不允许它们的后半部分进入。我上面给出的规则也应该使它们开始工作。
答案2
如果尚未加载,您可能还需要确保已加载 FTP 的连接跟踪模块(其确切名称取决于您的内核版本/发行版)。