dynamisches Blacklisting:

dynamisches Blacklisting:

Ich versuche, ICMP-Pings von einem Server zu blockieren, wenn die Paketanzahl größer als 2 pro Sekunde ist (Paketanzahl zum Testen reduziert). Ich habe diese beiden Regeln separat ausprobiert, aber sie scheinen nicht zu helfen:

iptables -A INPUT -p icmp --icmp-type echo-request -m recent --update --seconds 1 --hitcount 2 -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT --match limit --limit 2/s --limit-burst 2

was ist falsch an diesen Regeln?

Ich pinge von einem anderen Server aus mit dem folgenden Befehl, aber der Ping erhält weiterhin Antworten -

ping -n -i 0.2 192.168.2.86

auch wenn ich die iptables -nvL-Ausgabe überprüfe, erhöht sich die Paketanzahl für die Regel nicht …

Die verwendete Maschine ist CentOS 6.8

Einige Fortschritte: Ich habe am Ende der Tabelle eine Standard-Drop-Regel hinzugefügt:

iptables -A INPUT -p icmp -m icmp -j DROP

und dann das Hinzufügen dieser Regel Pings gelöscht, die das Limit überschritten haben

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/second -j ACCEPT -m comment --comment "icmprule1"

immer noch nicht in der Lage, den Server vollständig zu blockieren.

Antwort1

Hier geht's: Hinzufügen einer sekundären ICMPSCAN-Kette (und Platzieren der Sprungregel an der ersten Position der INPUT-Kette):

iptables -N ICMPSCAN
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j DROP

Hinweis: Beide Set-/Update-Regeln könnten stattdessen in INPUT ohne die sekundäre Regel gesetzt werden, aber ich ziehe es vor, solche Regeln in getrennten Ketten zu platzieren.

Hinweis 2: Nach --set könnte eine zusätzliche Regel hinzugefügt werden, um das Ereignis zu protokollieren …

dynamisches Blacklisting:

Um jetzt eine permanente dynamische Blacklist basierend auf dem jüngsten Hitcount-Trigger hinzuzufügen, können wir die Vorteile der ipset-Funktion nutzen. ipset ist für CentOS 6.x verfügbar und iptables ist ipset-fähig, aber Sie müssen es möglicherweise zuerst installieren.

Hier die iptables/ipset-Regeln, die Ihren Anforderungen entsprechen:

iptables -F ICMPSCAN
iptables -N ICMPSCAN
ipset -N banned_hosts iphash
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j SET --add-set banned_hosts src
iptables -A ICMPSCAN -m set --set banned_hosts src -j DROP

Sie können den aktuellen Inhalt der Sperrliste mithilfe der IPSET-Liste auflisten, zum Beispiel:

# ipset list banned_hosts
Name: banned_hosts
Type: hash:ip
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 8284
References: 2
Members:
192.168.122.1

und verwalten Sie die Setliste, um beispielsweise eine IP-Adresse zu entfernen, wie:

# ipset del banned_hosts 192.168.122.1

Siehe auch diese Seite:http://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

verwandte Informationen