IP´s über Geoip blocken
- By : Marcus
- Category : Linux, Sicherheit

Man kennt es, der Server wird angegriffen und der Angriff erfolgt recht leicht erkennbar über ein spezielles Land.
Nun blockt man die ggf. angreifende IP, aber so schnell wie man diese geblockt wird, erhält man 10 neue angreifende IP´s aus dem gleichen Land.
Dies deutet in der Regel darauf hin, dass es sich um einen mehr oder minder gezielten Angriff handelt, welcher lokal ausgeführt wird.
Um dieses Problem nun zu lösen kann man folgende Schritte nutzen.
Warnung: Jeder Eintrag geht auf die IP-Table Werte! Sollten Sie hier also harte Beschränkungen haben, wird diese Lösung nur bedingt funktionieren! Diese Lösung ist vor allem für dedizierte Server und Server auf KVM Virtualisierung geeignet, welche keine UBC Beschränkungen haben!
Installieren Sie die notwendigen Pakete, falls noch nicht installiert:
Debian Distros (Debian, Ubuntu, etc..):
# apt-get update && apt-get upgrade
# apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config
RedHat Distros (CentOS, RHEL, etc…):
# yum update
# yum install gcc-c++ make automake kernel-devel-uname -r
wget unzip iptables-devel perl-Text-CSV_XS
Danach machen wir uns daran, die notwendige Erweiterung zu installieren, welche “Xtables-addons” heißt:
(Bitte prüfen Sie vorher auf Sourceforge ob es ggf. eine neuere Version gibt)
# 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
Für RedHat Distros müssen wir zusätzlich danach noch folgendes ausführen:
# chcon -vR –user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR –type=lib_t /lib64/xtables/*.so
Als nächstes müssen wir dem System beibringen zu erkennen, wo welche IP herkommt. Hierfür können wir die kostenfreie MaxMind Datenbank nutzen. Den Download führt das gerade installierte Addon entsprechend aus, wenn alles korrekt ist.
Danach müssen wir unsere Liste einbinden, damit diese dann auch genutzt werden kann:
# cd geoip
# ./xt_geoip_dl
# ./xt_geoip_build GeoIPCountryWhois.csv
# mkdir -p /usr/share/xt_geoip/
# cp -r {BE,LE} /usr/share/xt_geoip/
Jetzt kommen wir zu dem Punkt, warum wir uns das Ganze hier antun. Die entsprechende Hinterlegung der entsprechenden Länder:
Der Code ist prinzipiell nach folgendem System aufgebaut:
iptables -m geoip –src-cc country[,country…] –dst-cc country[,country…]
Wenn wir beispielsweise Traffic aus Indien und China aussperren möchten, wäre der Code:
# iptables -I INPUT -m geoip –src-cc IN,CN -j DROP
Wenn wir stattdessen jeden Traffic, welcher NICHT aus beispielsweise den USA kommt, sperren möchten, wäre der Code folgendermaßen:
# iptables -I INPUT -m geoip ! –src-cc US -j DROP
Wir können auch ausgehenden Traffic sperren, hier ein Beispiel mit Indien:
# iptables -A OUTPUT -m geoip –dst-cc IN -j DROP
Sollten wir firewalld als Frontend nutzen, wären die Codes folgendermaßen:
# firewall-cmd –direct –add-rule ipv4 filter INPUT 0 -m geoip –src-cc IN,UN -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 IN -j DROP
Viel Erfolg beim abwehren der üblichen Angriffe wie Brute Force, DOS Attacken und ähnlichem. Sollte alles korrekt sein, werden Sie je nach Ihren Einstellungen dann entsprechend Ihre “Ruhe” aus den entsprechenden IP Bereichen haben. 🙂
Ideengeber und Befehle teilweise entnommen von: https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/