Shorewall permet d’exploiter le filtrage d’IP par geo-localisation de l’IP fourni par Netfilter.
Pour cela, il faut d’abord installer quelques outils, et surtout la base de donnée des plages d’IP et leur localisation géographique connue.
Voici la liste des commandes qui devrait vous permettra d’avoir une base de données exploitable sur Ubuntu 22.04 / Debian 11.
Ici nous considérons que vous êtes root, donc sudo -i
avant d’exécuter:
apt -y install curl unzip perl libxtables-dev xtables-addons-common libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl pkg-config cd /tmp wget -O dbip-country-lite.csv.gz "https://download.db-ip.com/free/dbip-country-lite-$(date +'%Y-%m').csv.gz" gunzip dbip-country-lite.csv.gz mkdir -p /usr/share/xt_geoip /usr/libexec/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
Vous devriez voir quelque chose comme ceci:
root@burns2:/tmp# /usr/libexec/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv 599973 entries total 103 IPv4 ranges for AD 65 IPv6 ranges for AD 877 IPv4 ranges for AE 746 IPv6 ranges for AE 212 IPv4 ranges for AF 151 IPv6 ranges for AF 71 IPv4 ranges for AG ....
Vérifiez également que les fichiers .ipv6
et .ipv4
ont bien été créés dans /usr/share/xt_geoip
Ensuite, vérifiez et mettez à jour si nécessaire la configuration dans shorewall.conf
:
# grep GEOIP /etc/shorewall/shorewall.conf GEOIPDIR=/usr/share/xt_geoip/
Vous pouvez ensuite utiliser cette syntaxe dans le /etc/shorewall/rules
:
DNAT net:^[BE,LU] pve:192.168.168.1:8080 tcp 80 DNAT net:^[FR] pve:192.168.168.2:8080 tcp 80 DNAT net:^[UK,US] pve:192.168.168.3:8080 tcp 80
La syntaxe doit être similaire à l’exemple. Dans le cas présenté:
- Les utilisateurs proventant d’IPs Belges ou Luxembourgeoises seront redirigées sur le port 8080 du premier serveur (en .1)
- Les utilisateurs proventant d’IPs Françaises seront redirigées sur le port 8080 du premier serveur (en .2)
- Les utilisateurs proventant d’IPs Anglaises ou Américaines seront redirigées sur le port 8080 du premier serveur (en .3)
- Les autres utilisateurs ne seront pas redirigés, et les paquets arriveront dans la policy par défaut de ces zones si aucune autre règle ne correspond.