System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Compilation Installation et Configuration de mod_evasive

stop mod_evasive

C'est un module obligatoire !

J'ai trouvé mon bonheur ! depuis quelques temps j'avais des soucis d'uptime sur mon serveur farfelu car des bandits de grands chemins oeuvraient dans l'ombre et sans scrupules.

Et je suis tombé sur mod_evasive...

mod_evasive et qui permet de détecter les floods et les tentatives de déni de service (DOS). Ce module renvoie des erreurs HTTP 403 lorsque le seuil de sollicitation du serveur apache par IP a été dépassé.

Télécharger mod_evasive :

Vous le trouverez ici : http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz

cd /opt/SOURCES
wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
cd mod_evasive

Installation :

Trouvez votre binaire apxs d'apache avec find ou locate et faites ceci :

/opt/httpd/bin/apxs  -i -a -c mod_evasive20.c

Cette commande devrait vous copier le fichier : mod_evasive20.so dans le dossier des modules d'apache, pour moi /opt/httpd/modules. Elle devrait aussi vous ajouter ceci :

LoadModule evasive20_module   modules/mod_evasive20.so

dans votre apache.conf ou httpd.conf.

Configuration :

Maintenant il vous faut copier ce qui va suivre dans votre httpd.conf (ou apache.conf)

# MODEVASIVE

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 300
DOSEmailNotify "admin@domaine.fr"
# Destination du log (le users apache doit pouvoir écrire dans l'arborescence du où des répertoires)
DOSLogDir "/var/log/mod_evasive/"
#DOSSystemCommand "/sbin/iptables -I INPUT -s %s -j DROP" fonctionne si l'user apache a des droits sur iptables
DOSSystemCommand "/bin/echo %s >> /var/log/mod_evasive/dos_evasive.log && /bin/date >> /var/log/mod_evasive/dos_evasive.log"
# Liste blanche
DOSWhiteList 127.0.0.1
DOSWhiteList 91.xxx.xxx.xx
</IfModule>

Explications :

DOSSiteCount : Le nombre maximal de requêtes qu'une adresse IP source peut réaliser sur le même enfant pendant une unité de temps sans être ajoutée à la liste noire.

DOSSiteInterval : L'unité de temps (en secondes) évoquée dans la directive DOSSiteCount. La valeur par défaut est d'une seconde.

DOSPageCount : Le nombre maximal de requêtes qu'une adresse IP source peut réaliser sur la même ressource (même URL) pendant une unité de temps sans être ajoutée à la liste noire.

DOSPageInterval : L'unité de temps évoquée dans la directive DOSPageCount.

DOSBlockingPeriod : Désigne la durée pendant laquelle tous les accès des adresses IP en liste noire seront refusés et recevront une erreur 403. Par défaut, cette durée est de 10 secondes.

DOSEmailNotify : Précise une adresse email à laquelle envoyer un courriel lorsqu'une adresse IP est ajoutée en liste noire. (Attention de bien positionner MAILER dans les sources du module pour utiliser cette directive).

DOSSystemCommand : Une commande à appeler pour, par exemple, ajouter l'adresse en liste noire sur un routeur.

DOSWhiteList : Spécifie une adresse IP à ne jamais positionner en liste noire. Il est courant de positionner cette option à 127.0.0.* pour éviter de bloquer nos éventuels propres accès récursifs ou autres robots de référencement. En production, cette option ne devrait jamais être utilisée pour désigner un réseau d'utilisateurs humains légitimes : les mécanismes internes du module garantissent que le trafic légitime ne sera pas bloqué. Cette directive peut être positionnée plusieurs fois avec divers arguments, ceux-ci seront cumulés dans la configuration.

N'oubliez pas de créer les dossiers et fichier de log avec des droits d'écriture pour l'user apache (www-data ou autre).

Vous n'avez plus qu'a redémarrer votre apache et vérifier avec la commande httpd -t -D DUMP_MODULES que mod_evasive est bien chargé.

Par GanGan | le vendredi, avril 3 2009 08:00

Commentaires

1. j0rn

vendredi, avril 3 2009 | 09:51

Si quelqu'un a un retour d'expérience de ce truc là sur une production, notament en ce qui concerne les perfs je suis preneur :)

2. GanGan

vendredi, avril 3 2009 | 11:43

Sur les performance pas de soucis mais sur son efficacité je commence a douter fortement...
il faut que j'affine les directives.
3. Nazoréen

mardi, octobre 20 2009 | 17:34

Qu'en est-il des performances avec les nouvelles directives ? as tu trouvé les paramètres adéquats ?
Si oui lesquels ?

4. lolo888

samedi, décembre 19 2009 | 22:44

la commande equivalente à httpd -t -D DUMP_MODULES est apache2ctl -M

5. liva

dimanche, février 21 2010 | 15:48

mod_evasive n' est qu' un outil de plus et surement pas un gage de sécurité. Les premiers inconvénients surviennent lorsqu' un gif est appellé plusieurs fois sur une page. Par défaut, si je met un "puce.gif" devant chaque message de mon forum et que j' affiche 51 messages, je serais considéré comme floodeur et donc banni pour 10 secondes. Je dois donc adapter le nombre de message affichés OU la conf de mod_evasive suivant ce que mon serveur peut supporter, ce qui est biscornue en terme de sécurité.
Mais plus important, mod_evasive risque de bloquer les bots des moteurs de recherche, googlebot, yahoo, etc ...
Les admins ont donc prit pour habitude de DoSWhiteLister les plages IP de ces bots. Ce qui est une con**** monumentale car la majorité des DoS sont lancés depuis des adresses IP spoofées. Il suffit donc de se faire passer pour un bot google pour passer outre la configuration actuelles de la grosse majorité des serveurs utilisant ce module.

A installer, à configurer, à ne lancer qu' en cas d' attaques et ne jamais utiliser DosWhiteList. Du moins c' est juste mon conseil ;)

6. GanGan

dimanche, février 21 2010 | 22:55

Merci pour ce commentaire très constructif avec un point de vue et un avis clair.

Je suis moi aussi arrivé à la même conclusion, je vais creuser mod_qos pour voir ce qu'il donne.

7. Fugitif

mardi, mars 23 2010 | 13:37

J'ai aussi mod_evasive d'installer et le même problème que Liva.
Il est très difficile à configurer et en cas de blog avec x images on se fait bannir assez vite.
Je suis plus pour le faite d'utiliser iptables et limiter le nombres de requêtes par seconde ou de connexions par ip. Cela dépend aussi surtout des applications qu'il y a sur le serveur.

8. GanGan

mardi, mars 23 2010 | 13:41

Quelles règles Iptables utilise tu ? je pense que ça peut interesser pas mal de monde.

9. Fugitif

mardi, mars 23 2010 | 14:39

Ben il existe plusieurs modules iptables
hashlimit, connlimit, limit etc...

10. Camille

samedi, septembre 11 2010 | 20:47

Merci pour ce commentaire très constructif avec un point de vue et un avis clair.