Qu’est-ce que ModSecurity?
ModSecurity est le pare-feu d’application Web open source le plus connu (WAF) qui a été initialement construit pour le serveur Web Apache qui offre une protection complète pour vos applications Web (comme WordPress, Joomla, OpenCart, etc.) contre une large gamme d’attaques de couche 7 (HTTP). ModSecurity peut fonctionner comme le module de serveur Web et peut filtrer des attaques telles que l’injection SQL, le cross-site scripting, l’inclusion de fichiers locaux, etc.
cPGuard WAF
cPGuard WAF est un ensemble de règles ModSecurity qui peuvent bloquer la plupart des attaques Web génériques contre vos applications Web. Il est alimenté par les règles commerciales ModSecurity de Malware.Expert pour les serveurs d’hébergement Web. Il s’agit d’un ensemble propriétaire de règles écrites en interne et qui offre une protection contre les attaques ciblées et automatisées et des règles explicites pour protéger les CMS tels que WordPress, Drupal, Joomla, etc.
Installer ModSecurity avec Nginx sur Debian / Ubuntu
Vous devez installer ModSecurity 3.0 (libmodsecurity) pour activer le support du module ModSecurity avec votre serveur Web Nginx. Le projet ModSecurity 3 est encore en développement rapide et manque de certaines fonctionnalités disponibles dans les versions 2.9.x. Mais ModSecurity 3 s’améliore et propose de plus en plus de fonctionnalités dans toutes les versions.
Étape 1. Installer Nginx
Si vous n’avez pas encore installé le serveur Web Nginx sur votre serveur, installez Nginx à l’aide de la commande suivante. Si vous avez déjà installé Nginx, vous pouvez ignorer cette étape.
$ sudo apt install nginx
Étape 2 Télécharger et compiler ModSecurity
Installez les dépendances de compilation à l’aide de la commande suivante
$ apt-get install libtool autoconf build-essential libpcre3-dev zlib1g-dev libssl-dev libxml2-dev libgeoip-dev liblmdb-dev libyajl-dev libcurl4-openssl-dev libpcre++-dev pkgconf libxslt1-dev libgd-dev automake
Vous avez maintenant besoin de télécharger ModSecurity
$ cd /usr/local/src
$ git clone --depth 100 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
$ cd ModSecurity
$ git submodule init
$ git submodule update
Maintenant, compilez ModSecurity et installez-le sur votre serveur
# Générer le fichier de configuration
sh build.sh
# Étape de pré-compilation. Vérifie les dépendances
./configure
# Compile le code source
make
# Installe Libmodsecurity à **/usr/local/modsecurity/lib/libmodsecurity.so**
make install
Étape 3. Télécharger et compiler le code source du connecteur ModSecurity v3 Nginx
Exécutez “nginx -V” et notez votre version du serveur Nginx. Vous devez maintenant télécharger le code source Nginx correspondant et le code source du connecteur Nginx sur votre serveur. Utilisez ensuite le code source pour générer le module Libmodsecurity pour votre serveur Nginx. Reportez-vous aux commandes suivantes et exécutez-les l’une après l’autre dans l’ordre.
$ mkdir /usr/local/src/cpg
$ cd /usr/local/src/cpg
$ wget http://nginx.org/download/nginx-1.21.4.tar.gz
$ tar -xvzf nginx-1.21.4.tar.gz
# Télécharger le code source du connecteur ModSecurity-nginx
$ git clone https://github.com/SpiderLabs/ModSecurity-nginx
Compiler Nginx
Maintenant, nous devons compiler Nginx avec le module ModSecurity. Nous n’allons pas compiler/installer Nginx lui-même mais compiler uniquement le module Nginx. Pour cela, assurez-vous que votre package Nginx est compilé avec le drapeau “–with-compat”. Le drapeau –with-compat rendra le module binaire compatible avec votre binaire Nginx existant. Vous pouvez utiliser la commande suivante pour compiler Nginx + ModSecurity compatible avec vos modules existants :
$ cd nginx-1.21.4
$ ./configure --with-compat --with-openssl=/usr/include/openssl/ --add-dynamic-module=/usr/local/src/cpg/ModSecurity-nginx
Maintenant, nous devons construire les modules et les copier dans le répertoire de module Nginx
# Générer le module
$ make modules
# Copier le module dans le répertoire de module Nginx
$ cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
Étape 4. Chargez le module ModSecurity dans Nginx
Ouvrez le fichier /etc/nginx/modules-enabled/50-mod-http-modsecurity.conf et ajoutez-y le contenu suivant :
load_module modules/ngx_http_modsecurity_module.so;
Étape 5. Installez la configuration Nginx
1. Ouvrez /etc/nginx/nginx.conf et ajoutez la ligne suivante après avoir inclus « /etc/nginx/sites-enabled/*.conf »
include /etc/nginx/cpguard_waf_load.conf;
2. Ajoutez le contenu suivant à /etc/nginx/cpguard_waf_load.conf
modsecurity on;
modsecurity_rules_file /etc/nginx/nginx-modsecurity.conf;
3. Ajoutez le contenu suivant à /etc/nginx/nginx-modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecDefaultAction "phase:2,deny,log,status:406"
SecRequestBodyLimitAction ProcessPartial
SecResponseBodyLimitAction ProcessPartial
SecRequestBodyLimit 13107200
SecRequestBodyNoFilesLimit 131072
SecPcreMatchLimit 250000
SecPcreMatchLimitRecursion 250000
SecCollectionTimeout 600
SecDebugLog /var/log/nginx/modsec_debug.log
SecDebugLogLevel 0
SecAuditEngine RelevantOnly
SecAuditLog /var/log/nginx/modsec_audit.log
SecUploadDir /tmp
SecTmpDir /tmp
SecDataDir /tmp
SecTmpSaveUploadedFiles on
# Include file for cPGuard WAF
Include /etc/nginx/cpguard_waf.conf
Étape 6. Configurez les paramètres cPGuard WAF
Une fois les étapes ci-dessus terminées avec succès, vous pouvez utiliser les valeurs de paramètre suivantes :
waf_server = nginx
waf_server_conf = /etc/nginx/cpguard_waf.conf
waf_server_restart_cmd = /usr/sbin/service nginx restart
waf_audit_log = /var/log/nginx/modsec_audit.log
C’est tout
Vous devriez avoir activé ModSecurity correctement et une fois que cPGuard WAF est activé, votre serveur est protégé contre les attaques Web.