GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer et configurer ModSecurity sur Apache

Présentation

ModSecurity est un module de plug-in pour Apache qui fonctionne comme un pare-feu. Il fonctionne par le biais d'ensembles de règles, qui vous permettent de personnaliser et de configurer la sécurité de votre serveur.

ModSecurity peut également surveiller le trafic Web en temps réel et vous aider à détecter et à répondre aux intrusions. Il peut être utilisé avec Apache, Nginx et IIF et est compatible avec Debian, Ubuntu et CentOS.

Ce tutoriel explique comment installer et configurer ModSecurity sur les serveurs Web Apache.

Prérequis

  • La pile LAMP (Linux, Apache, MySQL, PHP) installée et configurée
  • Accès à un compte utilisateur avec sudo ou racine privilèges
  • Un gestionnaire de packages (APT ou YUM), inclus par défaut
  • Une ligne de commande/fenêtre de terminal (Ctrl-Alt-T, Ctrl-Alt-F1)
  • Un éditeur de texte, comme nano

Étape 1 :Mettre à jour les référentiels de logiciels

Ouvrez une fenêtre de terminal et saisissez ce qui suit :

Sur Debian / Ubuntu

sudo apt update -y

Sur CentOS

sudo yum update -y

Étape 2 :Installer ModSecurity sur Apache

Installer ModSecurity sur Debian

1. Dans une fenêtre de terminal, saisissez ce qui suit :

sudo apt install libapache2-modsecurity

Si vous y êtes invité, appuyez sur y et appuyez sur Entrée pour permettre au processus de se terminer.

2. Redémarrez le service Apache :

sudo systemctl restart apache2

Il n'y aura pas de sortie si Apache a été redémarré avec succès.

3. Vérifiez la version du logiciel (elle doit être 2.8.0 ou ultérieure) :

apt-cache show libapache2-modsecurity

Installer ModSecurity sur Ubuntu 18.04

1. Dans une fenêtre de terminal, saisissez :

sudo apt install libapache2-mod-security2

Si vous y êtes invité, appuyez sur y et appuyez sur Entrée pour permettre au processus de se terminer.

2. Redémarrez le service Apache :

sudo systemctl restart apache2

Il n'y aura pas de sortie si Apache a été redémarré avec succès.

3. Vérifiez la version du logiciel (doit être 2.8.0 ou ultérieure) :

apt-cache show libapache2-mod-security2

Installer ModSecurity sur CentOS 7

1. Entrez ce qui suit dans une fenêtre de terminal :

sudo yum install mod_security

Si vous y êtes invité, appuyez sur y et appuyez sur Entrée pour permettre au processus de se terminer.

2. Redémarrez le service Apache :

sudo systemctl restart httpd.service

3. Vérifiez la version du logiciel (doit être 2.8.0 ou ultérieure) :

yum info mod_security

Étape : 3 Configurer ModSecurity

Lors de l'installation, ModSecurity est configuré pour consigner les événements selon les règles par défaut. Vous devrez modifier le fichier de configuration pour ajuster les règles de détection et de blocage du trafic.

Le fichier de configuration par défaut est /etc/modsecurity/modsecurity.conf-recommended.

1. Copiez et renommez le fichier :

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

2. Ensuite, changez le mode de détection ModSecurity . Tout d'abord, accédez à /etc/modsecurity dossier :

sudo cd /etc/modsecurity

3. Ouvrez le fichier de configuration dans un éditeur de texte (nous utiliserons nano) :

sudo nano modsecurity.conf

Près du haut, vous devriez voir une entrée intitulée :

SecRuleEngine DetectionOnly

Changez ceci pour lire comme suit :

SecRuleEngine On

4. Utilisez CTRL+X pour quitter, puis appuyez sur y puis Entrée pour enregistrer les modifications.

5. Quittez le dossier /etc/modsecurity :

cd

6. Redémarrez Apache :

Sur Debian/Ubuntu

sudo systemctl restart apache2

Sur CentOS

sudo systemctl restart httpd.service

Cela activera ModSecurity en utilisant les règles de base par défaut. Dans certaines versions de Linux, cela inclut l'ensemble de règles de base OWASP. Cependant, cela peut différer de la dernière version maintenue par les développeurs.

Étape 4 : Téléchargez les dernières règles de sécurité OWASP ModSecurity

Le dernier ensemble de règles de base (CRS) pour ModSecurity est maintenu sur GitHub.

1. Installez G il s'il n'est pas déjà inclus sur votre système.

Installez Git sur Debian/Ubuntu :

sudo apt install git

Installez Git sur CentOS :

sudo yum install git

2. Téléchargez une copie du CRS :

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Cela place une copie du répertoire en tant que sous-répertoire de votre emplacement de travail actuel.

