GeoIP Blocking unter Ubuntu 20.04 LTS

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

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!