让我们举个例子,假设我只允许传出的 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
Run Code Online (Sandbox Code Playgroud)
这样对吗?我想知道,因为我见过有人写过这样的防火墙规则:
: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
Run Code Online (Sandbox Code Playgroud)
传出规则NEW
和NEW,ESTABLISHED,RELATED
传出规则有什么区别?仅仅编写NEW
并让防火墙做一些神秘的魔术就足够了吗?还是有必要写NEW,ESTABLISHED,RELATED
?
第二种配置将不起作用(尝试一下!)。由于你的默认策略是在链DROP
上OUTPUT
,所以TCP三次握手的第三个数据包将被防火墙阻止,因为该数据包不属于NEW
,因此永远不会建立连接。
OUTPUT
如果您的默认策略是ACCEPT
,或者您之后有其他允许并声明OUTPUT
的规则,那么它会起作用。ESTABLISHED
RELATED
总之,如果您想将其DROP
作为默认策略,则第一个规则集是正确的。
归档时间: |
|
查看次数: |
5627 次 |
最近记录: |