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

我有以下的iptablesconfiguration:

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规则(currentyl规则3)尽可能地移到顶部以获得最佳响应行为 – 但不会失去安全性。

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

你会build议移动其他规则吗? (也就是说,最高或最高等)

Netfilter按顺序处理防火墙规则。 为了安全性和性能,您希望数据包在被批准或拒绝之前尽可能less地使用防火墙规则。

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

具有-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT的状态防火墙-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT作为第一个在外部接口上的规则是非常有意义的,因为这是以前已经穿越防火墙规则的stream量,使得连接被批准,并且也不会通过处理那些后续的包来获得。 在大多数具有大量合法stream量的系统上,该规则将匹配绝大多数数据包。

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

然后,您通常会按照相关的可能性sorting规则,即在Web服务器上,您可能需要一条经常触发的规则,例如-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT一个很less被触发的-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT ,比如允许从你的办公室networking访问一个pipe理端口。

每隔一段时间查看计数器,检查并经常查看哪些规则匹配,以确认您的configuration是否有点理智。

你可以,我有我的iptables链的顶部相关/build立。 它不允许任何额外的东西,只是任何有关build立连接,如高端口响应或build立连接本身。

至于移动别人,所有你必须考虑的是它处理他们像一个列表,所以命中的任何东西将按照它命中的第一个规则处理。 您也可以将lo移到顶端,但您的其他规则可能不太可能与环回规则相冲突,尤其是因为它们是关于其他目标/源的。