使用iptables创建防火墙规则

时间:2013-09-02 20:11:36

标签: linux firewall iptables

有没有办法使用“iptables”来构建防火墙规则,它会在输入和输出上过滤数据包?我只能找到如下规则,允许您将其指定为应用于数据包源(INPUT)或目标(OUTPUT)。

iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP.

虽然我应该能够过滤来自和去往特定地点的数据包,这样才有意义,这样我最终可能会得到如下的fw表:

pkts bytes target     prot opt in     out     source               destination
   0     0 ACCEPT     all  --  *      *       172.152.4.0/24       92.3.0.0/16

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

是和否。

否,因为:iptables的工作原理是首先定义如何根据数据包的分类处理数据包(INPUT,OUTPUT,FORWARD,...),然后再根据具体特征(源或目标地址,协议类型,源或目的地港口等)。您永远不能定义不适用于特定链的iptable规则。

INPUT,OUTPUT和FORWARD是iptables系统的默认链。 INPUT通过目标localhost(即发送到您的网络设备)解决所有问题; OUTPUT适用于源localhost(即来自您的计算机)的所有内容。

是的,因为:您可以定义自定义链。你可以这样做

sudo iptables -N MYCHAIN

然后你可以从INPUT和OUTPUT(如果你喜欢FORWARD)链发送数据包到MYCHAIN,例如来自INPUT的所有TCP包:

sudo iptables -A INPUT -p tcp -j MYCHAIN

或来自OUTPUT的所有包

sudo iptables -A OUTPUT -j MYCHAIN

然后您可以为mychain定义任何规则,包括

sudo iptables -A MYCHAIN -s 172.152.4.0/24 -d 92.3.0.0/16 -j ACCEPT

应该或多或少是你想要的规则

然而,有人可能会认为保持INPUT和OUTPUT链是分开的确有意义。大多数用户希望对INPUT和FORWARD应用比OUTPUT更严格的规则。此外,iptables可用于路由,在这种情况下,如果您有传入或传出的包,它会产生根本区别。