Configuration du blocage IP avec le reverse proxy SWAG

[et_pb_section admin_label= »section »] [et_pb_row admin_label= »row »] [et_pb_column type= »4_4″][et_pb_text admin_label= »Text »]

Introduction

Dans un monde connecté où la sécurité et la confidentialité sont essentielles, restreindre l’accès à une application uniquement aux utilisateurs situés dans un certain pays peut être une mesure cruciale. Ce guide détaille les étapes nécessaires pour configurer la géolocalisation dans le but de limiter l’accès à une application exclusivement depuis le pays de votre choix avec le reverse proxy SWAG. Nous avons aborder l’installation de SWAG avec docker compose dans un précédent article.

Configuration de la base de données MaxMind

SWAG va se baser sur une base de données MaxMind qui est gratuite et qui va lui permettre de localiser la provenance d’une requête.

La première étape consistera à s’enregistrer sur le site de MaxMind à cet URL : https://www.maxmind.com/en/geolite2/signup

Une fois connecté, on crée une clé de licence :

Une image contenant texte, Police, nombre, logiciel

Description générée automatiquement

Une clé sera affiché, enregistrez-la dans un endroit sécurisé car elle ne sera visible qu’une seule fois.

Ensuite on peut télécharger la base de données « GeoLite2.City » sur l’interface web

Une image contenant texte, nombre, logiciel, Police

Description générée automatiquement

Une fois téléchargé, vous pouvez utiliser WinSCP ou n’importe quel autre outil de transfert de fichier

Le fichier doit être envoyé dans le chemin suivant de votre configuration SWAG :

~/docker/swag/config/geoip2db

Une fois déposé, on peut décompresser le fichier :

sudo tar xvf GeoLite2-City_20240329.tar.gz

On met le fichier comprenant la base de données au niveau inférieur

sudo mv GeoLite2-City_20240329/GeoLite2-City.mmdb ./

Puis on nettoie ce qui ne nous intéresse pas

sudo rm GeoLite2-City_*

Configuration de SWAG

Il est nécessaire d’ajouter un mods docker au fichier docker-compose.yml pour prendre en compte la géolocalisation. Nous allons donc ajouter ces 2 lignes à notre fichier de configuration dans l’onglet variable d’environnement :

DOCKER_MODS=linuxserver/mods:swag-maxmind
MAXMINDDB_LICENSE_KEY=<license-key>

On peut ensuite supprimer et recréer le conteneur :

sudo docker compose down
sudo docker compose up -d

Dans le fichier /config/nginx/nginx.conf nous devons ajouter en dessous de la section http la ligne suivante :

include /config/nginx/maxmind.conf;
Une image contenant texte, capture d’écran, Police

Description générée automatiquement

Ensuite on édite le fichier /config/nginx/maxmind.conf pour configurer les pays/réseaux que l’on souhaite autoriser :

Dans mon cas, je ne souhaite que la France alors que le code pays sera FR.

La ligne « default no » signifie que par défaut on refuse tous, et la ligne « FR yes » signifie qu’on autorise la connexion depuis la France. Je peux également spécifier les sous réseaux que je possède chez moi

Une image contenant texte, capture d’écran, Police

Description générée automatiquement

La configuration géographique est effectuée. Pour le mettre en pratique, je dois appliquer les règles dans le fichier d’une de mes applications, dans mon cas Jellyfin.

On édite donc le fichier qui contient la configuration de Jellyfin :

sudo nano nginx/proxy-confs/jellyfin.subdomain.conf

Et on ajoute les lignes suivantes :

if ($lan-ip = yes) { set $geo-whitelist yes; }
if ($geo-whitelist = no) { return 404; }

On redémarre ensuite le conteneur et on vérifie qu’il n’y a pas d’erreur dans les logs de ce dernier :

sudo docker restart swag && sudo docker logs swag

Phase de test

Je possède un VPN qui me permet de me connecter à peu près partout dans le monde, il me sera donc assez aisé de tester la connexion à mon application en effectuant une requête depuis un autre pays.

Je test de me connecter depuis l’Italie par exemple avec mon VPN :

Une image contenant texte, capture d’écran, Police, conception

Description générée automatiquement

En essayant de joindre mon serveur depuis l’URL, le retour qui m’est affiché est une erreur 404 :

Une image contenant capture d’écran, texte, Police, blanc

Description générée automatiquement

Astuce si plusieurs mods

Si comme moi vous disposez de plusieurs mods, vous devez séparer les différents mods avec un pipe comme ceci :

- DOCKER_MODS=linuxserver/mods:swag-dashboard|linuxserver/mods:swag-maxmind

Conclusion

La mise en place de la géolocalisation pour restreindre l’accès à une application est une démarche importante dans la sécurisation des systèmes informatiques, cela permet de restreindre considérablement la zone d’attaque. En suivant les étapes de cet article, vous pourrez vous-même intégrer efficacement cette fonctionnalité très intéressante au reverse proxy SWAG.

[/et_pb_text][/et_pb_column] [/et_pb_row] [/et_pb_section]

2 réflexions sur “Configuration du blocage IP avec le reverse proxy SWAG”

  1. Merci pour ce tuto 🙂

    Par contre il semblerait que maintenant une nouvelle variable d’environnement soit demandée : MAXMINDDB_USER_ID
    (récupérable dans « My Account » en haut a droit du site MaxMind

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut