GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Blockieren Sie den IP-Bereich von Ländern mit GeoIP und iptables

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

Linux
  1. Blockieren des gesamten Datenverkehrs aus einzelnen Ländern mit IPSet und IPTables

  2. Ein einfaches iptables-Firewall-Skript, um alle Ports außer Port 80 zu blockieren und bestimmten IPs Port 22 zuzuweisen

  3. Trimmen mit Lvm und Dm-Crypt?

  4. Laufendes Skript mit „. “ Und mit „Quelle“?

  5. Iptables und transparente Proxys?

So installieren Sie Nginx mit Lets encrypt und erhalten A+ von SSLLabs Test

Blockieren von Hosts Blacklist und iptables

Verwenden Sie Ihren Chromecast von Linux und MacOS mit mkchromecast

Verwenden Sie iptables mit CentOS 7

CentOS / RHEL :So blockieren Sie eingehende und ausgehende Ports mit iptables

FTP mit IPTables zulassen