Una panoramica sul mondo della Sicurezza Informatica, del Networking, della Virtualizzazione e non solo. Blog particolarmente indicato per i reparti IT che comunque alterna articoli scritti per specialisti con articoli formulati con linguaggio semplice e comprensibile a tutti.

Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

giovedì 23 dicembre 2021

Performance: differenze tra iptables e nftables

Recentemente, grazie al progetto honeypot (discusso nell'articolo precedente) stiamo maneggiando una mole importanti di indirizzi IP da blacklistare. Con l'aumentare del numero, degradano drammaticamente le performance.

Condivido con i più esperti questo raffronto che ho realizzato oggi:

 


Throughput senza alcuna regola di firewalling:

 su questa macchina:



Il microserver ha 4 interfacce in bridge, il test è dall'host A all'host B con di mezzo il microserver. Quindi è stato abilitato ovviamente a livello di kernel:

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo "br_netfilter" >> /etc/modules



iptables

Caricamento entry 

Ogni ip viene blacklistato in ingresso ed in uscita, con il logging. Pertanto ogni entry è da moltiplicare x4:



Le operazioni di caricamento sono durate davvero troppo e ci siamo fermati a circa 12000 ip blacklistati.

Le performance sono purtroppo drammaticamente distanti rispetto ad nftables, ma va detto che abbiamo abilitato il LOG sulle regole che, di fatto, raddoppiano con iptables le policy. 

12.000 ip blacklistati (x4, quindi effettivi 61858 policy) sono stati caricati in 11.000 secondi circa.

 

Throughput

 

Con circa 62k policy (per ogni ip c'è la policy di log in ingresso, log in uscita e blocco in ingresso ed in uscita) iptables crolla drammaticamente da 950Mbit a circa 5Mbit.


Senza log e policy solo in ingresso (-s)

Proviamo quindi ad alleggerire e carichiamo 41670 ip blacklistati in ingresso solamente, senza regole di log:

41670 policy effettive caricate in



Ancora non ci siamo.

 


nftables

Caricamento entry

Ogni ip viene blacklistato in ingresso ed in uscita, con il logging. Pertanto ogni entry è da moltiplicare x2 in quanto il logging è incluso nella policy:

35.535 ip blacklistati (x2) sono stati caricati in 460.1 secondi.

 

Throughput



IPSet

Per risolvere i problemi di performance, ipset è un tool che interagisce a livello kernel e si occupa di strutturare meglio (anche grazie a meccanismi avanzati di cache) le migliaia di policy.
 
Ecco i risultati:

 
 
 
 

Chiaramente si evince come al superamento delle 1000 policy sia assolutamente più conveniente utilizzare ipset, su tutta la linea.


Integro con questa interessante tesi di laurea che ho trovato online effettuando ricerche in merito: http://www.diva-portal.org/smash/get/diva2:1212650/FULLTEXT01.pdf



Discaimer: Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione è vietata salvo autorizzazione.