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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
....
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 ....
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 :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# grep GEOIP /etc/shorewall/shorewall.conf
GEOIPDIR=/usr/share/xt_geoip/
# grep GEOIP /etc/shorewall/shorewall.conf GEOIPDIR=/usr/share/xt_geoip/
# grep GEOIP /etc/shorewall/shorewall.conf
GEOIPDIR=/usr/share/xt_geoip/

Vous pouvez ensuite utiliser cette syntaxe dans le /etc/shorewall/rules :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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 *

Anti-Robot Verification
FriendlyCaptcha ⇗