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 cas, c’est facile à dire qu’à faire. La fréquence des sites Web piratés ne cesse d’augmenter, car les pirates continuent d’exploiter tous les vecteurs d’attaque à leur disposition.
La sécurité des applications Web peut être un énorme défi, en particulier avec la prévalence d’outils malveillants tels que les rootkits, les scanners, les bots et autres logiciels malveillants. Bien qu’une brèche puisse sembler une question de quand sinon si, il est prudent de mettre en œuvre des mesures de sécurité décentes pour protéger vos applications Web.
[ You might also like: 5 Tools to Scan a Linux Server for Malware and Rootkits ]
L’un des outils qui peuvent fournir un niveau de sécurité décent contre les attaques s’appelle ModSécurité. Ceci est un logiciel libre et open source Firewall d’applications Web (WAF) qui protège vos applications Web contre une vaste gamme d’attaques de couche 7 telles que les scripts intersites (XSS), SQL injection, détournement de session, et bien d’autres.
Dans ce guide, nous allons vous montrer comment installer et configurer ModSécurité travailler avec Nginx au Distributions Linux basées sur Debian tel que Ubuntu.
Étape 1 : Installer 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 actualisez les référentiels comme suit.
$ sudo apt update
Ensuite, installez les dépendances comme suit.
$ sudo apt install make gcc build-essential autoconf automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-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
Étape 2: Installez la dernière version de Nginx
La prochaine étape consistera à installer le Nginx navigateur Internet. 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-apt-repository ppa:ondrej/nginx-mainline -y
Ensuite, mettez à jour les listes de packages et installez la dernière version de Nginx comme suit
$ sudo apt update $ sudo apt install nginx-core nginx-common 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 de pouvoir, plus tard, télécharger le Nginx code source à l’étape suivante.
Pour y parvenir, modifiez le Nginx fichier référentiel.
$ sudo vim /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list
Recherchez et décommentez cette ligne pour activer le référentiel de code source :
# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ focal main
Le fichier devrait maintenant apparaître comme indiqué.
Enregistrez les modifications et quittez.
Mettez ensuite à jour l’index du package.
$ sudo apt update
Étape 3: Télécharger le package source Nginx
Pour compiler le ModSécurité module dynamique, nous devons télécharger le Nginx paquet de code source. Pour ce faire, nous allons, dans un premier temps, créer un Nginx répertoire dans le /usr/local/src/ chemin pour accueillir le fichier de package de code source Nginx.
$ sudo mkdir -p /usr/local/src/nginx
Ensuite, attribuez les autorisations de répertoire comme indiqué. Assurez-vous de remplacer le nom d’utilisateur par votre nom d’utilisateur sudo réel.
$ sudo chown username:username -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 paquets de fichiers sources :
$ sudo apt source nginx
Vous obtiendrez probablement l’erreur suivante :
W: Download is performed unsandboxed as root as file 'nginx_1.19.5.orig.tar.gz' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
Ce n’est rien pour vous énerver. Donc, ignorez simplement l’erreur.
Vous pouvez jeter un coup d’œil au fichier source en utilisant le commande ls.
$ ls -l
Assurez-vous que la version du code source coïncide avec la version de Nginx installée.
$ nginx -v
Étape 4 : Installez la bibliothèque Libmodsecurity3
Libmodesécurité est un Modsécurité bibliothèque qui gère HTTP filtrage pour vos applications. Il y a deux façons de l’installer. Vous pouvez utiliser le gestionnaire de paquets apt comme montré
$ sudo apt install libmodsecurity3
L’autre approche consiste à l’installer à partir d’une source, ce qui est préférable puisqu’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 --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Accédez au répertoire cloné :
$ cd /usr/local/src/ModSecurity/
Faire un point pour installer les sous-modules
$ sudo git submodule init $ sudo git submodule update
Ensuite, créez l’environnement à l’aide des commandes ci-dessous.
$ sudo ./build.sh $ sudo ./configure
Encore une fois, ignorez l’erreur affichée ci-dessous.
fatal: No names found, cannot describe anything.
Compilez ensuite le code source et installez d’autres utilitaires à l’aide de la commande make suivante. Cela prend environ 25 minutes, et un peu de patience est nécessaire.
$ sudo make -j4
Une fois terminé, installez les bibliothèques.
$ sudo make install
Étape 5 : Téléchargez et compilez ModSecurity v3 Nginx Connector
L’étape suivante consiste à télécharger et à compiler le ModSécurité Nginx connecteur. Le connecteur, comme son nom l’indique, relie le Libmodsecurity bibliothèque sur le serveur Web Nginx. Pour télécharger le connecteur Modsecurity, clonez-le à partir du référentiel GitHub comme suit.
$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/
Accédez au répertoire cloné.
$ cd /usr/local/src/nginx/nginx-1.21.3/
Continuer et installer les dépendances de build
$ sudo apt build-dep nginx $ sudo apt install uuid-dev
Ensuite, compilez le Connecteur ModSecurity Nginx module avec le --with-compat
drapeau. Les --with-compat
L’option rend le module ModSecurity Nginx Connector binairement compatible avec la bibliothèque Nginx actuelle.
$ sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Une fois cela fait, créez le module ModSecurity Nginx Connector à l’aide de la commande make.
$ sudo make modules
Le module est enregistré sous objs/ngx_http_modsecurity_module.so. 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 ModSecurity Nginx
Pour charger le Nginx module de connexion, Tout d’abord, accédez au fichier de configuration principal de Nginx.
$ sudo vim /etc/nginx/nginx.conf
Ajoutez la ligne suivante juste en dessous des premières lignes
load_module modules/ngx_http_modsecurity_module.so;
De plus, ajoutez les lignes suivantes dans le http {...}
section. Cela active ModSecurity pour tous les hôtes virtuels Nginx.
modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf;
Enregistrez les modifications et quittez le fichier.
Ensuite, créez le /etc/nginx/modsec/ répertoire qui stockera ModSécurité configuration.
$ sudo mkdir /etc/nginx/modsec/
Ensuite, copiez le fichier de configuration ModSecurity comme suit.
$ sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Ouvrez ensuite le fichier de configuration.
$ sudo vim /etc/nginx/modsec/modsecurity.conf
Repérez la ligne commençant par le MoteurSecRule directif.
SecRuleEngine DetectionOnly
Cette ligne indique ModSécurité pour enregistrer uniquement les transactions HTTP, mais ne prend aucune mesure face à une attaque d’application Web. Vous devez modifier cela pour que Modsecurity non seulement détecte mais bloque également les attaques Web.
Remplacez la ligne par la ligne ci-dessous
SecRuleEngine On
Enregistrez les modifications et quittez le fichier.
Ensuite, créez le /etc/nginx/modsec/main.conf déposer.
$ sudo vim /etc/nginx/modsec/main.conf
Ajoutez cette ligne pour faire référence au /etc/nginx/modsec/modsecurity.conf fichier de configuration.
Include /etc/nginx/modsec/modsecurity.conf
Enregistrez les modifications et quittez le fichier.
En outre, copiez le fichier de mappage Unicode.
$ sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Testez ensuite la configuration de Nginx.
$ sudo nginx -t
Le test devrait être réussi. Sinon, revenez en arrière et vérifiez si toutes les modifications apportées sont correctes.
Puis enfin, redémarrez Nginx pour appliquer toutes les modifications apportées.
$ sudo systemctl restart nginx
Et vérifiez que Nginx fonctionne comme prévu.
$ sudo systemctl status nginx
Étape 7 : Télécharger le jeu de corérules OWASP
Pour ModSécurité 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 ficelles du métier.
Les Ensemble de règles de base OWASP (SCR) est un ensemble de règles gratuit, open source et géré par la communauté qui fournit des règles pour éloigner les vecteurs d’attaque courants tels que l’injection SQL, les scripts intersites (XSS).
Téléchargez l’ensemble de règles de base OWASP à partir de Github comme indiqué à l’aide du commande wget.
$ wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
Extrayez le fichier compressé.
$ tar xvf v3.3.0.tar.gz
Assurez-vous de déplacer le répertoire non compressé vers le /etc/nginx/modsec/ chemin.
$ sudo mv coreruleset-3.3.0/ /etc/nginx/modsec/
Puis renommez le crs-setup.conf.exemple fichier à crs-setup.conf.
$ sudo mv /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf
Encore une fois, retournez au ModSécurité fichier de configuration.
$ sudo vim /etc/nginx/modsec/main.conf
Et ajoutez les lignes suivantes.
Include /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf Include /etc/nginx/modsec/coreruleset-3.3.0/rules/*.conf
Le fichier doit maintenant avoir 3 lignes :
Enregistrez le fichier et, encore une fois, redémarrez Nginx.
$ sudo systemctl restart nginx
Étape 8 : Tester ModSecurity
Enfin, nous allons faire un test ModSécurité et confirmez qu’il peut détecter et bloquer le trafic HTTP suspect.
Nous allons éditer le fichier de configuration ModSecurity et créer une règle de blocage qui bloquera l’accès à une certaine URL lorsqu’elle est accessible par un navigateur Web.
$ sudo vim /etc/nginx/modsec/modsecurity.conf
Ajoutez cette ligne juste en dessous du SecRuleEngine activé directif
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"
Vous pouvez définir le ‘identifiant’ et ‘msg’ balises à vos valeurs préférées.
Enregistrez les modifications et redémarrez Nginx.
$ sudo systemctl restart nginx
Lancez maintenant votre navigateur et visitez l’URL ci-dessous avec le ?testparam=test
suffixe
http://server-ip/?testparam=test
Vous devriez obtenir un 403 ‘Interdit’ Erreur. Cela indique que vous essayez d’accéder à une ressource interdite sur le serveur Web.
De plus, vous pouvez vérifier les journaux d’erreurs Nginx pour confirmer que le client a été bloqué
$ cat /var/log/nginx/error.log | grep "Test Successful"
[ You might also like: How to Set Up ModSecurity with Apache on Debian/Ubuntu ]
C’était un aperçu de la façon dont vous pouvez configurer Modsécurité avec Nginx au Debian et Ubuntu. Nous espérons que cela a été bénéfique.
.