Comment installer MODSECURITY pour Nginx sur Debian / Ubuntu

Comment installer MODSECURITY pour Nginx sur Debian / Ubuntu

C'est le désir de chaque développeur de déployer des applications Web sécurisées qui sont à l'abri des menaces. Dans la plupart des occasions, c'est sans effort que fait que fait. La fréquence des sites Web piratés continue de monter alors que les pirates continuent d'exploiter tous les vecteurs d'attaque à leur disposition.

La sécurité WebApp peut être un énorme défi, en particulier avec la prévalence d'outils malveillants tels que les rootkits, les scanners, les robots et autres logiciels malveillants. Bien que se faire violer peut sembler une question de savoir si si ce n'est pas le cas, il est prudent de mettre en œuvre des mesures de sécurité décentes pour protéger vos applications Web.

[Vous pourriez également aimer: 5 outils pour scanner un serveur Linux pour les logiciels malveillants et les rootkits]

L'un des outils qui peut offrir un niveau de sécurité décent contre les attaques est appelé Modsecurity. Ceci est une source libre et ouverte Firewall d'applications Web (Waf) Cela protège vos applications Web d'une vaste gamme d'attaques de couche 7 telles que les scripts inter-sites (XSS), SQL injection, détournement de session et bien d'autres.

Dans ce guide, nous vous montrerons comment installer et configurer Modsecurity travailler avec Nginx sur les distributions Linux basées à Debian telles que Ubuntu.

Étape 1: Installez les dépendances

Pour commencer l'installation, un certain nombre de dépendances logicielles sont nécessaires pour que l'installation réussisse. Mais d'abord, mettez à jour les listes de packages et rafraîchissez les référentiels comme suit.

$ sudo apt mise à jour 

Ensuite, installez les dépendances comme suit.

$ sudo apt install faire gcc build-essential autoconf automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-opensl-dev liblua5.3-dev libpcre3 libpcre3-dev libxml2 libxml2-dev libyajl-dev doxygen libcurl4 libgeoip-dev libssl-dev zlib1g-dev libxslt-dev liblmdb-dev libpcre ++ - dev libgd-dev-dev 

Étape 2: Installez la dernière version Nginx


La prochaine étape sera d'installer le Nginx navigateur Web. Pour installer la dernière version, nous allons l'installer à partir du
ondrej / nginx-mainline ppa w qui est actuellement maintenu par un développeur debian depuis 2000.

Pour ajouter le PPA à votre local Ubuntu Système Exécuter la commande:

$ sudo add-att-repository ppa: ondrej / nginx-mainline -y 

Ensuite, mettez à jour les listes de colis et installez la dernière version de Nginx comme suit

$ sudo apt mise à jour $ sudo apt installer nginx-core nginx-commun nginx nginx-full 

En règle générale, seul le référentiel par défaut est activé. Il est prudent d'activer le référentiel de code source afin que vous puissiez, plus tard, télécharger le Nginx Code source à l'étape suivante.

Pour y parvenir, modifiez le Nginx fichier de référentiel.

$ sudo vim / etc / apt / sources.liste.d / ondrej-ubuntu-nginx-manainline- *.liste 

Localisez et décommentez cette ligne pour activer le référentiel de code source:

# deb-src http: // ppa.rampe de lancement.net / ondrej / nginx-mainline / ubuntu / focal main 

Le fichier doit maintenant apparaître comme indiqué.

Activer Ondřej PPA

Enregistrer les modifications et quitter.

Puis mettez à jour l'index du package.

$ sudo apt mise à jour 

Étape 3: Télécharger le package de source Nginx

Pour compiler le Modsecurity module dynamique, nous devons télécharger le Nginx Package de code source. Pour ce faire, nous créerons d'abord un Nginx répertoire dans le / usr / local / src / Chemin de chemin pour accueillir le fichier de package de code source NGINX.

$ sudo mkdir -p / usr / local / src / nginx 

Ensuite, affectez les autorisations du répertoire comme indiqué. Assurez-vous de remplacer le nom d'utilisateur par votre nom d'utilisateur sudo réel.

$ sudo chown nom d'utilisateur: nom d'utilisateur -r / usr / local / src / 

Par la suite, naviguez dans le Nginx Répertoire source:

$ cd / usr / local / src / nginx 

Continuez et téléchargez le Nginx Packages de fichiers source:

$ sudo apt source nginx 
Télécharger Nginx Source

Vous entrerez très probablement dans l'erreur suivante:

W: le téléchargement est effectué sans psexondé comme root que le fichier 'nginx_1.19.5.origine.le goudron.gz 'ne pouvait pas être accessible par l'utilisateur' _apt '. - pkgacquire :: run (13: autorisation refusée) 

Ce n'est rien pour vous faire travailler. Donc, ignorez simplement l'erreur.

