Anti DDOS avec mod_evasive pour Apache 2
mod_evasive est un module pour la sécurité Apache 2 qui peut être utilisé pour protéger contre divers types d’attaques sur le serveur web Apache, y compris DDoS, DoS et force brute. Voici comment l’utiliser.
Le module mod_evasive pour Apache2 fournit une action évasive en cas d’attaques et signale des activités malveillantes via e-mail et syslog. Il fonctionne en inspectant le trafic entrant vers un serveur Web Apache à l’aide d’une table de hachage dynamique d’adresses IP et d’URL, puis bloque le trafic provenant d’adresses IP qui dépassent un seuil prédéterminé.
Il permet de chercher à détecter les demandes trop importantes qui sollicitent une page sur un site web en un délai de temps très court et donc de contrer des attaques de déni de service (DoS : Denial of Service), DDOS et Brute force.
Voilà comment installer et utiliser mod_evasive pour protéger le serveur web Apache.
Configuration requise
- Serveur Ubuntu 16.04 ou supérieur nouvellement déployé.
- Configuration du serveur web Apache2 et configuration.
- Une adresse IP statique 192.168.1.10 est configurée sur votre serveur.
Mettre à jour le système
Avant de commencer, il est recommandé de mettre à jour votre système avec la dernière version stable avec la commande suivante :
#apt-get update -y apt-get upgrade -y
Une fois votre système mis à jour, vous pouvez procéder à l’installation de mod_evasive.
Installer mod_evasive
Par défaut, mod_evasive est disponible dans le référentiel de paquets Ubuntu 16.04. Vous pouvez facilement l’installer avec la commande suivante :
#apt-get install libapache2-mod-evasive
Une fois mod_evasive installé, vous pouvez le vérifier avec la commande suivante :
#apachectl -M | grep evasive
Si tout va bien, vous devriez voir la sortie suivante :
evasive20_module (shared)
Configurer mod_evasive
Le fichier de configuration par défaut Mod_evasive se trouve dans /etc/apache2/mods-enabled/evasive.conf.
Par défaut, les options de configuration mod_evasive sont désactivées. Vous pouvez les activer en éditant le fichier evasive.conf, puis le personnaliser selon vos besoins.
nano /etc/apache2/mods-enabled/evasive.conf
Changez le fichier comme indiqué ci-dessous :
DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSEmailNotify [email protected] DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" DOSLogDir "/var/log/mod_evasive"
Enregistrez et fermez le fichier, puis créez un répertoire de journaux pour mod_evasive.
# mkdir /var/log/mod_evasive # chown -R www-data:www-data /var/log/mod_evasive
Enfin, redémarrez le service Apache :
systemctl restart apache2
Les paramètres ci-dessus sont entièrement personnalisables et doivent être configurés en fonction des capacités de votre serveur et des flux de trafic attendus.
L’explication de chaque paramètre est la suivante :
- DOSHashTableSize: Spécifie comment mod_evasive suit qui accède à quoi. L’augmentation du nombre améliore les performances, mais consomme également plus de mémoire.
- DOSPageCount : Spécifie un seuil pour le nombre de demandes pour la même page par intervalle de page.
- DOSSiteCount : Spécifie le seuil pour le nombre total de demandes d’un objet par le même client sur le même écouteur par intervalle de site.
- DOSPageInterval : Intervalle utilisé dans le seuil de nombre de pages.
- DOSSiteInterval : Intervalle utilisé dans le seuil de nombre de sites.
- DOSBlockingPeriod : Indique la durée (en secondes) pendant laquelle une adresse IP est bloquée.
- DOSEmailNotify : Spécifie l’adresse e-mail de notification si l’adresse IP est mise en liste noire.
- DOSLogDir : Spécifie le répertoire du journal.
Test mod_evasive
Une fois que tout est configuré correctement, permet de tester si le module fonctionne correctement.
Ici, nous allons utiliser le script test.pl écrit par les développeurs mod_evasive pour tester mod_evasive.
C’est un script perl situé dans /usr/share/doc/libapache2-mod-evasive/examples/test.pl.
Exécutez le script avec la commande suivante:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Si tout va bien, vous devriez voir la sortie suivante :
HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden
Vous pouvez également consulter le journal des messages en exécutant la commande suivante :
tail -f /var/mail/www-data
Vous devriez voir que 127.0.0.1 est blacklisté par mod_evasive :
Message-Id: <E1cwkeH-0000WE-EQ@master> From: www-data <www-data@node1> To: [email protected] Subject: HTTP BLACKLIST 127.0.0.1 mod_evasive HTTP Blacklisted 127.0.0.1 --1491635945-eximdsn-1804289383--
Références :
Denis
4 mai 2023 à 18 h 18 minMerci pour le tuto
Idem, mais pour Fedora. ;+)
Zodiac
10 février 2024 à 16 h 06 minOh super que ça soit intégré à apache 2, ça m’évite plusieurs jours de code ZZZZZ