我希望 iptables 仅过滤一个面向 WAN 的接口 eth0。该怎么做?并且我希望保持 eth0 上的 ftp 和 ssh 端口打开。
答案1
因此,对于除一个接口之外的所有接口,您需要接受所有流量,而在 eth0 上,您需要丢弃除 ftp 和 ssh 之外的所有传入流量。
首先,我们可以设置默认接受所有流量的策略。
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
然后,我们可以重置您的防火墙规则。
iptables -F
现在我们可以说我们想要允许 eth0 上的传入流量,它是我们已经允许的连接的一部分。
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
我们还想允许 eth0 上的传入 ssh 连接。
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
但是 eth0 上的任何其他传入都应被丢弃。
iptables -A INPUT -i eth0 -j DROP
如需更多详细信息,请参阅此 CentOS wiki 条目。
FTP 比 ssh 更复杂,因为它可以使用随机端口,因此请参阅先前这个问题。
答案2
像这样的事情应该可以完成这项工作:
iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT
答案3
在 iptables 规则中指定接口的选项是-i
,例如:-i eth0
。
答案4
这很简单,当你制定iptables
规则时,你必须指定接口。指定iptables
应该在其上运行的 LAN 卡的选项是-i
遵守规则可以给你一个良好的榜样
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
最后一条规则是拒绝任何不符合前两条规则的数据包。所有规则都iptables
按给定顺序执行,因此拒绝数据包的规则始终是最后一条。