我的系统上有四个接口(eth0、eth1、eth2 和 eth3)。我想阻止 eth2 上除端口 80 和 443 之外的所有传入和传出流量,尽管我现在只担心 80。我使用的 IPtables 命令如下:
/sbin/iptables -A FORWARD -i eth2 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -o eth2 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i eth2 -p tcp --dport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -A OUTPUT -o eth2 -p tcp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i eth2 -p udp --dport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -A OUTPUT -o eth2 -p udp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth2 -j DROP
/sbin/iptables -A FORWARD -o eth2 -j DROP
很简单,这不起作用。eth2 上的所有流量(包括端口 80 上的流量)都被阻止了。有什么想法或方法可以探测问题所在吗?我对 IPtables 的经验很少,所以我不知道从哪里开始。谢谢!
答案1
现在看起来您一直在允许流量。
答案2
考虑使用 Shorewall 之类的防火墙构建器。它将有助于确保一切正确,并可以转储规则以便您检查它们。它提供了大量文档和针对一个、两个或三个接口(外部区域)的示例配置。这样您就可以获得三个外部接口,而无需将两个接口放在同一个区域中。
假设您已分配启用 HTTP 和 HTTPSeth2
的区域,net
可以使用其中之一启用rules
。您需要哪种规则取决于您希望流量流动的方向。
Web(ACCEPT) $FW net
Web(Accept) net $FW