Vous pouvez avoir un aperçu du fichier source en utilisant la commande LS.

$ ls -l 
Liste des fichiers source Nginx

Assurez-vous que la version du code source coïncide avec la version de Nginx installée.

$ nginx -v 
Vérifiez la version Nginx

Étape 4: Installez la bibliothèque LibModSecurity3

Libmodesecurity est un Modsecurity bibliothèque qui gère Http Filtrage pour vos applications. Il existe deux façons de l'installer. Vous pouvez utiliser le gestionnaire de packages APT comme indiqué

$ sudo apt install libmodsecurity3 

L'autre approche consiste à l'installer à partir d'une source préférable car elle vous fournit la dernière version. Pour démarrer l'installation de LibModSecurity à partir de la source, clonez le référentiel GIT comme indiqué:

$ Git Clone - Depth 1 -B V3 / Master - Singel-Branch https: // github.com / spiderLabs / modsecurity / usr / local / src / modsecurity / 

Naviguer dans le répertoire cloné:

$ cd / usr / local / src / modsecurity / 

Faire un point pour installer les sous-modules

MISE À JOUR SOUS-MODULE DE SUBDUDE SUBDULE GIT INIT $ SUDO GIT GIT GIT 
Installez LibModSecurity3 dans Ubuntu

Ensuite, créez l'environnement en utilisant les commandes ci-dessous.

$ sudo ./construire.sh $ sudo ./ Configurer 

Encore une fois, ignorez l'erreur affichée ci-dessous.

Fatal: aucun nom trouvé, ne peut rien décrire. 

Ensuite, compilez le code source et installez d'autres utilitaires à l'aide de la commande de marque suivante. Cela prend environ 25 minutes, et une certaine patience est requise.

$ sudo make -j4 

Une fois terminé, installez les bibliothèques.

$ sudo faire l'installation 

Étape 5: Télécharger et compiler Modsecurity V3 Nginx Connecteur

L'étape suivante consiste à télécharger et à compiler le Modsecurity nginx connecteur. Le connecteur, comme son nom l'indique, relie le Libmodsecurity Bibliothèque du serveur Web Nginx. Pour télécharger le connecteur ModSecurity, clonez-le du référentiel GitHub comme suit.

$ Git Clone - Depth 1 https: // github.com / spiderLabs / modsecurity-nginx.git / usr / local / src / modsecurity-nginx / 

Naviguer dans le répertoire cloné.

$ cd / usr / local / src / nginx / nginx-1.21.3 / 

Procéder et installer les dépendances de construction

$ sudo apt build-dep nginx $ sudo apt install uuid-dev 

Ensuite, compilez le Connecteur Nginx ModSecurity module avec le --compat drapeau. Le --compat L'option rend le module de connecteur MODSECURIT.

$ sudo ./ Configurer --with-compat --add-dynamic-module = / usr / local / src / modsecurity-nginx 

Une fois cela fait, créez le module de connecteur Nginx Modsecurity à l'aide de la commande MADE.

$ sudo faire des modules 

Le module est enregistré comme objs / ngx_http_modsecurity_module.donc. Vous devez copier ce module dans le / usr / share / nginx / modules / Répertoire comme suit.

$ sudo cp objs / ngx_http_modsecurity_module.So / usr / share / nginx / modules / 

Étape 6: Chargez le module de connecteur Nginx Modsecurity

Pour charger le Nginx Module de connecteur, d'abord, accédez au fichier de configuration Nginx principal.

$ sudo vim / etc / nginx / nginx.confli 

Ajoutez la ligne suivante juste en dessous des premières lignes

modules de charge_module / ngx_http_modsecurity_module.donc; 

De plus, ajoutez les lignes suivantes dans le http … section. Cela permet de modsecurity pour tous les hôtes virtuels nginx.

modsecurity on; modsecurity_rules_file / etc / nginx / modsec / main.conf; 
Activer Mod_Security pour Nginx Vhosts

Enregistrer les modifications et quitter le fichier.

Ensuite, créez le / etc / nginx / modsec / répertoire qui stockera Modsecurity configuration.

$ sudo mkdir / etc / nginx / modsec / 

Ensuite, copiez le fichier de configuration de modsecurity comme suit.

$ sudo cp / usr / local / src / modsecurity / modsecurity.confr-recommandé / etc / nginx / modsec / modsecurity.confli 

Puis ouvrez le fichier de configuration.

$ sudo vim / etc / nginx / modsec / modsecurity.confli 

Localisez la ligne en commençant par le Secruleneengine directif.

Secruleengine Detectionlyly 

Cette ligne instruit Modsecurity Pour enregistrer uniquement les transactions HTTP mais ne prend aucune action face à une attaque d'application Web. Vous devez modifier cela afin que le modsecurity détecte non seulement mais bloque également les attaques Web.

