In diesem Artikel wird beschrieben, wie Sie Datenverkehr blockieren, der von bestimmten Länder-IPs stammt, z. B. mithilfe der GeoIP-Datenbank und Linux®-iptables. Sie können es auch verwenden, um DOS- und DDoS-Angriffe aus bestimmten Ländern zu verhindern.
Voraussetzungen
Stellen Sie sicher, dass das GeoIP-Modul mit iptables-addons installiert ist.
GeoIP ist eine Sammlung von IP-Adressen, die den geografischen Standorten entsprechen, die den IP-Adressen zugeordnet sind, die einer bestimmten Organisation, Stadt, einem Staat und einem Land zugeordnet sind.
iptables ist ein Befehlszeilen-Firewall-Dienstprogramm, das Richtlinienketten verwendet, um Datenverkehr zuzulassen oder zu blockieren. Wenn eine Verbindung versucht, sich auf Ihrem System aufzubauen, sucht iptables in seiner Liste nach einer passenden Regel. Wenn es keine findet, greift es auf die Standardaktion zurück.
Auch mit Hilfe eines Moduls namens xt_geoip , die aus einem iptables besteht Erweiterung (xtables-addon ) und die GeoIP Datenbank können wir eine länderbasierte Verkehrsfilterung durchführen, um den Verkehr aus einem bestimmten Land zu blockieren oder zuzulassen.
Aktualisiere und installiere Abhängigkeiten
Sie müssen Ihr Linux-System aktualisieren und die erforderlichen xtables-addons-Abhängigkeiten installieren. Führen Sie den folgenden Befehl aus, der der Distribution entspricht, die Sie auf Ihrem Computer ausführen.
Debian-basiertes System (Debian®-, Ubuntu®-Betriebssystem)
apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config# ./configure
RedHat-basiertes System (CentOS®, RHEL®, Fedora®)
yum update # yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS# make
Xtables-addons installieren
Als nächstes installieren Sie xtables-addons auf Ihrer Maschine. Laden Sie den neuesten Tarball von der offiziellen Xtables-Addons-Projektseite mit wget herunter .
Nachdem Sie die Datei heruntergeladen haben, extrahieren Sie den Tarball. Dann kompilieren und installieren Sie es auf Ihrem Rechner.
# wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
# tar xf xtables-addons-2.13.tar.xz
# cd xtables-addons-2.13
# ./configure
# make
# make install
SeLinux das Laden von Modulen erlauben (RedHat-basiertes System)
RedHat®-basierte Linux-Distributionen (wie CentOS, RHEL, Fedora) haben selinux standardmäßig aktiviert, aber Sie müssen selinux anpassen Politik. Wenn Sie die folgenden Befehle nicht ausführen, seLinux verhindert iptables vom Laden der xt_geoip Modul.
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
Installieren Sie die GeoIP-Datenbank
Das Modul namens xt_geoip kommt mit den xtables-addons Erweiterung, die die GeoIP herunterlädt Datenbank von MaxMind® und wandelt sie in ein binäres Arrangement um, das von xt_geoip erkannt wird . Sie müssen bauen und sich zum erforderlichen Pfad bewegen. In diesem Beispiel lautet der Pfad /usr/share/xt_geoip/
# cd geoip
# ./xt_geoip_dl
# ./xt_geoip_build GeoIPCountryWhois.csv
# mkdir -p /usr/share/xt_geoip/
# cp -r {BE,LE} /usr/share/xt_geoip/
Verkehr von und zu einem Land blockieren
Sie können jetzt den geoip verwenden -Modul entweder mit Ihrem Firewall-Dienstprogramm iptables , oder firewalld .
Iptables verwenden
Der Abschnitt stellt die grundlegende Syntax für die Verwendung von iptables bereit und die geoip Modul zum Blockieren von Datenverkehr, der aus einem Land stammt oder für dieses Land bestimmt ist. Sie müssen den aus zwei Buchstaben bestehenden ISO3166-Code anstelle des Landes verwenden. Verwenden Sie beispielsweise RU für Russische Föderation, US für die Vereinigten Staaten IN für Indien,BR für Brasilien usw.
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
Um eingehenden Datenverkehr aus Kanada (CA) und den Vereinigten Staaten (US) zu blockieren, verwenden Sie die folgenden iptables Befehl:
# iptables -I INPUT -m geoip --src-cc CA,US -j DROP
Führen Sie den folgenden Befehl aus, um den gesamten eingehenden Nicht-US-Datenverkehr auf Ihrem Server zu blockieren:
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
Führen Sie den folgenden Befehl aus, um den nach China (CN) gerichteten ausgehenden Datenverkehr zu blockieren:
# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Firewalld verwenden
Wenn Sie systemd ausführen -basiertes System und haben firewalld als Frontend-Controller für iptables , können Sie die folgende firewalld verwenden Befehle zum Blockieren des Datenverkehrs:
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc CA,US -j DROP
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
# firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP