Wie viele Anweisungen können in iptables eingefügt werden, ohne die Systemqualität zu verlieren?


9

Angenommen, man möchte eine Liste blockierter IP-Adressen haben.

Ich habe das folgende Beispielskript gesehen:

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

Sind mehrere tausend Zeilen, die sich in mehrere tausend iptables-Einträge verwandeln, vernünftig?

Was ist die Obergrenze, ab der die Systemeffizienz erheblich beeinträchtigt wird?


2
Es scheint, dass Sie die Antwort auf Ihre Frage gefunden haben. Wenn ja, sollten Sie die Antwort aus Ihrer Frage entfernen und die Schaltfläche "Beantworten Sie Ihre Frage" verwenden und die Antwort dort veröffentlichen. Dann können Sie Ihre Antwort akzeptieren und die Dinge werden viel besser organisiert.
Scott Severance

@ScottSeverance erfolgt wie vorgeschlagen, es dauert jedoch 4 Stunden, bis eine Selbstantwort akzeptiert werden kann.
Tzury Bar Yochay

Antworten:


8

Ich glaube, ich habe über diesen Artikel eine Lösung gefunden und IPSet scheint die Antwort zu sein

In Summe:

Wenn ein Satz von IP-Adressen Tausende von Elementen enthält, nimmt die Leistung von iptables ab (tatsächlich nimmt die Leistung von netfilter ab, sobald iptables nur ein Tool zum Verwalten der Firewall ist). Ihre CPU-Auslastung kann sich ebenfalls erhöhen. Zum Glück gibt es eine perfekte Lösung - ipsets

IPSet ist das perfekte Tool, wenn Sie:

  • Speichern Sie mehrere IP-Adressen oder Portnummern und stimmen Sie sie auf einen Schlag mit der Sammlung von iptables ab.
  • Aktualisieren Sie die iptables-Regeln dynamisch gegen IP-Adressen oder Ports, ohne die Leistung zu beeinträchtigen.
  • Drücken Sie komplexe Regelsätze auf der Basis von IP-Adressen und Ports mit einer einzigen iptables-Regel aus und profitieren Sie von der Geschwindigkeit der IP-Sätze

Die Installation von ipset ist unkompliziert sudo apt-get install ipset

Führen Sie dann Folgendes aus

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

Fügen Sie es Ihrer iptables-Kette hinzu. Dies kann je nach Firewall-Einstellungen unterschiedlich sein. Hier verwenden wir Ethin-Kette.

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

Jetzt können Sie Ihrem ipset alle fehlerhaften IP-Adressen hinzufügen. Zum Beispiel haben Sie eine Textdatei namens bots.txt mit einer IP pro Zeile. Sie können sie also mit einem einfachen Bash-Skript zu ipset hinzufügen:

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

So überprüfen Sie den Lauf:

ipset -L autoban

Danke für die Antwort. Hier ist ein kurzes Tutorial über ipset für diejenigen, die nicht mit ipset vertraut sind (wie ich 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.