BunkerWeb : ajouter un site ou service à votre configuration

Dans ce tutoriel, nous allons voir comment ajouter un site ou un service à BunkerWeb. Cette étape vous permettra d’intégrer facilement vos applications web dans votre configuration existante et de bénéficier des protections offertes par le WAF.

Prérequis

Avant de se lancer dans la configuration du service (site) dans BunkerWeb, quelques éléments à prendre en compte.

En premier lieu, s’assurer que le site que vous allez publier fonctionne, prévoir également un enregistrement DNS pour celui-ci qui va pointer sur l’adresse IP de BunkerWeb.

Concernant le certificat SSL, dans ce tutoriel, je vais utiliser un SAN Wildcard qui a été généré par une autorité de certificat interne, il faut donc dans un premier temps ajouter celui-ci dans BunkerWeb

Ajouter un certificat SSL à BunkerWeb

Pour réaliser cette opération, plusieurs solutions sont possibles lors de la configuration du service. Ici, je laisse volontairement de côté la partie Let’s Encrypt, qui sera expliquée dans un autre tutoriel.

Si vous souhaitez utiliser un certificat SSL issu d’une AC interne ou d’une autorité officielle, deux approches s’offrent à vous :

  • Coller le contenu en base64 du certificat et de la clé privée directement dans la déclaration du service.
  • Utiliser des fichiers contenant le certificat et la clé privée.

Dans ce tutoriel, nous allons privilégier la seconde méthode, plus flexible. Nous partirons du principe que vous disposez d’un certificat wildcard pour votre domaine, par exemple *.domain.tld.

En effet, si vous publiez plusieurs services sur domain.tld et que vous utilisez la méthode base64, chaque renouvellement de certificat nécessitera de modifier toutes les déclarations de service. Avec la méthode basée sur des fichiers, il suffira simplement de remplacer les deux fichiers (certificat et clé privée), et la mise à jour sera automatiquement effective pour l’ensemble des services concernés.

Si vous avez déployer BunkerWeb en suivant le tutoriel : BunkerWeb : déployer et configurer WAF pour sécuriser vos serveurs Web , dans la déclaration du conteneur, on a créé un volume ./ssl:/ssl qui permet de mapper le dossier dans les conteneurs BunkerWeb qui va contenir les certificats et les clés privée.

Pour commencer, sur le serveur, créer les fichiers pour le certificat et la clé privée et coller le contenu en base64 dedans.

Ajouter un service (site) dans BunkerWeb

Depuis le menu, cliquer sur Services 1.

On arrive sur la liste des services qui sont publiés sur BunkerWeb, comme on peut le voir, il a déjà un service, qui est celui-ci qui permet l’accès l’interface Web d’administration.

Cliquer sur le bouton Create new service 1.

Commencer par le remplir le champ SERVER_NAME 1 qui correspond à URI du site, passer SECURITY_MODE à detect*2, ensuite activer USE_CUSTOM_SSL 3, sélectionner file 4 sur le champ CUSTOM_SSL_CERT_PRIORITY, ensuite entrer le chemin du certificat 5 puis de la clé privée 6 et cliquer Next 7.

* Dans un premier, je vous conseille d’utiliser detect à la place de block, pour analyser les différents logs de sécurité pour affiner la configuration avant de passer à un block, BunkerWeb étant agressif, vous pourriez bloquer l’accès site.

On va maintenant configurer le Upstream server, c’est à dire l’adresse ou se trouve le site (application), activer l’option USE_REVERSE_PROXY, puis entrer l’adresse de l’hôte 2 et cliquer ensuite sur Next 3.

Je vais maintenant passer sur chaque étape de l’assistant de configuration en vous expliquant que ce vous pouvez configurer.

HTTP – General : permet la configuration du serveur et du protocole HTTP(S) avec le type de requêtes acceptés (GET, POST, …), la taille de maximum de corp de la requête (MAX_CLIENT_SIZE), qui va permettre de gérer la taille max de l’envoie de fichier en autre, activer la prise en charge du protocole HTTP2 et HTTP3, ainsi que les protocoles HTTPS supportés.

HTTP – Header : configuration supplémentaire des entêtes HTTP qui permet de durcir la sécurité principalement.

