mod_evasive est un module Apache qui aide à défendre votre serveur contre les attaques par force brute et par déni de service. Le paramètre 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 permettent de définir le nombre de requêtes simultanées qu'un client peut effectuer dans un laps de temps défini.. Les demandes supplémentaires seront bloquées pendant une période après le dépassement de la limite.
Installation mod_évasive
Les étapes d’installation varient en fonction de la distribution de votre système d’exploitation et de la version d’Apache. Pour obtenir la combinaison la plus populaire d’Apache 2.4 sur un système basé sur Debian, suivez ces étapes. Des instructions pour la construction à partir de la source sont également fournies. dans le référentiel du projet.
apt update
apt install libapache2-mod-evasive
Installations via apt
activer le module automatiquement.
Vous pouvez le vérifier en utilisant le apachectl
utilitaire:
apachectl -M | grep évasif
vous devriez voir le nom du module affiché s’il est actif.
Configurer les options de verrouillage
Le fichier de configuration mod_evasive se trouve généralement à l'adresse /etc/apache2/mods-enabled/evasive.conf
. Utilise le même format que les autres fichiers de configuration Apache. Vous pouvez trouver une référence complète dans le mod_evasive
documents.
Ensuite, exemple de fichier de configuration avec diverses personnalisations affichées:
<SiModule mod_evasive20.c> DOSPageCount 5 DOSSiteCount 10 DOSPageInterval 1 Intervalle DOSSite 2 DOSBlockingPériode 300 DOSEmailNotify [email protected] </SiModule>
mod_evasive distingue les requêtes de page et les demandes de placer. Vous pouvez configurer ces deux facteurs de blocage indépendamment. Cet exemple bloquera les clients demandant le même URI cinq fois dans un intervalle d'une seconde. En outre, Les clients demandant plus de dix URI à partir d'un même site seront bloqués dans un intervalle de deux secondes.
Lorsque l'une des limites est dépassée, le client ne pourra plus faire de demande pendant un délai de cinq minutes (300 secondes). mod_evasive enverra un e-mail à [email protected]
notifier 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. Sélectionnez le DOSSystemCommand
ajustement, à l'aide de %s
pour indiquer 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. Parfois, les développeurs peuvent créer de gros volumes de requêtes tout en travaillant sur un serveur, que ce soit intentionnellement ou non.
Utilisez le DOSWhiteList
paramètres pour spécifier les plages d'adresses IP à ignorer. Aucune limite ne sera appliquée à l'une de ces adresses.
DOSWhiteListe 127.0.0.1 DOSWhiteListe 192.168.0.*
Comment ça marche?
mod_evasive fonctionne en conservant une table de hachage des adresses IP et des URI dans une liste noire temporaire. L'adresse IP et l'URI sont codé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 plantage se produit lorsqu'un URI ou un site apparaît dans la table de hachage IP plus souvent que ce qui est autorisé. Cela se traduit par un 403
le code d'état est renvoyé au client. Le statut est la seule réponse que le client recevra, qui minimise les ressources du serveur nécessaires pour traiter les requêtes considérées comme fausses ou malveillantes.
Une fois la limite atteinte, le client doit attendre le temps spécifié. DOSBlockingPeriod
avant de pouvoir faire une autre demande avec succès. Si vous réessayez pendant la période d'attente, un confinement encore plus long sera imposé. Les autres adresses IP continuent d'être prises en charge comme d'habitude et ne devraient pas subir de pannes dues à une tentative de déni de service.
Le module peut entraîner une pénalité de performances sur les serveurs très actifs. Vous devez 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
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 à vos autres demandes récentes.
DOSHashTableTaille 32768
Testez votre installation
La meilleure façon de tester mod_evasive est de lancer un court flot de requêtes pour vérifier comment votre serveur répond. Avec mod_evasive correctement activé, Je devrais commencer à voir rapidement 403 et une alerte email si configuré.
Les ab
L'outil de ligne de commande peut être utilisé pour lancer des connexions de masse:
ab -n 1000 -c 50 http://...
Vous devriez 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 à faire.-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 d'avoir spécifié la bonne adresse de serveur avant de soumettre des demandes !!
résumé
mod_evasive est un module simple mais efficace pour empêcher les attaques par force brute d'affecter les performances de votre serveur. Vous pouvez configurer des limites par page et par site qui s'appliquent à chaque client essayant de se connecter. Si le client finit par dépasser la limite, vous recevrez un 403 et vous devez céder à une période de confinement temporaire.
En tant qu'administrateur, vous pouvez choisir de recevoir des alertes par e-mail lorsqu'un nouveau verrouillage est imposé. Cela vous tient informé des attaques possibles et vous permet de surveiller les faux positifs.. Vous avez besoin d'une pile de messagerie qui fonctionne sur le serveur: mod_evasive envoie à l'aide de l'agent de transfert de messagerie système.
Finalement, 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 appeler un utilisateur de la base de données, créer une alerte dans un outil de surveillance tiers ou diffuser le blocage à vos autres serveurs pour protéger des parties supplémentaires de votre infrastructure.