GNU/Linux >> Tutoriels Linux >  >> Cent OS

Installer le pare-feu d'application Web LibModsecurity avec Nginx sur CentOS 8

LibModSecurity est un pare-feu d'application Web gratuit et open-source qui peut être utilisé pour protéger un serveur Nginx contre différents types de cyberattaques. Il est livré avec un ensemble de règles de base comprenant l'injection SQL, les scripts intersites, les chevaux de Troie et bien d'autres. Il fonctionne en surveillant le trafic HTTP en temps réel et en luttant contre les vulnérabilités à l'aide de l'ensemble de règles de base OWASP ModSecurity. Il peut être utilisé avec Apache, Nginx et IIS et également compatible avec Debian, Ubuntu et CentOS.

Dans ce didacticiel, nous allons vous montrer comment télécharger et compiler LibModSecurity avec le support Nginx sur CentOS 8.

Exigences

  • Un serveur exécutant CentOS 8.
  • Un mot de passe root est configuré sur le serveur.

Mise en route

Avant de commencer, mettez à jour votre serveur avec la dernière version à l'aide de la commande suivante :

mise à jour dnf

Une fois votre serveur mis à jour, redémarrez-le pour appliquer les modifications.

Installer les référentiels et dépendances requis

Tout d'abord, installez le référentiel EPEL et REMI sur votre système. Vous pouvez les installer avec la commande suivante :

installation dnf https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
installation dnf https://rpms.remirepo.net/enterprise/remi- release-8.rpm

Ensuite, installez toutes les dépendances requises avec la commande suivante :

dnf install gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config wget openssl openssl-devel nano

Une fois tous les packages installés, vous pouvez installer d'autres dépendances à l'aide du référentiel PowerTool :

dnf --enablerepo=PowerTools install doxygen yajl-devel

Ensuite, installez GeoIP à l'aide du référentiel REMI en exécutant la commande suivante :

dnf --enablerepo=remi install GeoIP-devel

Une fois tous les packages installés, vous pouvez passer à l'étape suivante.

Télécharger et compiler LibModsecurity

Tout d'abord, vous devrez télécharger la source LibModsecurity et la compiler sur votre système. Pour ce faire, changez le répertoire en /opt et téléchargez la dernière version de LibModsecurity depuis le dépôt Git :

cd /opt/
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity

Ensuite, changez le répertoire en ModSecurity et téléchargez le code libInjection avec la commande suivante :

cd ModSecurity
git submodule init
git submodule update

Ensuite, configurez le LibModsecurity à l'aide de la commande suivante :

./build.sh
./configure

Enfin, compilez et installez LibModSecurity avec la commande suivante :

faire
faire installer

À ce stade, LibModsecurity a été installé sur votre système. Vous pouvez maintenant procéder à l'installation de Nginx avec le support LibModsecurity.

Télécharger et compiler Nginx avec le support LibModsecurity

Tout d'abord, vous devrez créer un utilisateur système et un groupe pour Nginx. Vous pouvez le créer avec la commande suivante :

useradd -r -M -s /sbin/nologin -d /usr/local/nginx nginx

Ensuite, vous devrez télécharger Nginx et le compiler avec le support LibModsecurity.

Pour ce faire, commencez par télécharger le connecteur ModSecurity-nginx depuis le dépôt Git avec la commande suivante :

cd /opt
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

Ensuite, téléchargez la dernière version stable de Nginx avec la commande suivante :

wget http://nginx.org/download/nginx-1.17.6.tar.gz

Une fois téléchargé, extrayez le fichier téléchargé à l'aide de la commande suivante :

tar -xvzf nginx-1.17.6.tar.gz

Ensuite, changez le répertoire Nginx et configurez-le avec la commande suivante :

cd nginx-1.17.6
./configure --user=nginx --group=nginx --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module -- add-module=/opt/ModSecurity-nginx

Ensuite, installez le Nginx avec la commande suivante :

faire
faire installer

À ce stade, Nginx a été installé avec le support LibModsecurity. Vous pouvez maintenant procéder à la configuration de Nginx.

Configurer Nginx avec ModSecurity

Tout d'abord, vous devrez copier l'exemple de fichier de configuration ModSecurity du répertoire source Nginx vers le répertoire de configuration Nginx.

Vous pouvez les copier avec la commande suivante :

cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /opt/ModSecurity/unicode.mapping /usr/local/nginx/conf/

Ensuite, créez un lien symbolique du binaire Nginx vers /usr/sbin/ path avec la commande suivante :

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

Ensuite, créez le répertoire du journal Nginx avec la commande suivante :

mkdir /var/log/nginx

Ensuite, ouvrez le fichier de configuration Nginx avec la commande suivante :

nano /usr/local/nginx/conf/nginx.conf

Effectuez les modifications suivantes :

user nginx;worker_processes 1;pid /run/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream ; envoyer le fichier ; keepalive_timeout 65 ; serveur { écouter 80 ; nom_serveur votre-serveur-ip ; modsecurity activé ; modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf ; access_log /var/log/nginx/access.log ; error_log /var/log/nginx/error.log; emplacement / { racine html; index index.html index.htm; } page_erreur 500 502 503 504 /50x.html ; emplacement =/50x.html { racine html ; } }}

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vérifiez Nginx pour toute erreur de syntaxe avec la commande suivante :

nginx -t

Vous devriez voir le résultat suivant :

nginx :la syntaxe du fichier de configuration /usr/local/nginx/conf/nginx.conf est oknginx :le test du fichier de configuration /usr/local/nginx/conf/nginx.conf est réussi

À ce stade, Nginx a été configuré. Vous pouvez continuer à créer un fichier de service systemd pour Nginx.

Créer un fichier de service Systemd pour Nginx

