Zuvor haben wir gelernt, wie wir ein bestimmtes Land mit GeoIP einschränken oder zulassen können, aber in diesem Artikel behandeln wir, wie wir große IP-Bereiche mit dem ipset-Modul mit iptables blockieren können. IPset ist ein befehlszeilenbasiertes Dienstprogramm, das verwendet wird, um das Framework namens IP-Sets innerhalb des Linux-Kernels zu verwalten. Ein IP-Set kann IP-Adressen, Netzwerke, (TCP/UDP)-Portnummern, MAC-Adressen, Schnittstellennamen oder Kombinationen davon so speichern, dass beim Abgleichen eines Eintrags mit einem Set blitzschnell sichergestellt wird. Es ist eine assoziative Anwendung für die iptables Linux-Firewall, die es uns ermöglicht, schnell und einfach Regeln einzurichten, um eine Reihe von IP-Adressen zu blockieren. Hier werden wir sehen, wie wir das ipset-Modul mit iptables verwenden können, um einen großen Bereich von IP-Adressen in unserem Linux-basierten Computer zu blockieren.
Aktualisierung unseres Systems
Zuerst müssen wir unsere Pakete auf unserem Linux-Rechner aktualisieren, damit unsere Softwarepakete auf dem neuesten Stand sind. Um unser System zu aktualisieren, müssen wir sicherstellen, dass wir als sudo oder Root-Benutzer. Um zu zu wechseln sudo oder Root-Zugriff führen wir den folgenden Befehl aus.
$ sudo -s
Sobald wir im Root sind, werden wir jetzt mit der Aktualisierung und Aktualisierung unseres Systems fortfahren.
Debian-basiertes System
# apt update && apt upgrade
Redhat-basiertes System
# yum update
IPset installieren
Die meisten Linux-Distributionen wie Ubuntu, Debian werden heutzutage mit vorinstalliertem ipset geliefert. Aber einige Distributionen wie Centos sind nicht vorinstalliert, also müssen wir sie darauf installieren. Wir können es installieren, indem wir den folgenden Befehl ausführen, je nachdem, welche Distribution Sie ausführen.
Debian-basiertes System
# apt install ipset
Redhat-basiertes System
# yum install ipset
IP-Sets erstellen
Da wir nun ipset auf unserem Computer installiert haben, werden wir nun mit dem Erstellen der IP-Sets fortfahren. Hier müssen wir ein ipset erstellen, das die Netzwerk-Subnetze enthält, die wir blockieren oder einschränken möchten. Zuerst müssen wir also die Liste der Netzwerk-Subnetze abrufen, die wir zu den IP-Sets hinzufügen möchten. Um die neuesten Netzwerk-Subnetze zu erhalten, verwenden wir eine der beliebtesten Sites Länder-IP-Sperren und wir können die Listen der Subnetze von der Länderauswahl Seite der Website. Hier haben wir einige Netzwerk-Subnetze Chinas zu Testzwecken ausgewählt.
1.0.1.0/24
1.0.2.0/23
1.0.8.0/21
1.0.32.0/19
1.1.0.0/24
1.1.2.0/23
1.10.8.0/23
1.202.0.0/15
5.10.68.240/29
5.10.70.40/30
5.10.72.16/29
Hier ist ein Beispiel für Netzwerk-Subnetze, die wir in diesem Artikel blockieren werden, aber in der Praxis haben wir eine große Anzahl von Subnetzen. Wir verwenden also eine beliebige Skript-/Programmiersprache und generieren die Befehlsliste wie folgt.
# ipset create countryblock nethash
# ipset add countryblock 1.0.1.0/24
# ipset add countryblock 1.0.2.0/23
# ipset add countryblock 1.0.8.0/21
# ipset add countryblock 1.1.0.0/24
# ipset add countryblock 1.1.2.0/23
# ipset add countryblock 1.10.8.0/23
# ipset add countryblock 1.202.0.0/15
# ipset add countryblock 5.10.68.240/29
# ipset add countryblock 5.10.70.40/30
# ipset add countryblock 5.10.72.16/29
Anwenden des IP-Sets
Jetzt, da unsere IP-Sets fertig sind, wenden wir diese IP-Sets an, um mit dem ipset-Modul mit iptables blockiert zu werden.
# iptables -A INPUT -m set --match-set countryblock src -j DROP
Der obige Befehl blockiert den Verkehr, der aus IP-Bereichen stammt, die durch die Subnetze in der oben generierten Menge namens countryblock definiert sind. Alle dort aufgeführten IPs werden also gesperrt.
Die Regeln dauerhaft anwenden
Wenn wir bereit sind, unsere Konfigurationen und Regeln zu testen, möchten wir die Änderungen möglicherweise persistent machen, damit die Regeln bei jedem Neustart angewendet werden. Dazu müssen wir die folgenden Befehle für unseren Firewall-Controller ausführen.
Auf Debian-basiertem System
# ipset save > /etc/ipset.up.rules
# iptables-save > /etc/iptables/rules.v4
Sobald wir den obigen Befehl ausführen, um die Regeln zu speichern, laden wir die Regeln jetzt bei jedem Neustart, indem wir die folgenden Zeilen in hinzufügen /etc/rc.local .
ipset restore < /etc/ipset.up.rules
iptables-restore < /etc/iptables/rules.v4
Auf RHEL-basiertem System
#ipset save > /etc/ipset.up.rules
# iptables-save > /etc/sysconfig/iptables
Sobald wir die Regeln von ipset und iptables gespeichert haben, fügen wir nun ähnlich wie bei Debian die Wiederherstellungsbefehle hinzu. Wir fügen einfach die folgenden Befehle hinzu /etc/rc.local Datei.
ipset restore < /etc/ipset.up.rules
iptables-restore < /etc/sysconfig/iptables
Auf diese Weise können wir bestimmte IP-Blöcke mithilfe des ipset-Moduls mit iptables blockieren. Wir können IP-Sets verschiedener Länder erstellen, damit wir sie je nach Bedarf anwenden können. Diese Methode ist sehr effizient, wenn wir einen bestimmten Verkehr blockieren müssen, der aus einem bestimmten Land oder einer bestimmten Region stammt, aber die benötigten IP-Bereiche zulassen müssen. Es gibt viele Firewall- und iptables-Module dafür, aber es ist ziemlich einfach, schnell und praktisch zu bedienen. Wenn Sie also Fragen, Anregungen oder Feedback haben, schreiben Sie diese bitte in das Kommentarfeld unten. Danke schön ! Genießen 🙂