Mod_evasive Un module anti-dos pour Apache
Mod_evasive est un module Apache pour contrer les attaques DOS. Celui-ci est par exemple capable de détecter lorsqu’un utilisateur demande un trop grand nombre de pages sur un site web, sur un délai de temps très court. Voici comment l’installer et le configurer pour une utilisation basique.
Installation de Mod_evasive
Pour installer Mod_evasive sur une distribution à base de RPM (Red Hat, centOS, Fedora…), ouvrez un terminal et lancez la commande suivante en root :
install EPEL
# yum install mod_evasive
Ou celle-ci pour une distribution à base de Debian :
# sudo apt-get install libapache2-mod-evasive
Configuration basique de Mod_evasive
Toute la configuration de Mod_evasive se trouve dans le fichier /etc/httpd/conf.d/mod_evasive.conf (ou /etc/apache2/conf.d/mod-evasive pour une distribution à base de debian). Voici un exemple de configuration à utiliser :
<IfModule mod_evasive20.c> DOSHashTableSize 3097 # Pas plus de 2 pages par seconde DOSPageCount 2 DOSPageInterval 1 # Pas plus de 150 requetes par seconde (images, CSS...) DOSSiteCount 150 DOSSiteInterval 1 # Periode en seconde pendant laquelle on bloque le client DOSBlockingPeriod 10 # Dossier contenant les IP blaclistes DOSLogDir "/var/lock/mod_evasive" </IfModule>
On met ensuite en place le dossier qui va stocker les adresses IP blacklistées :
# mkdir -p /var/lock/mod_evasivechown -R apache:apache /var/lock/mod_evasive
Et on relance le serveur Apache pour prendre en compte les modifications, avec cette commande pour une distribution à base de RPM :
# service httpd restart
Ou celle-ci pour une distribution à base de Debian :
# /etc/init.d/apache2 restart
Pour tester le module, je vous recommande de mettre des valeurs assez faibles et de regarder ce qui se passe. Normalement, toutes les images de vos sites ne s’afficheront pas et le dossier /var/lock/mod_evasive devrait se remplir.
Pour finir, on peut mettre en place la crontab suivante pour puger le dossier de blacklist de temps en temps :
# Menage mod_evasive 00 5 * * * find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;