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