Site icon RDR-IT

BunkerWeb : déployer et configurer WAF pour sécuriser vos serveurs Web

Dans ce tutoriel, je vais vous présenter BunkerWeb puis vous expliquer comment le déployer dans votre environnement avec Docker et configurer un service qui est site qui sera protéger par BunkerWeb.

BunkerWeb c’est quoi ?

Bunkerweb est une solution WAF (Web Application Firewall) qui va vous permettre de publier vos applications Web sur Internet en les sécurisant.

Pour faire « simple », c’est un reverse proxy basé sur Nginx qui embarque avec lui tout les éléments qui vont permettre de sécuriser vos applications comme :

Il est aussi possible d’ajouter des plugins pour ajouter des éléments de sécurité comme :

Le gros plus par rapport à une installation classique de Nginx, c’est que BunkerWeb permet de faire toutes la configuration de vos applications (services) avec une interface Web pour les personnes qui sont fâchées avec les lignes de commandes.

Pour finir sur les possibilités, il est aussi possible d’utiliser des fichiers de configuration si des options de Nginx ne sont pas disponibles dans BunkerWeb.

BunkerWeb est Open source, le Github se trouve ici : https://github.com/bunkerity/bunkerweb

Il existe plus « version » :

Pour finir BunkerWeb est Français … Cocorico

Dans ce tutoriel, je vais principalement aborder la configuration de BunkerWeb en tant que Reverse proxy, il est aussi prévu pour s’intégrer avec Docker et Kubernetes pour automatiser la publication de vos applications conteneurisés.

De quoi vous avez besoin pour déployer BunkerWeb

D’un environnement Linux avec Docker d’installé, le tutoriel suivant Ubuntu 22.04 : installer Docker peut vous aider si vous n’avez jamais installer Docker.

En terme de ressource, cela va dépendre principalement du nombre de service que vous allez publier et du trafic.

Pour information, j’ai fait des tests sur un conteneur LCX sur Proxmox avec la configuration suivante :

Vous aurez également besoin d’un enregistrement DNS pour l’accès à la console d’administration de BunkerWeb, celui-ci doit pointer sur votre serveur Linux.

Si vous souhaitez également comprendre les différents éléments que l’on va déployer pour faire fonctionner BunkerWeb, je vous invite à lire les concepts avant.

En résumé voici les éléments à comprendre, la solution BunkerWeb s’appuie sur plusieurs services Docker pour fonctionner :

Déployer BunkerWeb avec Docker

Le principal avantage d’utiliser Docker, c’est que l’on va déployer BunkerWeb très facilement sans rien n’avoir besoin d’installer, il va juste falloir configurer notre fichier docker-compose.yml.

Si vous avez l’habitude de lire mes articles, une fois n’est pas coutume, je vais me placer à l’emplacement suivant sur mon serveur linux : /containers/bunkerweb

Voici mon fichier docker-compose.yml :

Voici les éléments que vous devez modifier :

Une fois le fichier docker-compose.yml sur votre serveur au bon emplacement, entrer la commande suivante pour télécharger les images :

sudo docker compose pull

Une fois les images téléchargées, entrer la commande suivante pour démarrer les conteneurs et accéder aux logs.

sudo docker compose up -d && sudo docker compose logs -f

Patienter pendant le premier démarrage qui prend un peu de temps du fait de l’initialisation de BunkerWeb et de la base de données, dans les logs vérifier qu’il n’y a pas d’erreur.

Pour quitter les logs appuyer sur les touches Ctrl+C

Depuis un navigateur Web, entrer l’url de l’interface Web, vous devriez arriver sur le formulaire ci-dessous, vous devriez également avoir une erreur de certificat car celui-ci n’est pas connu.

Entrer les identifiants configurés dans le fichier docker-compose.yml admin et le mot de passe.

Une fois connecté, vous arrivez sur la page d’accueil de l’interface Web.

Notre BunkerWeb est déployé, il nous reste maintenant à configurer des services.

Si vous souhaitez des exemples de déploiement de BunkerWeb, il y a plus exemple sur le dépôt Github : https://github.com/bunkerity/bunkerweb/tree/master/examples

Configurer un service dans BunkerWeb

On va maintenant passer à la configuration d’un service, qui est le nom des publications sur BunkerWeb,

Dans ce premier tutoriel dédié à BunkerWeb, je ne vais pas parcourir toutes les options, nous verrons cela dans d’autres articles.

Depuis le menu de navigation, cliquer sur Services 1.

Sur la page des services, on peut voir qu’il y en à déjà un de configuré, c’est celui-ci qui nous permet d’accéder à l’interface Web et ces paramètres se trouvent dans le fichier docker-compose.yml.

Cliquer sur le bouton NEW SERVICE 1.

Commencer par configurer le paramètre Server name 1 qui est le nom fqdn (DNS) de votre application.

Ensuite cliquer sur GENERAL 1 puis rechercher le plugin Reverse proxy 2 et cliquer dessus.

Cocher la case Use reverse proxy 1.

Ensuite dans la partie inférieure de la page de configuration, indiquer l’url 1 vers le serveur de destination.

Pour finir aller en bas et cliquer sur le bouton SAVE 1.

Notre service est créé et on peut voir les différents plugins qui sont activés comme le MODSECURITY, BAD BEHAVIOR …

On peut maintenant tester notre service, si vous faites un test avec un site en production, avant de modifier l’enregistrement DNS je vous conseille d’utiliser le fichier hosts de votre ordinateur.

Depuis un navigateur accéder à votre application, il est possible que vous ayez une erreur de certificat car par défaut il va utiliser un certificat autosigné.

Astuces et dépannages

Afin que vous puissiez profiter pleinement de BunkerWeb avec ce premier tutoriel, voici quelques points pour aider dans la prise en main.

Afficher les logs Web – access_log

Pour voir les logs Web en directe, il faut passer par la machine Linux ou docker est installé et afficher les logs avec la commande suivante :

sudo docker compose logs -f

Désactiver la redirection HTTP vers HTTPS

Dans la configuration du service, dans le plugins MUSCELLANEOUS, décocher les case Redirect HTTP to HTTPS et Auto redirect HTTP to HTTPS.

Certificat Let’s Encrypt

Dans la configuration du service, aller sur le plugin LET’S ENCRYPT puis cocher la case Automatic Let’s Encrypt et indiquer votre adresse email.

Accès au service bloquer

Par défaut la configuration de BunkerWeb est assez agressive, en regarder les logs, ajuster la configuration du plugin LIMIT, BAD BEHAVIOR et MODSECURITY


Ce premier tutoriel s’arrête ici, j’espère qu’il vous a donné envie de découvrir et d’utiliser BunkerWeb.

Dans de futur tutoriel, nous verrons comment configurer son propre certificat, mettre en place Crowdsec et la configuration avancée des services notamment des paramètres de sécurité.

Quitter la version mobile