Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui on va voir comment configurer le Web Application Firewall ou WAF NAXSI pour NGINX.
La chose importante, c’est que l’on va utiliser une branche de NAXSI qui supporte HTTP2.
On va aussi importer des règles de base pour WordPress et voir comment protéger un site.
Installation de NGINX et du WAF NAXSI :
Nous allons utiliser mon script de build pour installer NGINX avec le support de NAXSI : https://github.com/stylersnico/nginx-openssl-chacha-naxsi/
On ne va pas revoir en détail comment compiler nginx : https://www.abyssproject.net/2016/11/compiler-nginx-pourquoi-comment/
Téléchargez et lancez le script de build :
cd /tmp && wget --no-check-certificate https://raw.githubusercontent.com/stylersnico/nginx-openssl-chacha/master/build.sh && sh build.sh
Répondez N à la première question et Y à la deuxième pour installer NAXSI.
Ensuite, allez dans le répertoire NGINX et téléchargez les règles pour wordpress :
cd /etc/nginx mkdir naxsi mv naxsi_core.rules naxsi/ cd naxsi && wget https://raw.githubusercontent.com/nbs-system/naxsi-rules/master/wordpress.rules
Ouvrez votre fichier de configuration avec la commande suivante :
nano /etc/nginx/nginx.conf
Et ajoutez la configuration de NAXSI dans la section HTTP :
http { #NAXSI include /etc/nginx/naxsi/naxsi_core.rules;
Mon nginx.conf complet est disponible ici : https://github.com/stylersnico/my-webserver/blob/master/etc/nginx/nginx.conf
Maintenant, ouvrez le vhost de votre site wordpress :
nano /etc/nginx/sites-enabled/abyssproject.vhost
Et maintenant, éditez votre section location pour ajouter les blocages de base et les règles spécifiques à WordPress :
location / { try_files $uri $uri/ /index.php?$args; SecRulesEnabled; CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK; DeniedUrl "/gfy.html"; include /etc/nginx/naxsi/wordpress.rules; }
Créez un message d’erreur sympathique à la racine de votre site pour les gens qui essayerait de trouver des failles dessus et de les exploiter :
echo "Get the fuck out" > /var/www/wordpress/abyssproject.net/gfy.html
Validez la configuration avec nginx :
nginx -t
Redémarrez votre serveur web :
systemctl restart nginx
Et tentez de passer une commande louche par l’URL de votre site pour tester,merci à @Djerfy pour le screen 🙂
Bonjour,
Je suis en BTS SIO SISR et j’ai pour projet de monter un Reverse Proxy avec NGINX, mais je bloque…
On me demande de rajouter un Firewall Applicatif (donc NAXSI). Mais ayant déjà fais toute la configuration que je voulais sur NGINX je voudrais savoir si il était possible de rajouter le module NAXSI ? Ou je suis obligé de refaire une VM pour installer le pack des deux ?
Merci pour ton aide.
Cordialement.
Bonjour,
Il faut simplement réinstaller NGINX en le compilant avec NAXSI et ensuite ajouter les configurations spécifiques à NAXSI, pas besoin de refaire toute la configuration.
Oui mais ma configuration NGINX va être effacer alors non ?
Et pour l’installation et la compilation j’ai juste a suivre totalement ta procédure ?
Merci beaucoup pour ton aide.
Il faut faire une sauvegarde de la configuration et la remettre en place après.
Il ne suffit pas de suivre la procédure, il faut aussi comprendre ce que l’on fait et prendre le script à jour sur le github, sinon Naxsi risque de te pourrir la vie plus qu’autre chose 🙂
Je suis du genre à vouloir comprendre ce que je fais donc il n’y a pas de soucis la dessus.
Par contre le seul problème est que NGINX et NAXSI ne vont pas se mettre à jour automatiquement du coup ..?
Exact, c’est a toi de planifié les mises à jour de façon manuelle.
C’est pas trop bon ça…
Donc pour installer un Firewall Applicatif sur un Reverse Proxy, tu es obligé de compiler ?
Le package n’est plus proposé par Debian depuis Wheezy donc oui.
Même avec ModSecurity ?
Il ne me semble pas que le package ait été proposé avec modsecurity.
Mais attend, juste une petite chose…
Tu dois compiler NGINX aussi ? ou seulement NAXSI ?
C’est un tout, NAXSI est compilé en même temps que NGINX en tant que module NGINX
Mon problème serait résolu si on devait compiler uniquement NAXSI, car le principal est que NGINX se mette à jour seul…
ça marche pas comme ça, il faut aussi mettre à jour naxsi. Utilise un ansible pour gérer ton infra et tes maj