Apache Mod_evasive : la solution contre les floods de spam
Depuis plusieurs semaines mon serveur a quelques soucis de temps à autre suite à des floods inattendus de requêtes HTTP.
Ces flood montent jusqu'à plus de 100 requêtes simultanées et provoquent une surconsommation CPU de mon serveur Web ainsi que des freeze au niveau Apache.
J'ai analysé les logs Apache, mais rien à faire les floodeurs proviennent d'adresse IP différentes.
J'ai donc installé un module Apache qui se nomme mod_evasive et qui permet de détecter les floods et les tentatives de déni de service. Ce module renvoie des erreurs HTTP 403 lorsque le seuil de sollicitation du serveur Web par IP a été dépassé. Ce blocage dure pendant 10 secondes (paramétrable). Il est aussi possible de demander au module d'exécuter une commande lorsque qu'un flood est détecté, il est ainsi possible d'ajouter une règle Iptables à chaque nouvelle détection de flood.
Ce module est téléchargeable depuis cette adresse :
http://www.zdziarski.com/projects/mod_evasive/
Il s'installe vraiment très simplement :
http://wiki.unelectronlibre.info/serveurweb/mod_evasive_avec_apache2
Cependant, il ne fonctionne pas correctement avec toutes les applications web, le chargement de la page d'administration de Dotclear2 pose un problème par exemple. Les icônes des plugins, dans le menu vertical, pointent tous vers la même URL : "index.php?pf=", lorsque la page est chargée par le navigateur, le module détecte plusieurs requêtes HTTP vers la même ressource et bloque le client, ce qui est très embêtant.
J'ai donc activé le module en mettant mon IP dans la Whitelist. Laissez-moi un message si vous êtes tombé sur des erreurs 403 Forbidden inattendues, je reparaméterai le module pour qu'il soit moins paranoïaque ;-)