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.