Vous avez peut-être déjà entendu parler de SWAG (Secure Web Application Gateway ou en français Passerelle d’Application Web Sécurisée). SWAG est un projet open source maintenu par la communauté Linuxserver. Regardons ensemble comment on peut l’utiliser et l’installer sur un serveur ou NAS…
SWAG : Serveur Web & HTTPS
La fonction première de SWAG, c’est de mettre en place rapidement un serveur Web (NGINX + PHP) avec HTTPS via la génération d’un certificat Let’s Encrypt. Il sera possible d’utiliser un nom de domaine acheté chez un registrar/bureau d’enregistrement (comme Infomaniak, OVH, Gandi… ) ou un nom de domaine gratuit chez Duck DNS.
Pour la génération du certificat HTTPS, plusieurs solutions sont proposées. Par défaut, c’est une validation classique grâce aux ports 80 et 443 du serveur Web. Cependant, il est également possible de valider votre certificat via DNS. Pour cela, il faut posséder un nom de domaine enregistré chez un registrar/bureau d’enregistrement compatible (voir la liste ici). C’est obligatoire pour la génération de certificat wildcard*, sauf pour un domaine Duck DNS.
* un certificat wildcard permet, avec un seul certificat, de couvrir l’ensemble de vos sous-domaines
SWAG : Proxy inverse
Autre fonction de SWAG, il permet de mettre en place simplement des proxys inversés (en anglais reverse proxy) pour vos applications, conteneurs docker,etc. afin de les rendre facilement accessible par internet.
Prenons l’exemple avec un article de FX sur Uptime Kuma. Une fois installé, votre accès se fait via l’ip de la machine + port comme dans l’exemple de l’article : http://192.168.1.100:3001 en local. Pour un accès depuis l’extérieur, l’adresse sera http://VOTRE_IP_PUBLIC:3001. En plus de ne pas être simple à retenir (surtout si votre IP est changeante), il faudra également rediriger le port 3001 de votre box/routeur vers la machine qui héberge Uptime Kuma.
Le reverse proxy permet d’utiliser simplement un sous-domaine (de votre nom de domaine) pour rediriger votre l’application sans ouvrir de port supplémentaire. Par exemple avec le domaine cachem.fr, vous pourrez transformer cachem.fr:3001 en status.cachem.fr.
SWAG : Sécurisation des accès externes
Pour la sécurisation des accès externes, SWAG propose la protection via une authentification HTTP (avec la génération d’un fichier htpasswd). Les modèles de configuration des proxy inverses sont également pré-configurés pour l’identification via Authelia ou un annuaire LDAP.
Fail2ban
Par défaut, SWAG est configuré avec Fail2ban. Celui-ci permet de prévenir des éventuelles tentatives d’intrusion. 5 prisons* (jails) sont préconfigurées : nginx-http-auth, nginx-badbots, nginx-botsearch, nginx-deny et nginx-unauthorized.
* Il faut voir une « prison » comme un service de fail2ban contenant des règles définies. Si un visiteur ne respecte pas ces règles, alors son IP est alors vue comme suspect et fail2ban exécute le ou les actions définies ( bannissement, … ).
Blocage géographique
Avec l’aide du mod DBIP, on peut intégrer un filtrage des visiteurs via la géolocalisation des adresses IPs. Il est possible de filtrer géographiquement les visiteurs sur certains de nos services. Par exemple, on souhaite que notre page de statuts de Kuma soit accessible à tous, mais que l’espace d’administration de notre site soit réservé aux utilisateurs avec une IP française.
SWAG : Tableau de Bord
Aussi par l’intermédiaire du mod Dashboard, vous pouvez ajouter une interface graphique à SWAG. Celle-ci permet de vérifier le fonctionnement des proxys inverses, de Fail2ban… mais aussi la disponibilité d’éventuelle mise à jour des fichiers du serveur NGINX.
En plus de cela, le tableau de bord vous apportera tout un tas de statistiques en relation avec le serveur web et les proxys inverses configurés. Par exemple, le nombre de requêtes, de visiteurs, les codes d’erreurs éventuellement rencontrés, les statistiques de géolocalisation si vous avez installé le mod DBIP…
Comment installer SWAG sur mon NAS/Serveur ?
L’installation de SWAG se fait via Docker. Il est compatible avec les architectures x86_64, arm64 et azmhf. Pour plus d’informations, rendez-vous sur la documentation officielle de SWAG ou sur leur repos github (en anglais).
Vous trouvez également sur le Forum des NAS, dans la section DIY, un tuto en français sur l’installation et la configuration de SWAG : [Tuto] Installer SWAG en Docker (Reverse Proxy).
Mon avis
J’utilise SWAG depuis plusieurs années et j’en suis pleinement satisfait. Il consomme peu de ressource et il est également très fiable. Il répond à mes besoins d’exposer certains de mes services auto-hebergés, avec la possibilité d’une sécurité renforcée. Si l’absence d’interface Web pour la configuration peut faire peur, il est simple à prendre en main… même si cela peut être un peu déroutant au début. Le fait que Fail2ban soit déjà configuré est un plus et SWAG ne cesse de s’améliorer, par exemple avec le tableau de bord.