Comment configurer mod_evasive pour Apache DDoS Protection – CloudSavvy IT
mod_evasive est un module Apache qui aide à défendre votre serveur contre les attaques par force brute et par déni de service. La configuration de mod_evasive vous offre un filet de sécurité pour attraper les acteurs malveillants avant qu’ils ne commencent à dégrader les performances de votre serveur.
Le module est livré avec plusieurs paramètres de configuration qui vous permettent de définir le nombre de requêtes simultanées qu’un client peut effectuer dans un délai défini. Les autres demandes seront bloquées pendant une période après le dépassement de la limite.
Sommaire
Installation de mod_evasive
Les étapes d’installation varient en fonction de la distribution de votre système d’exploitation et de la version d’Apache. Pour la combinaison la plus populaire d’Apache 2.4 sur un système basé sur Debian, procédez comme suit. Des instructions pour construire à partir des sources sont également fournies dans le référentiel du projet.
apt update apt install libapache2-mod-evasive
Installations via apt
activera le module automatiquement.
Vous pouvez le vérifier en utilisant le apachectl
utilitaire:
apachectl -M | grep evasive
Vous devriez voir le nom du module s’afficher s’il est actif.
Configuration des paramètres de blocage
Le fichier de configuration mod_evasive se trouve généralement à l’adresse /etc/apache2/mods-enabled/evasive.conf
. Il utilise le même format que les autres fichiers de configuration Apache. Une référence complète se trouve dans le mod_evasive
docs.
Voici un exemple de fichier de configuration avec plusieurs personnalisations :
<IfModule mod_evasive20.c> DOSPageCount 5 DOSSiteCount 10 DOSPageInterval 1 DOSSiteInterval 2 DOSBlockingPeriod 300 DOSEmailNotify user@example.com </IfModule>
mod_evasive fait la distinction entre les demandes de page et les demandes d’un placer. Vous pouvez définir ces deux facteurs de blocage indépendamment l’un de l’autre. Cet exemple bloquera les clients qui demandent le même URI cinq fois dans un intervalle d’une seconde. Un blocage sera en outre imposé aux clients qui demandent plus de dix URI à partir d’un même site dans un intervalle de deux secondes.
Lorsque l’une des limites est dépassée, le client ne pourra plus effectuer de requêtes pendant une période de cinq minutes (300 secondes). mod_evasive enverra un e-mail à user@example.com
notifiant que l’adresse IP a été bloquée.
mod_evasive prend également en charge l’exécution d’une commande système arbitraire lorsqu’une limite est atteinte. Cela peut être utilisé pour intégrer l’outil à votre propre application ou pare-feu afin que vous puissiez enregistrer un bloc dans votre base de données. Met le DOSSystemCommand
réglage, utilisation %s
pour désigner l’adresse IP bloquée :
DOSSystemCommand /app/blacklisted_ip.php --ip=%s
Liste blanche des adresses IP connues
mod_evasive prend en charge une liste blanche d’adresses IP connues pour faciliter le développement et les tests. Les développeurs peuvent parfois créer des volumes de requêtes élevés tout en travaillant sur un serveur, que ce soit intentionnellement ou non.
Utilisez le DOSWhiteList
paramètre pour spécifier les plages d’adresses IP à ignorer. Les limites ne seront appliquées à aucune de ces adresses.
DOSWhiteList 127.0.0.1 DOSWhiteList 192.168.0.*
Comment ça marche?
mod_evasive fonctionne en maintenant une table de hachage d’adresses IP et d’URI dans une liste noire temporaire. L’adresse IP et l’URI sont hachés pour créer une clé qui peut être utilisée pour vérifier si le client a déjà demandé la même page.
Un blocage se produit lorsqu’un URI ou un site apparaît dans la table de hachage de l’IP avec une fréquence supérieure à celle que vous avez autorisée. Cela se traduit par un 403
code d’état renvoyé au client. Le statut est la seule réponse que le client recevra, minimisant les ressources du serveur nécessaires pour traiter les requêtes considérées comme fausses ou malveillantes.
Une fois le plafond atteint, le client doit attendre le DOSBlockingPeriod
avant de pouvoir faire une autre demande avec succès. Réessayer pendant la période d’attente entraîne l’imposition d’un blocage encore plus long. Les autres adresses IP continuent d’être admises comme d’habitude et ne devraient pas être perturbées par la tentative de déni de service.
Le module peut entraîner une baisse des performances sur les serveurs très actifs. Il doit enregistrer chaque demande et vérifier si l’adresse IP a été bloquée ou doit être bloquée. Les serveurs occupés avec suffisamment de mémoire devraient augmenter le DOSHashTableSize
paramètre pour permettre une plus grande table de hachage en mémoire. Cela réduit le temps nécessaire pour rechercher une adresse IP entrante par rapport à ses autres demandes récentes.
DOSHashTableSize 32768
Test de votre installation
La meilleure façon de tester mod_evasive est de lancer un bref flot de requêtes pour vérifier la réponse de votre serveur. Avec mod_evasive correctement activé, vous devriez rapidement commencer à voir des 403 et une alerte par e-mail s’il est configuré.
Les ab
L’outil de ligne de commande peut être utilisé pour lancer des connexions en masse :
ab -n 1000 -c 50 http://...
Vous devez ajuster le -n
et -c
paramètres adaptés à votre configuration mod_evasive et à l’impact anticipé sur le serveur :
-n
– Le nombre total de demandes à effectuer.-c
– Le nombre de connexions simultanées à ouvrir.
L’exemple ci-dessus enverra 1 000 demandes par lots de 50.
ab
est un outil puissant qui pourrait initier une véritable attaque par déni de service. Assurez-vous doublement d’avoir spécifié la bonne adresse de serveur avant d’envoyer les demandes !
Sommaire
mod_evasive est un module simple mais efficace pour empêcher les attaques par force brute d’avoir un impact sur le fonctionnement de votre serveur. Vous pouvez configurer des limites par page et par site qui s’appliquent à chaque client tentant une connexion. Si le client finit par dépasser la limite, il recevra un 403 et devra concéder une période de blocage temporaire.
En tant qu’administrateur, vous pouvez choisir de recevoir des alertes par e-mail lorsqu’un nouveau blocage est imposé. Cela vous tient informé des attaques potentielles et vous permet de surveiller les faux positifs. Vous avez besoin d’une pile de courrier électronique fonctionnelle sur le serveur – mod_evasive envoie à l’aide de l’agent de transfert de courrier système.
Enfin, il est possible d’intégrer mod_evasive avec d’autres parties de votre application en exécutant une commande système chaque fois qu’une IP est sur liste noire. Cette capacité peut être utilisée pour signaler un utilisateur de base de données, créer une alerte dans un outil de surveillance tiers ou relayer le blocage vers vos autres serveurs pour protéger des parties supplémentaires de votre infrastructure.