O firewall do netfilter Linux normalmente opera sob uma primeira base de correspondência e as regras em cada cadeia são processadas sequencialmente, então quanto menos regras precisarem ser processadas antes de acertar uma partida, maior será o seu desempenho.
Essa é a razão pela qual a maioria das configurações de firewall tem algo como: -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
como a primeira regra. Normalmente, essa regra única corresponde à maioria de todo o tráfego em sites razoavelmente ocupados. (Como em mais de 99% de todo o tráfego ...)
Agora, as regras de firewall restantes só devem ser acionadas e processadas para novas conexões, reduzindo significativamente a quantidade de processamento necessária.
Como as regras são processadas em ordem, do ponto de vista do desempenho, faz sentido ordenar as regras pela probabilidade de elas serem acionadas.
por exemplo. em um servidor da Web, a grande maioria do tráfego estará nas portas HTTP padrão. Portanto, uma regra como -A INPUT -p tcp -m state --state NEW -m multiport --dports 80,443 -j ACCEPT
efetuando a maioria de seus usuários deve ser sua segunda regra e não como o número de regra 199 depois de toda uma série de regras que provavelmente não corresponderão a ninguém, exceto a um pequeno número de usuários específicos e / ou protocolos incomuns.
No que diz respeito à criação de regras, usando os módulos corretos, como por exemplo o multiport e o iprange, você pode criar regras inteligentes, em vez de várias regras individuais.