Ensuite, vous devrez créer un fichier systemd pour gérer le service Nginx. Vous pouvez le créer avec la commande suivante :

nano /etc/systemd/system/nginx.service

Ajoutez les lignes suivantes :

[Unit]Description=Le serveur nginxAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/run/nginx.pidExecStartPre=/usr/bin/rm -f /run/ nginx.pidExecStartPre=/usr/sbin/nginx -tExecStart=/usr/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDKillSignal=SIGQUITTimeoutStopSec=5KillMode=mixedPrivateTmp=true[Install]WantedBy=multi-user.target

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, rechargez le démon systemd avec la commande suivante :

rechargement du démon systemctl

Ensuite, démarrez le service Nginx et activez-le après le redémarrage du système avec la commande suivante :

systemctl start nginx
systemctl enable --now nginx

Vous devriez voir le résultat suivant :

Création du lien symbolique /etc/systemd/system/multi-user.target.wants/nginx.service → /etc/systemd/system/nginx.service.

Ensuite, vérifiez le service Nginx avec la commande suivante :

statut systemctl nginx

Vous devriez voir le résultat suivant :

 ? nginx.service - Le serveur HTTP et proxy inverse nginx Chargé :chargé (/etc/systemd/system/nginx.service ; activé ; préréglage du fournisseur :désactivé) Actif :actif (en cours d'exécution) depuis le lundi 2019-12-30 10h20 :01 HNE ; Il y a 41 s Processus :17730 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Processus :17728 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Processus :17727 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) PID principal :17732 (nginx) Tâches :2 (limite :6102) Mémoire :5.0M CGroup :/ system.slice/nginx.service ??17732 nginx:master process /usr/sbin/nginx ??17733 nginx:worker processDec 30 10:20:00 nginx systemd[1]:Démarrage Le nginx HTTP et le serveur proxy inverse... 30 décembre 10:20:00 nginx nginx[17728] :nginx :la syntaxe du fichier de configuration /usr/local/nginx/conf/nginx.conf est correcte. 30 décembre 10:20:00 nginx nginx[17728] :nginx :fichier de configuration / Le test usr/local/nginx/conf/nginx.conf est réussi 30 décembre 10:20:01 nginx systemd[1] :nginx.service :Échec de l'analyse du PID à partir du fichier /run/nginx.pid :argument non valide 30 décembre 10:20 :01 nginx systemd[1] :Démarré Le serveur HTTP et proxy inverse nginx.

À ce stade, Nginx a été démarré et fonctionne. Vous pouvez maintenant procéder à la configuration de ModSecurity.

Configurer ModeSecurity

Par défaut, ModSecurity est réglé sur le mode de détection uniquement. Vous devrez donc activer le moteur de règles ModSecurity. Vous pouvez le faire en éditant le fichier modsecurity.conf :

nano /usr/local/nginx/conf/modsecurity.conf

Recherchez la ligne suivante :

SecRuleEngine DetectionOnly

Et remplacez-le par la ligne suivante :

SecRuleEngine activé

Retrouvez également la ligne suivante :

/var/log/modsec_audit.log

Et remplacez-le par la ligne suivante :

/var/log/nginx/modsec_audit.log

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, téléchargez la dernière version de ModSecurity Core Rule Set à partir du référentiel Git à l'aide de la commande suivante :

cloner git https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/local/nginx/conf/owasp-crs

Une fois téléchargé, renommez l'exemple de fichier de configuration CRS avec la commande suivante :

mv /usr/local/nginx/conf/owasp-crs/crs-setup.conf.example /usr/local/nginx/conf/owasp-crs/crs-setup.conf

Ensuite, configurez ModeSecurity pour utiliser ces règles en éditant le fichier /usr/local/nginx/conf/modsecurity.conf :

nano /usr/local/nginx/conf/modsecurity.conf

Ajoutez les lignes suivantes à la fin du fichier :

Inclure owasp-crs/crs-setup.confInclure owasp-crs/rules/*.conf

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Nginx pour mettre en œuvre les modifications :

systemctl redémarrer nginx

Tester ModSecurity

ModSecurity est maintenant installé et configuré. Il est temps de tester si cela fonctionne ou non.

Pour tester ModSecurity par rapport à l'injection de commande, ouvrez votre navigateur Web et tapez l'URL http://localhost/index.html?exec=/bin/bash. Vous devriez voir l'erreur 403 Forbidden sur la page suivante :

Pour tester ModSecurity contre les attaques CSS, ouvrez votre terminal et exécutez la commande suivante :

curl http://localhost/?q=">"

Vous devriez obtenir le résultat suivant :

403 Interdit

403 Interdit


nginx/1.17 .6

Conclusion

Toutes nos félicitations! vous avez réussi à télécharger et à compiler LibModSecurity avec Nginx. Votre serveur est maintenant protégé contre diverses attaques. Pour plus d'informations, vous pouvez consulter la documentation de ModSecurity sur ModSecurity Doc.


Cent OS
  1. Comment installer WordPress avec Nginx sur CentOS 7

  2. Installez Nginx avec ngx_pagespeed sur CentOS 7

  3. Comment installer phpMyAdmin avec Nginx sur CentOS 7 / RHEL 7

  4. Installer phpMyAdmin avec Nginx sur CentOS 7 - Processus étape par étape ?

  5. Comment installer Sitemagic CMS sur CentOS 7 – Avec Nginx

Installez WordPress avec Nginx sur CentOS 7 / RHEL 7

Comment installer phpMyAdmin avec Nginx sur CentOS 8 / RHEL 8

Comment installer Nginx avec ngx_pagespeed sur CentOS

Comment installer Nginx avec PHP-FastCGI sur CentOS 6

Comment installer Magento avec Nginx sur CentOS 7

Comment installer Laravel avec Nginx sur CentOS 8