将“ACCEPT 状态 RELATED,ESTABLISHED”移至顶部是否安全?

将“ACCEPT 状态 RELATED,ESTABLISHED”移至顶部是否安全?

我有以下 iptables 配置:

Chain INPUT (policy DROP 11 packets, 604 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      127 11093 BLACKLIST  all  --  *      *       0.0.0.0/0            0.0.0.0/0
2      127 11093 UNCLEAN    all  --  *      *       0.0.0.0/0            0.0.0.0/0
3      115 10437 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
4        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
... followed by rules for state=NEW for running services like SSH

该链BLACKLIST阻止了一些源 IP。该链UNCLEAN丢弃带有不干净 TCP 标志的数据包。我喜欢将ACCEPT state RELATED,ESTABLISHED规则(当前规则 3)尽可能移到顶部,以获得最佳响应行为 - 但不会失去安全性。

据我所知,我可以将这BLACKLIST两个位置向下移动,因为仅检查 就足够了state=NEW。一旦established它已经通过了BLACKLIST之前的检查,因此ACCEPT state RELAED,ESTABLISHED可以放置在BLACKLIST规则之前。对吗?

您是否建议移动其他规则?(例如lo移至顶部或类似位置)

答案1

Netfilter 按顺序处理防火墙规则。出于安全性和性能方面的考虑,您希望数据包在被批准或拒绝之前经过尽可能少的防火墙规则。

根据默认策略,您可能需要或可能需要允许lo环回接口上的所有流量的规则-A INPUT -i lo -j ACCEPT作为-A OUTPUT -i lo -j ACCEPT第一条规则。

在外部接口上采用状态防火墙并将该-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT规则作为第一项是非常有意义的,因为这些流量之前已经成功通过了防火墙规则,这使得连接得到批准,并且处理这些后续数据包也不会有任何好处。在大多数具有大量合法流量的系统上,该规则将匹配绝大多数数据包。

在授予访问权限之前,您可能需要黑名单规则。

然后,您通常会根据规则的相关可能性对其进行排序,例如,在 Web 服务器上,您可能希望经常触发的规则位于-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT很少触发的规则之前,例如允许从办公网络访问管理端口的规则。

不时查看计数器以检查哪些规则经常匹配,以确认您的配置是合理的。

答案2

可以,我已经将 related/established 放在了 iptables 链的顶部。它不允许任何额外内容进入,只允许任何与已建立连接相关的内容,例如高端口响应或已建立连接本身。

至于移动其他规则,您要考虑的就是像处理列表一样处理它们,因此命中的任何规则都将由其命中的第一个规则处理。您也可以将 lo 移到顶部,但您的其他规则可能不太可能与环回规则发生冲突,尤其是因为它们与其他目的地/源有关。

相关内容