Ich habe mich gerade auf einem GitLab-Server angemeldet und festgestellt, dass seit meiner letzten Überprüfung des Servers 18.974 Anmeldungen fehlgeschlagen sind - fast 5 Tage. Ich habe die IPs überprüft und es scheint, dass fast alle von ihnen aus China stammten und versuchten, Zugang zu SSH und Brute Force zu erhalten. Ich fing an, einige IPs zu blockieren, aber dann wurde mir klar, dass es eine enorme Zeitverschwendung ist und eine bessere Idee wäre, das ganze Land zu blockieren.
Gibt es eine Möglichkeit, ALLES China oder ein anderes Land mit iptables zu blockieren?
Ich habe einige Artikel im Internet gefunden, aber fast alle sind Bash-Skripte. Ich bin ein Neuling unter Linux, daher verstehe ich all diese Skripte nicht wirklich. Ich finde iptables wirklich interessant und möchte mehr darüber erfahren.
Irgendwelche Ideen ? Vielen Dank!
Antworten:
Mithilfe von iptables können Bösewichte für ssh mithilfe des
recent
Moduls automatisch identifiziert und anschließend blockiert werden. Das folgende Segment muss nach Ihrer generischenESTABLISHED,RELATED
Zeile stehen:Das jüngste Problem (in den letzten ein oder zwei Jahren) mit China ist, dass sie sehr klug geworden sind und sehr oft, sobald sie von einer IP-Adresse blockiert werden, einfach zu einer anderen im selben Subnetz wechseln und fortfahren. Dies birgt das Risiko, dass die standardmäßigen letzten Tabelleneinträge nicht mehr ausreichen (ich denke, der Standardwert ist 200). Ich überwache dies und schaue dann nach dem tatsächlichen IP-Segment und blockiere das gesamte Segment dauerhaft. In meinem Fall ist mir Kollateralschaden egal, dh jemanden zu blockieren, der unschuldig ist:
Wo oben:
Hier können Sie die gesamte Liste der IP-Adressen für China oder ein beliebiges Land in iptables oder einem anderen Format abrufen . Die Liste ist jedoch überraschend lang und ziemlich dynamisch. Ich selbst habe beschlossen, nicht die gesamte Liste zu blockieren.
quelle
China-Block mit ipset
Sie können Ihren iptables nicht manuell einige tausend IP-Adressen hinzufügen, und selbst eine automatische Ausführung ist eine schlechte Idee, da dies zu einer hohen CPU-Auslastung führen kann (oder wie ich gelesen habe). Stattdessen können wir ipset verwenden, das für diese Art von Dingen entwickelt wurde. ipset verarbeitet große Listen von IP-Adressen. Sie erstellen einfach eine Liste und weisen iptables an, diese Liste in einer Regel zu verwenden.
Hinweis; Ich gehe davon aus, dass das Ganze als root ausgeführt wird. Passen Sie dies entsprechend an, wenn Ihr System auf sudo basiert.
Als nächstes schrieb ich ein kleines Bash-Skript, um die ganze Arbeit zu erledigen, die Sie anhand der darin enthaltenen Kommentare verstehen sollten. Erstellen Sie eine Datei:
Folgendes möchten Sie einfügen:
Speicher die Datei. Machen Sie es ausführbar:
Dies hat noch nichts getan, aber es wird in einer Minute, wenn wir das Skript ausführen. Zuerst müssen wir iptables eine Regel hinzufügen, die auf diese neue ipset-Liste verweist, die das obige Skript definiert:
Fügen Sie die folgende Zeile hinzu:
Speicher die Datei. Um klar zu sein, sieht meine vollständige iptables.firewall.rules jetzt so aus:
Im Moment hat sich am Server nichts geändert, da keine neuen Regeln angewendet wurden. Führen Sie dazu das Skript block-china.sh aus:
Dies sollte eine Ausgabe anzeigen, da eine neue Liste chinesischer IP-Adressen abgerufen wird. Nach einigen Sekunden wird der Vorgang abgeschlossen und Sie kehren zu einer Eingabeaufforderung zurück.
Führen Sie Folgendes aus, um zu testen, ob es funktioniert hat:
Sie sollten jetzt eine neue Regel sehen, die China blockiert - die Ausgabe sollte so aussehen:
Fast fertig! Dies funktioniert und wird auch weiterhin für Neustarts verwendet. Die IP-Adressen ändern sich jedoch und diese Liste wird mit der Zeit veraltet. Wenn Sie eine aktualisierte Liste von IPs abrufen und anwenden möchten, können Sie das Skript block-china.sh einfach erneut ausführen.
Wir können die Maschine auch so einstellen, dass dies automatisch über einen Cron-Job erfolgt:
Fügen Sie eine Zeile wie die folgende hinzu:
Dies wird /etc/block-china.sh jeden Tag um 5 Uhr morgens ausführen. Der Benutzer, der das Skript ausführt, muss root sein oder über Root-Rechte verfügen.
Quelle
quelle
wget http://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
Möglicherweise möchten Sie etwas wie fail2ban installieren, damit es IPs blockiert, die versuchen, sich bei Ihrem Server anzumelden, und fehlschlagen.
quelle
Sie können das Geoip-Modul für iptables verwenden: https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/
quelle
Sie verwenden die IP2Location Firewall List , um iptables für China zu generieren.
Die Datei hat das folgende Format. Führen Sie es in der Shell aus und Sie sollten alle China-IP-Adressen blockieren.
quelle