Quante istruzioni possono essere inserite in iptables senza perdere la sanità mentale del sistema?


9

Supponiamo che uno desideri avere un elenco di indirizzi IP bloccati.

Ho visto il seguente script di esempio:

BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
    iptables -A INPUT -s $i -j DROP
    iptables -A OUTPUT -d $i -j DROP
done

Diverse migliaia di righe, che si trasformano in diverse migliaia di voci iptables, sono sane?

Qual è il limite massimo oltre il quale l'efficienza del sistema ne risentirà in modo significativo?


2
Sembra che tu abbia trovato la risposta alla tua domanda. In tal caso, dovresti spostare la risposta fuori dalla tua domanda e utilizzare il pulsante "Rispondi alla tua domanda" e inserire la risposta lì. Quindi, puoi accettare la tua risposta e le cose saranno organizzate molto meglio.
Scott Severance,

@ScottSeverance fatto come suggerisci, tuttavia, ci vogliono 4 ore prima che si possa accettare l'auto-risposta.
Tzury Bar Yochay,

Risposte:


8

Penso di aver trovato una soluzione tramite questo articolo e IPSet sembra essere la risposta

In sintesi:

Se un set di indirizzi IP contiene migliaia di elementi, le prestazioni di iptables diminuiscono (in realtà, le prestazioni di netfilter, non appena iptables è solo uno strumento per la gestione del firewall). Anche il carico della CPU può aumentare. Fortunatamente esiste una soluzione perfetta: ipset

IPSet è lo strumento perfetto se vuoi:

  • Memorizza più indirizzi IP o numeri di porta e confronta con la raccolta di iptables in un colpo solo;
  • Aggiorna dinamicamente le regole di iptables contro indirizzi IP o porte senza penalità di prestazione;
  • Esprimete indirizzi IP complessi e set di regole basati su porte con un'unica regola iptables e beneficiate della velocità dei set IP

L'installazione di ipset è semplice sudo apt-get install ipset

Quindi eseguire il seguente

ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50

Aggiungilo alla tua catena iptables. Può differire a seconda delle impostazioni del firewall. Qui usiamo la catena etinica.

iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP

Ora puoi aggiungere tutti i cattivi IP al tuo ipset. Ad esempio, hai un file di testo chiamato bots.txt con un IP per riga. Quindi puoi aggiungerli a ipset usando un semplice script bash:

for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done

Per controllare l'esecuzione:

ipset -L autoban

Grazie per la risposta. Ecco un breve tutorial su ipset per coloro che non hanno familiarità con ipset (come me 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.