Le regole in un firewall netfilter (iptables) vengono controllate in sequenza e il destino del pacchetto (ACCEPT, DROP, REJECT ecc.) Viene determinato in base alla prima corrispondenza.
Rendendo lo stato del firewall e la prima regola, la -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTmaggior parte del traffico legittimo verso il tuo server viene accettata dopo aver superato solo quella singola regola. Quel traffico non ha bisogno di attraversare altre regole.
A seconda delle dimensioni della rule base, ciò può comportare una differenza significativa nelle prestazioni del firewall.
L'unico traffico che il firewall deve ora convalidare sono le connessioni esplicitamente nuove.
Vale a dire confrontare un firewall per un server web pubblico con l'accesso per una manciata di webmaster dalle loro stazioni di lavoro:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m iprange --src-range 10.9.8.7-10.9.8.10 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Circa il 99% dei pacchetti legittimi apparterrà a connessioni stabilite, colpendo solo la prima regola. Dei pacchetti che non corrispondono a tale regola, la maggior parte dovrebbe essere costituita da nuove connessioni al tuo sito Web, il modulo multiporta può consentire l'accesso a HTTP o HTTPS in un'unica regola. I webmaster accedono da un numero di stazioni di lavoro con indirizzi fissi usando ssh e sftp e tutto il resto viene rifiutato.
Un firewall in cui le regole sono ordinate logicamente dalla porta TCP:
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.7 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.9 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.10 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Qui ogni pacchetto per il tuo server web HTTP dovrebbe essere verificato rispetto a 5 regole prima che venga concesso l'accesso. E con più servizi in esecuzione su un server che può facilmente diventare 50 regole o molto di più quando, ad esempio, utilizzi fail2ban o prodotti simili.