Le serveur web Nginx est utilisé sur plus de 30 % des sites web dans le monde et ce chiffre ne cesse de croître.

Compte tenu de l’augmentation des menaces en ligne, l’un des défis pour les ingénieurs web est de bien connaître le durcissement et la sécurisation de Nginx.

nginx-market-share

Nginx est bien connu pour ses performances et son serveur web/proxy léger et est utilisé sur de nombreux sites très fréquentés.

  • Pinterest.com
  • Reddit.com
  • Wordpress.com
  • Stackoverflow.com
  • Mail.ru

Si vous hébergez vos applications web sur Nginx et que vous êtes préoccupé par la sécurité, l’une des premières choses que vous souhaiteriez mettre en place est un Web Application Firewall (WAF).

Mod Security est un WAF Open Source de Trustwave SpiderLabs et a été rendu disponible pour Nginx en 2012.

Dans ce guide, je vais vous expliquer comment télécharger, installer et configurer Mod Security avec Nginx.

La démonstration suivante est faite sur CentOS hébergé chez DigitalOcean.

Si vous êtes novice en matière de Nginx, je vous recommande de suivre ce cours fondamental.

Téléchargez Nginx et ModSecurity

Vous pouvez télécharger Nginx directement sur votre serveur ou sur votre PC local, puis le transférer.

  • Téléchargez la dernière version à partir du lien ci-dessous

http://nginx.org/en/download.html

  • Si vous téléchargez directement sur le serveur, vous pouvez utiliser wget comme suit
wget http://nginx.org/download/nginx-1.9.15.tar.gz
  • Extrayez-les en utilisant la commande gunzip
gunzip -c nginx-1.9.15.tar.gz | tar xvf -
  • Vous verrez le nouveau dossier créé
drwxr-xr-x 8 1001 1001 4096 Apr 19 12:02 nginx-1.9.15
  • Téléchargez la dernière version de Mod Security à partir du lien ci-dessous

https://github.com/SpiderLabs/ModSecurity

  • Vous pouvez utiliser les commandes suivantes directement depuis le serveur
wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
gunzip -c modsecurity-2.9.1.tar.gz | tar xvf -

Installons-les

Installer Nginx avec Mod Security

Il est important de compiler le code source de Nginx et de modsecurity.

  • Connectez-vous à un serveur et assurez-vous d’avoir les droits de root.

Note : si vous travaillez sur un nouveau serveur, vous devrez peut-être installer les bibliothèques suivantes.

yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel

Tout d’abord, compilons mod security. Allez dans le dossier modsecurity-2.9.1 et utilisez les commandes suivantes.

./configure --enable-standalone-module
make

Ensuite, installez Nginx avec mod security

./configure --add-module=../modsecurity-2.9.1/nginx/modsecurity
make
make install

Ceci conclut que Nginx est installé avec Mod Security et qu’il est temps de le configurer.

Configurer Mod Security avec Nginx

Copiez les fichiers modsecurity.conf-recommended & unicode.mapping du dossier extrait du code source de ModSecurity téléchargé ci-dessus dans le dossier conf de nginx. Vous pouvez également utiliser la commande find.

find / -name modsecurity.conf-recommended
find / -name unicode.mapping
[root@GeekFlare-Lab conf]# cp /opt/nginx/binary/modsecurity-2.9.1/modsecurity.conf-recommended /usr/local/nginx/conf/
[root@GeekFlare-Lab conf]# cp /opt/nginx/binary/modsecurity-2.9.1/ unicode.mapping /usr/local/nginx/conf/
[root@GeekFlare-Lab conf]#

Renommons modsecurity.conf-recommended en modsecurity.conf

mv modsecurity.conf-recommended modsecurity.conf
  • Faites une sauvegarde du fichier nginx.conf
  • Ouvrez le fichier nginx.conf et ajoutez ce qui suit dans la directive “location /”
ModSecurityEnabled on ;
ModSecurityConfig modsecurity.conf ;

Cela devrait donc ressembler à ceci

location / {
ModSecurityEnabled on ;
ModSecurityConfig modsecurity.conf ;
}

Maintenant, Mod Security est intégré à Nginx. Redémarrez Nginx pour vous assurer qu’il s’exécute sans erreur.

Vérifions..

Il y a deux méthodes possibles pour confirmer que Nginx est compilé avec Mod Security.

Premièrement..

Listez le module compilé en utilisant -V avec le fichier exécutable de nginx.

[root@GeekFlare-Lab sbin]# ./nginx -V
version de nginx : nginx/1.9.15
construit par gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
arguments de configure : --add-module=../modsecurity-2.9.1/nginx/modsecurity
[root@GeekFlare-Lab sbin]#

Deuxièmement..

Allez dans le dossier des logs et regardez le fichier d’erreur, vous devriez voir ce qui suit

2016/05/21 21:54:51 [notice] 25352#0 : ModSecurity pour nginx (STABLE)/2.9.1 (http://www.modsecurity.org/) configuré.
2016/05/21 21:54:51 [ notice] 25352#0 : ModSecurity : APR compilé version="1.3.9" ; chargé version="1.3.9"
2016/05/21 21:54:51 [notice] 25352#0 : ModSecurity : PCRE compilé version="7.8 " ; chargé version="7.8 2008-09-05"
2016/05/21 21:54:51 [notice] 25352#0 : ModSecurity : LIBXML compilé version="2.7.6"

Ceci conclut que vous avez configuré avec succès ModSecurity avec Nginx.

Par défaut, la configuration est en mode détection uniquement, ce qui signifie qu’elle n’exécutera aucune action et protégera vos applications web.

Dans mon prochain article, je vous expliquerai comment configurer le jeu de règles OWASP et activer ModSecurity pour vous protéger des vulnérabilités de la sécurité web.