Hallo Freunde der Sonne,
für bestimmte Dienste die nur für ein bestimmtes Einzugsgebiet verfügbar seien sollen,
kann man es sich auch leichter machen – mit GeoIP-Listen in der Firewall.
GeoIP Blocking unter Ubuntu 20.04 LTS
Quellen
- Ultramookie.com – GeoIP Blocking Ubuntu 20.04LTS · ultramookie | Steve Mookie Kong
Anleitung
Zwei weitere Handgriffe waren notwendig um die Anleitung von Ultramookie für mich lauffähig zu machen,
und los geht es:
Voraussetzungen installieren
apt-get install curl unzip perl apt-get install xtables-addons-common apt-get install libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl
Vorbereitung zum GeoIP-Tabellen herunterladen
mkdir /usr/share/xt_geoip
Download-Skript überarbeiten:
nano /usr/local/bin/geo-update.sh
Folgende Inhalte sollten zu sehen sein:
#!/bin/bash MON=$(date +"%m") YR=$(date +"%Y") wget https://download.db-ip.com/free/dbip-country-lite-${YR}-${MON}.csv.gz -O /usr/share/xt_geoip/dbip-country-lite.csv.gz gunzip /usr/share/xt_geoip/dbip-country-lite.csv.gz /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip/ -S /usr/share/xt_geoip/ rm /usr/share/xt_geoip/dbip-country-lite.csv
Skript ausführbar machen und Download starten:
chmod ugo+x /usr/local/bin/geo-update.sh /usr/local/bin/geo-update.sh
Ausführung validieren:
lsmod | grep ^xt_geoip modprobe xt_geoip
Ausgabe:
xt_geoip 16384 2
Zusätzliche Regel UFW-IPv4 für SSH und SMTP (/etc/ufw/before.rules):
# allow sshd without geoip #-A ufw-bofore-input -p tcp --dport 22 -j ACCEPT # with geoip -A ufw-before-input -m geoip -p tcp -m multiport --dports 22,25 --src-cc DE -j ACCEPT
Zusätzliche Regel UFW-IPv6 für SSH und SMTP (/etc/ufw/before6.rules):
# allow sshd without geoip #-A ufw-bofore-input -p tcp --dport 22 -j ACCEPT # with geoip -A ufw6-before-input -m geoip -p tcp -m multiport --dports 22,25 --src-cc DE -j ACCEPT
Anlegen von Regeln in UFW (bei mir genutzt, Ultramookie hat aber auch die andere in seiner Anleitung):
ufw enable nano /etc/ufw/before.rules nano /etc/ufw/before6.rules systemctl restart ufw ufw status verbose
Nach einem Neustart alles wie konfiguriert – läuft!