3. Ouvrez un nouveau répertoire :

cd owasp-modsecurity-crs

4. Déplacez le fichier crs-setup :

sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

5. Déplacez ensuite le répertoire rules/ :

sudo mv rules/ /etc/modsecurity

Si vous rencontrez une erreur en essayant de déplacer ce répertoire, entrez :

sudo mkdir /etc/modsecurity/rules
cd rules 
sudo cp *.* /etc/modsecurity/rules

6. Ensuite, vérifiez votre security2.conf fichier pour vérifier qu'il est configuré pour charger les règles ModSecurity :

sudo nano /etc/apache2/mods-enabled/security2.conf

Vérifiez que les lignes suivantes sont incluses et décommentées :

IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf

S'ils n'y sont pas, ajoutez-les. Ne les dupliquez pas, ou vous risquez de désactiver votre service Apache.

7. Redémarrez le service Apache :

Sur Debian/Ubuntu

sudo systemctl restart apache2

Sur CentOS

sudo systemctl restart httpd.service

Étape 5 :Tester la configuration d'Apache

1. Ouvrez le fichier de configuration Apache par défaut :

sudo nano /etc/apache2/sites-available/000-default.conf

2. Localisez le </VirtualHost> balise en bas et ajoutez les lignes suivantes :

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"

Vous pouvez modifier le msg à ce que vous préférez.

Enregistrez et quittez le fichier (CTRL+X> y> Entrez ).

3. Redémarrez le service Apache :

Sur Debian/Ubuntu

sudo systemctl restart apache2

Sur CentOS

sudo systemctl restart httpd.service

4. Saisissez ensuite la commande suivante :

curl localhost/index.html?testparam=test

Le système répond en essayant d'afficher la page Web par défaut. Au lieu du contenu, il génère des codes d'erreur et des messages à l'intérieur des balises :

5. Vous pouvez confirmer que ModSecurity a fonctionné en recherchant le code 403 dans les journaux d'erreurs Apache avec la commande :

sudo tail -f /var/log/apache2/error.log

L'une des entrées vers le bas devrait être le code d'erreur ModSecurity :

Testez ModSecurity et OWASP CRS avec le script Bash

Une autre méthode que vous pouvez utiliser pour tester ModSecurity consiste à utiliser un B cendre script.

1. Saisissez la commande suivante dans le terminal :

curl localhost/index.html?exec=/bin/bash

La sortie affiche les mêmes messages d'erreur que la dernière fois.

2. Affichez à nouveau le fichier Apache error.log et vous constaterez que la règle s'est déclenchée :

sudo tail -f /var/log/apache2/error.log

La sortie affiche le message d'erreur ModSecurity lié à OWASP.

Étape 6 : Créer des règles ModSecurity

Vous trouverez ci-dessous un exemple de test sur la façon dont vous pouvez utiliser ModSecurity pour bloquer des mots-clés spécifiques sur un formulaire PHP.

1. Créez un fichier PHP dans le répertoire html avec la commande :

sudo nano /var/www//html/test.php

2. Entrez le code suivant dans le fichier :

<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>

Enregistrez le fichier et quittez.

3. Ensuite, créez un nouveau fichier de règles personnalisées ModSecurity :

sudo nano /etc/modsecurity/modsecurity_custom_rules.conf

Ajoutez les lignes suivantes :

SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"

Bien sûr, changez les mots-clés de la dernière ligne en ce que vous voulez.

Enregistrez le fichier et quittez.

4. Rechargez le service Apache :

Sur Debian/Ubuntu

sudo systemctl restart apache2

Sur CentOS

sudo systemctl restart httpd.service

5. Lancez le formulaire dans un navigateur Web

localhost/test.php

6. Tapez l'un des mots-clés de la règle dans le formulaire. Dans cet exemple :agrandir, nigérian, ou or .

Vous devriez recevoir un message d'erreur 403 Forbidden.

Vous pouvez également vérifier le /var/log/apache2/error.log fichier pour vérifier l'action de ModSecurity.


Ubuntu
  1. Comment activer et configurer le fichier .htaccess sur Apache

  2. Comment installer Apache sur CentOS 8

  3. Comment installer Apache sur Ubuntu 18.04

  4. Comment configurer des hôtes virtuels Apache sur Ubuntu 18.04

  5. Comment configurer des vHosts dans Apache

Comment installer Apache sur Ubuntu 20.04 LTS

Comment installer ModSecurity Apache sur Ubuntu 20.04 LTS

Comment configurer un serveur Apt-cacher ?

Comment installer et configurer Apache 2 ?

Comment installer ModSecurity Apache sur Ubuntu 20.04

Comment installer Apache sur Ubuntu 22.04