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
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
35.535 ip blacklistati (x2) sono stati caricati in 460.1 secondi.
Throughput
IPSet
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.