IPtables - 新与新、已建立、相关

IPtables - 新与新、已建立、相关

让我们举个例子,假设我只允许传出 HTTP[S] 流量通过防火墙。我知道在现实场景中我还需要允许传出 DNS 流量,但这只是一个示例。我会这样编写 iptable 规则:

:INPUT DROP
:FORWARD DROP
:OUTPUT DROP

-A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

它是否正确?我想知道,因为我见过有人编写了相同的防火墙规则,如下所示:

:INPUT DROP
:FORWARD DROP
:OUTPUT DROP

-A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT

传出规则NEW和for之间有什么区别?NEW,ESTABLISHED,RELATED仅仅编写NEW并让防火墙执行一些神秘的魔法就足够了吗?或者说有必要写吗NEW,ESTABLISHED,RELATED

答案1

第二种配置将不起作用(尝试一下!)。由于你的默认策略是DROPOUTPUT链上,所以TCP三次握手的第三个数据包将被防火墙阻止,因为该数据包不属于NEW,因此永远不会建立连接。

OUTPUT如果您的默认策略是ACCEPT,或者您之后有其他一些OUTPUT允许ESTABLISHEDRELATED声明的规则,那么它会起作用。

总之,如果您想将DROP其作为默认策略,则第一个规则集是正确的。

相关内容