Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Bunkerized Nginx – L’image Docker Nginx sécurisée

Bunkerized-nginx est un projet disponible sur Github qui est tout simplement une image Docker du serveur Nginx (j’ai justement fait une formation sur Nginx et compagnie pour ceux qui veulent) qui intègre de base toutes les customisations et fichiers de config nécessaires à la sécurisation de votre serveur web.

Le support HTTPS avec Let’s Encrypt est activé, tout ce qui concerne l’état de l’art en matière de sécurité web est également paramétré comme les entêtes HTTP de sécurité, le renforcement du php.ini, du paramétrage pour éviter que votre serveur ne donne trop d’infos.

Bunkerized Nginx - L'image Docker Nginx sécurisée

Le ModSecurity WAF (firewall applicatif) est également présent et intègre l’ensemble des règles poussées par l’OWASP. Fail2ban est également de la partie pour bannir automatiquement les IPs qui feraient des choses pas très catholiques sur votre machine, sans oublier la possibilité d’avoir des challenges de sécurité tels que des captcha (ou recaptcha)…etc.

En passant, je ne sais pas si vous avez vu mais l’hébergeur Hostinger propose des offres super intéressantes en matière d’hébergement web. C’est pas trop cher pour démarrer et s’auto-héberger. (Lien affilié)

Cette image docker effectue également du DNSBL (DNS Black Listing) permettant de bloquer des IPs connues pour être nocives. Une limite est également intégrée pour prévenir les attaques par bruteforce, et pour tout ce qui est malware, ClamAV est aussi intégré dans cette image pour vous protéger.

Petit truc amusant, Bunkerized-nginx est capable de tromper certains scanners qui viendraient analyser votre système :

Le tout est totalement configurable à l’aide de variables d’environnement que vous n’avez qu’à modifier.

Si vous voulez lancer un serveur web (HTTP) avec Bunkerized Nginx, entrez la ligne de commande suivante :

docker run -p 80:80 -v /path/to/web/files:/www bunkerity/bunkerized-nginx

Si vous voulez du HTTPS (sécurisé), c’est pareil sauf qu’il faut spécifier l’emplacement où seront stockés les certificats ainsi que le nom de domaine lié à votre serveur :

docker run -p 80:80 -p 443:443 -v /path/to/web/files:/www -v /where/to/save/certificates:/etc/letsencrypt -e SERVER_NAME=www.yourdomain.com -e AUTO_LETS_ENCRYPT=yes -e REDIRECT_HTTP_TO_HTTPS=yes bunkerity/bunkerized-nginx

Et pour ceux qui veulent du PHP (php-fpm), vous devrez spécifier l’adresse d’un PHP-FPM distant qui interprétera les .php.

docker network create mynet
docker run --network mynet -p 80:80 -v /path/to/web/files:/www -e REMOTE_PHP=myphp -e REMOTE_PHP_PATH=/app bunkerity/bunkerized-nginx
docker run --network mynet --name=myphp -v /path/to/web/files:/app php:fpm

Si vous utilisez NGINX en reverse proxy, vous pouvez passer la véritable IP des clients avec le paramètre PROXY_REAL_IP.

docker run -p 80:80 -v /path/to/web/files:/www -e PROXY_REAL_IP=yes bunkerity/bunkerized-nginx

Enfin, pour activer le challenge antibot sous la forme d’un captcha par défaut, entrez la commande suivante. L’antibot peut également se matérialiser par la demande d’un cookie, ou par l’exécution d’un JavaScript de votre choix.

docker run -p 80:80 -v /path/to/web/files:/www -e USE_ANTIBOT=captcha bunkerity/bunkerized-nginx

Il y a encore beaucoup de choses à dire sur Bunkerized Nginx notamment au niveau du paramétrage, mais la doc que vous trouverez ici est vraiment claire et bien faite, donc vous n’aurez aucun souci à customiser cette image Docker renforcée de Nginx.

Photo par Louis Mornaud


Les articles du moment