Pivert's Blog

7. Shorewall : Filtrez sur la géolocalisation / GeoIP


Reading Time: < 1 minute

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.

Like it ?

Get notified on new posts (max 1 / month)
Soyez informés lors des prochains articles

Leave a Reply

Your email address will not be published. Required fields are marked *