Changer la ligne en ligne ci-dessous

Secruleengine sur 
Activer les règles MOD_SECURITY

Enregistrer les modifications et quitter le fichier.

Ensuite, créez le / etc / nginx / modsec / main.confli déposer.

$ sudo vim / etc / nginx / modsec / main.confli 

Ajoutez cette ligne pour référencer le / etc / nginx / modsec / modsecurity.confli fichier de configuration.

Inclure / etc / nginx / modsec / modsecurity.confli 

Enregistrer les modifications et quitter le fichier.

De plus, copiez le fichier de mappage Unicode.

$ sudo cp / usr / local / src / modsecurity / Unicode.mappage / etc / nginx / modsec / 

Puis testez la configuration de Nginx.

$ sudo nginx -t 
Tester la configuration de Nginx

Le test devrait réussir. Sinon, retournez et vérifiez si toutes les modifications apportées sont correctes.

Ensuite, redémarrez Nginx pour appliquer toutes les modifications apportées.

$ sudo systemctl redémarrer nginx 

Et vérifier que Nginx est en cours d'exécution comme prévu.

$ sudo systemctl status nginx 

Étape 7: Télécharger le jeu Owasp Corerule

Pour Modsecurity Pour protéger vos applications Web, vous devez spécifier des règles qui vont détecter les activités suspectes et les bloquer. Pour commencer, il est préférable d'installer des ensembles de règles existants qui vous aideront à apprendre les cordes.

Le Ensemble de règles de base OWASP (CRS) est un ensemble de règles libres, open-source et entre communautaire qui fournit des règles pour conjurer les vecteurs d'attaque communs tels que l'injection SQL, les scripts croisés (XSS).

Téléchargez l'ensemble de règles de base OWASP à partir de GitHub comme indiqué en utilisant la commande wget.

$ wget https: // github.com / coreruleset / comeruleset / archive / v3.3.0.le goudron.gz 

Extraire le fichier compressé.

$ TAR XVF V3.3.0.le goudron.gz 

Assurez-vous de déplacer le répertoire non compressé vers le / etc / nginx / modsec / chemin.

$ sudo mv comeruleset-3.3.0 / / etc / nginx / modsec / 

Puis renommer le CRS-Settup.confli.exemple déposer à CRS-Settup.confli.

$ sudo mv / etc / nginx / modsec / coreruleset-3.3.0 / CRS-Settup.confli.Exemple / etc / nginx / modsec / comeruleset-3.3.0 / CRS-Settup.confli 

Encore une fois, retournez au Modsecurity fichier de configuration.

$ sudo vim / etc / nginx / modsec / main.confli 

Et ajoutez les lignes suivantes.

Include / etc / nginx / modsec / coreruleset-3.3.0 / CRS-Settup.confe inclut / etc / nginx / modsec / comeruleset-3.3.0 / Règles / *.confli 

Le fichier doit désormais avoir 3 lignes:

Configurer les règles de modsecurity

Enregistrer le fichier et, encore une fois, redémarrer Nginx.

$ sudo systemctl redémarrer nginx 

Étape 8: Test de la modsecurity

Enfin, nous allons effectuer un test Modsecurity et confirmer qu'il peut détecter et bloquer le trafic HTTP suspect.

Nous allons modifier le fichier de configuration de modsecurity et créer une règle de blocage qui bloquera l'accès à une certaine URL lorsqu'il est accessible par un navigateur Web.

$ sudo vim / etc / nginx / modsec / modsecurity.confli 

Ajoutez cette ligne juste en dessous du Secruleengine sur directif

Secrule Args: TestParam "@Contains Test" "ID: 254, Deny, Status: 403, MSG:" Tester réussi "" 

Vous pouvez définir le 'identifiant' et 'msg' Tags à vos valeurs préférées.

Règles de modsecurity de test

Enregistrer les modifications et redémarrer Nginx.

$ sudo systemctl redémarrer nginx 

Maintenant, lancez votre navigateur et visitez l'URL ci-dessous avec le ?TestParam = test suffixe

http: // server-ip /?TestParam = test 

Tu devrais obtenir un 403 «interdit» erreur. Cela indique que vous essayez d'accéder à une ressource interdite sur le serveur Web.

Erreur interdite de Nginx 403

De plus, vous pouvez vérifier les journaux d'erreur Nginx pour confirmer que le client a été bloqué

$ cat / var / log / nginx / erreur.Journal | grep "test réussi" 
Vérifiez le bloc de modsecurity nginx

[Vous pourriez également aimer: comment configurer ModSecurity avec Apache sur Debian / Ubuntu]

C'était un aperçu de la façon dont vous pouvez configurer Modsecurity avec Nginx sur Debian et Ubuntu. Nous espérons que cela a été bénéfique.