我无法拒绝某个 IP 地址对 FTP 的访问。
首先我需要否认一切,所以我这样做了:
#iptables -F
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP
然后我打开FTP:
#modprobe ip_conntrack_ftp
#iptables -A INPUT -p TCP -i eth0 --dport 21 -m state --state NEW -j ACCEPT
#iptables -A INPUT -p ALL -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p ALL -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
上述方法有效,但我已经尝试过以下方法:
#modprobe ip_conntrack
#modprobe ip_conntrack_ftp
#iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.5.110 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.5.110 --sport 21 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.5.110 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.5.110 --sport 1024:65535 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.5.110 --sport 20 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 202.54.1.20 --dport 20 -m state --state ESTABLISHED -j ACCEPT
现在我需要拒绝一个 IP,以便一台计算机无法访问 FTP,比如说 192.168.5.9:
#iptables -A INPUT -s 192.168.5.9 -d 192.168.5.110 -p tcp -m tcp --dport 21 -j DROP
我也尝试过
#iptables -A INPUT -p tcp -s 192.168.5.9 --dport 21 -j DROP
iptables -L 中显示已丢弃,但当我使用 fillezilla 时,它通过了。我已丢弃端口 20、21、22。
那么为什么规则应该放弃连接但实际却允许连接呢?
答案1
这里需要注意的是,单个表中的防火墙是按顺序处理的。一旦找到匹配项,该链的处理就会停止并采取行动。
因此,您可能需要做的是将来自该 IP 地址的 ftp 的 drop 放在允许 FTP 的一般规则之前。-A
附加规则到链中。您可能想要-I
将规则插入到链中。默认情况下,规则是插入位于链的顶部-I
,但您也可以传递一个数字,将其放置在指定的规则编号之前。