ModSecurity est un pare-feu d'application Web gratuit et open source pris en charge par différents serveurs Web tels qu'Apache, IIS et Nginx. Il est déployé en tant que couche de sécurité externe pour protéger les serveurs Web.
Dans ce didacticiel, vous apprendrez à installer le pare-feu ModSecurity avec Nginx préinstallé. Nous avons utilisé le serveur Ubuntu 20.04 pour démontrer le processus.
Pré-requis
Serveur Ubuntu 20.04 LTS
Nginx installé sur le serveur Ubuntu
Guide d'installation
Si Nginx n'est pas installé sur votre serveur, suivez ce guide pour répondre aux exigences d'installation de Modsecurity :
https://linuxways.net/ubuntu/how-to-install-nginx-on-ubuntu-20-04-lts-using-source-code/
Maintenant que vous avez installé Nginx, commençons par installer ModSecurity.
Étape 1 :Installez libmodsecurity3
Tout d'abord, installez git sur votre machine afin de pouvoir cloner le dépôt git de ModSecurity. Nous pouvons le faire en exécutant cette commande :
sudo apt install git -y
Maintenant que git est installé, clonez le dépôt en exécutant cette commande :
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Étape 2 :Accédez au répertoire Modsecurity
Maintenant que vous avez cloné le dépôt modsecurity git, allez dans le répertoire modsecurity en suivant le chemin ci-dessous :
cd /usr/local/src/ModSecurity/
Étape 3 :Installer les dépendances de libmodsecurity3
Maintenant que nous sommes dans le répertoire Modsecurity, nous allons installer les dépendances libmodsecurity3 dans cette étape. Exécutez cette commande :
sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y
Étape 4 :Installer les modules Git
Maintenant, installez les sous-modules git à l'aide de cette commande :
git submodule init
Ensuite, nous allons mettre à jour les sous-modules :
git submodule update
Étape 5 :Créer l'environnement de sécurité mod
Il est temps de construire l'environnement modsecurity. Pour ce faire, exécutez la commande suivante :
./build.sh
Configurez maintenant à l'aide de cette commande :
./configure
Après cela, vous obtiendrez cette erreur :
Vous pouvez ignorer cela et passer à autre chose.
Étape 6 :Compiler le code source de modsecurity
Nous allons maintenant compiler l'environnement pour libmodsecurity3 avec cette commande :
make
Si vous souhaitez augmenter la vitesse de compilation, vous pouvez spécifier -j
make -j 4
Ensuite, nous allons exécuter la commande d'installation :
sudo make install
L'installation se fait dans le dossier /usr/local/modsecurity/ .
Step 7: Install modsecurity-nginx connector
Dans cette étape, nous allons installer le connecteur Modsecurity-nginx. C'est le point de connexion et de communication entre Nginx et ModSecurity.
Tout d'abord, nous devons cloner le référentiel de connecteurs. Faites-le en exécutant cette commande :
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
/usr/local/src/ModSecurity-nginx/
Étape 8 :Installer les dépendances modsecurity-nginx
Tout d'abord, accédez au répertoire source de Nginx comme ceci :
cd /usr/local/src/nginx/nginx-1.21.1
Assurez-vous de remplacer la version de Nginx dans la commande par votre version actuelle de Nginx, sinon vous obtiendrez une erreur.
Pour installer les dépendances nécessaires, exécutez cette commande :
sudo apt build-dep nginx && sudo apt install uuid-dev -y
Ensuite, nous allons compiler le module de connecteur Modsecurity-nginx avec l'indicateur –with-compat en exécutant cette commande :
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Exécutez maintenant cette commande pour créer les modules dynamiques :
sudo make modules
Maintenant, copiez le module dynamique que vous venez de créer dans objs/ngx_http_modsecurity_module.so vers /usr/share/nginx/modules à l'aide de cette commande :
sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
Étape 9 :Activer Modsecurity dans le fichier de configuration Nginx
Pour activer Modsecurity dans Nginx, vous devez d'abord spécifier le module de charge et le chemin d'accès à votre module de modsecurity dans la configuration.
Ouvrez le fichier de configuration Nginx avec l'éditeur nano comme ceci :
sudo nano /etc/nginx/nginx.conf
Dans le fichier, ajoutez cette ligne en haut :
load_module modules/ngx_http_modsecurity_module.so;
Sous la section HTTP {}, ajoutez les lignes de code suivantes :
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;
Étape 10 :Configurer le répertoire et les fichiers pour modsecurity
Créez un répertoire avec le nom modsec. Le chemin du répertoire est mentionné dans la commande :
sudo mkdir /etc/nginx/modsec/
Vous aurez besoin de ce répertoire à l'avenir pour stocker les fichiers de configuration et les règles.
Maintenant, copiez l'exemple de fichier de configuration Modsecurity à partir du répertoire git cloné avec cette commande :
sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Ouvrez maintenant le fichier de configuration de modsecurity :
sudo nano /etc/nginx/modsec/modsecurity.conf
Localisez la directive SecRuleEngine dans le fichier à la ligne 7 et remplacez-la par DetectionOnly comme ceci :
secruleEngine DetectionOnly
Pour activer Modsecurity, recherchez le changement de la directive suivante sur On comme ceci :
secRuleEngine on
Localisez maintenant la directive suivante à la ligne 224 :
secAuditLogParts ABIJDEFHZ
Changez-le en :
secAuditLogParts ABCDEFHJKZ
Créez maintenant le fichier modsec-config.conf. Ici, vous allez ajouter modsecurity.conf et d'autres règles pour modsecurity :
sudo nano /etc/nginx/modsec/modsec-config.conf
Dans le fichier que vous venez de créer, ajoutez cette ligne :
Include /etc/nginx/modsec/modsecurity.conf
Enregistrez le fichier et quittez.
Étape 11 :Copiez le fichier unicode.mapping
Enfin, copiez le fichier unicode.mapping de Modsecurity comme ceci :
sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Étape 12 :Vérifiez la configuration de Nginx
Avant de redémarrer Nginx, vérifiez si la configuration est correcte en exécutant cette commande :
sudo nginx -t
Si vous obtenez le résultat suivant, vous êtes prêt à partir :
Étape 13 :Recharger Nginx
Maintenant, redémarrez Nginx avec cette commande :
sudo systemctl restart nginx
Dans ce guide, nous avons vu comment installer Modsecurity sur un serveur Ubuntu sur lequel Nginx est déjà préinstallé. Nous avons également vu comment configurer ModSecurity et Nginx pour les connecter à l'aide de quelques commandes faciles à suivre.