Security – Bad behavior : permet de configurer les « mauvais comportements » comme les scans de dossiers et fichiers qui vont retourner une requête 404 par exemple, ce paramètre permet facilement de bloquer les scans, mais il faut faire attention et s’assurer que le site (application), ne fait pas appel à des fichiers (images, css, js, …) qui ne sont pas disponibles, ce qui peut générer des faux positifs à cause d’un site mal configuré.

Security – Blacklisting : permet de configurer différentes listes de blocages, que se soient des adresses IP, des reverse DNS ou des User-Agent.

Ici, je vous conseille d’activer les listes communautaires d’adresse IP et de User Agent

Security – Limiting : configuration du nombre limite de requêtes et de connexion par adresse IP, il faut faire attention avec cette configuration, un site qui charge beaucoup de fichiers css, js et images risque d’avoir des blocages.

Security – Antibot : permet d’activer la détection des bots et de les bloquer, si vous conseille d’activer cette configuration en utilisant javascript qui ne fait pas appel à des services tiers.

Security – Auth basic : permet de configurer une authentification pour accéder au site, cela peut être pratique pour mettre un site en maintenance par exemple.

Security – Country : permet de configurer des pays en liste blanche et noir pour les autoriser ou les bloquer.

Security – ModSecurity : permet d’activer de configurer le ModSecurity sur le site, ce qui active le WAF (Web Application Firewall), c’est le rempart ultime contre les attaques. Avant d’activer cette configuration, il est important de tester le site sur un autre environnement, car on peut facilement se retrouver avec blocage sur des faux positifs.

Plus d’information ici : https://docs.bunkerweb.io/security-tuning/#modsecurity et https://docs.bunkerweb.io/1.6.4/features/?utm_campaign=self&utm_source=ui#modsecurity

La configuration terminée, cliquer sur le bouton Save 1.

Patienter pendant la configuration et la publication du service …

Le service configuré, celui-ci est disponible sur BunkerWeb.

Tester le service

Depuis un navigateur, aller sur l’URL du service et vérifier que celui-ci s’affiche bien, pour ma part, dans ce tutoriel, j’ai publié une installation de GLPI qui est bien disponible.

Pour avoir les logs de navigation, il faut afficher les logs des conteneurs avec la commande suivante :

sudo docker compose logs -f

Modifier le service

Lors de la modification du service dans BunkerWeb, vous avez 3 modes :

Easy : reprendre les mêmes éléments que l’assistant de configuration.

Advanced : permet la configuration avancée de chaque plugin avec plus d’options que le mode Easy.

RAW : qui est directement le fichier de configuration sous la forme PARAMETRE=VALEUR.

Penser ensuite à cliquer sur le bouton Save pour appliquer les modifications.

FAQ – Ajouter un site ou service dans BunkerWeb

❓ Peut-on utiliser Let’s Encrypt directement avec BunkerWeb ?

Oui, BunkerWeb intègre la gestion des certificats Let’s Encrypt. Dans ce tutoriel, nous avons volontairement mis de côté cette partie, qui sera traitée dans un article dédié.

❓ Quelle est la meilleure méthode pour ajouter un certificat SSL dans BunkerWeb ?

Il existe deux méthodes : insérer le certificat et la clé en base64 dans la configuration, ou utiliser des fichiers. La méthode avec fichiers est recommandée car elle facilite la gestion et le renouvellement, notamment pour un certificat wildcard

❓ Peut-on ajouter plusieurs sites ou services dans une même configuration BunkerWeb ?

Oui, BunkerWeb permet de gérer plusieurs sites et services en parallèle. Il suffit de créer une déclaration de service par application dans votre fichier de configuration ou votre stack Docker Compose.

Conclusion

Ajouter un site ou un service à BunkerWeb est une opération simple une fois la logique de configuration comprise. En utilisant des fichiers pour gérer vos certificats SSL, vous gagnez en souplesse et en maintenabilité, notamment dans le cas d’un certificat wildcard. Cette approche évite les modifications répétitives lors des renouvellements et garantit une intégration fluide de vos services.

Dans un prochain tutoriel, nous verrons comment automatiser cette partie avec Let’s Encrypt afin de gérer plus facilement le cycle de vie des certificats.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.