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.
Ici, à LinuxAPT, nous verrons comment installer le pare-feu ModSecurity avec Nginx préinstallé sur le serveur Ubuntu 20.04.
Étapes pour déployer Modsecurity avec Nginx sur Ubuntu 20
1. Installez Nginx sur le système
Si vous n'avez pas installé Nginx sur votre serveur, suivez ce guide pour répondre aux exigences d'installation de Modsecurity :https://linuxapt.com/blog/1276-install-nginx-on-ubuntu-20-04-lts-using- code source
2. Installez libmodsecurity3
Maintenant, installez git sur votre machine afin de pouvoir cloner le référentiel 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/
3. Allez dans le 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/
4. Installez les dépendances 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
5. Installez 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
6. Créez 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 :
fatal: No names found, cannot describe anything.
7. Compilez 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 répertoire /usr/local/modsecurity/.
8. Installez le connecteur modsecurity-nginx
Ici, 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/
9. 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 le fichier 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/
10. 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;
11. 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.
12. 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/
13. 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
14. Recharger Nginx
Maintenant, redémarrez Nginx avec cette commande :
$ sudo systemctl restart nginx