×
Bienvenue sur le nouveau serveur de l'Aru2L (17 Nov 2012)

Nous voila en phase beta suite à une refonte totale du site de l'aru2L, n'hésitez pas à faire remonter les Bugs que vous pouvez trouver sur contact(@)aru2l.org (enlever les parenthèses) ou en créant un post sur le forum.
Nous vous prions de bien vouloir nous excusez pour la gène occasionnée.

Topic-icon Mod_evasive sur SME8

Plus d'informations
il y a 5 ans 1 mois #5977 par lebipbip
lebipbip a créé le sujet : Mod_evasive sur SME8
Comme certains d'entre vous le savent, je suis régulièrement victime d'attaques par flood de requêtes http qui mettent mon petit serveur à genoux.

A force de chercher des solutions en tout genre, je suis tombé sur ce qui semble être LA solution: un module pour apache nommé mod_evasive.

ce module détecte lorsqu'un client demande un trop grand nombre de pages à votre serveur dans un laps de temps très court. Il rejette ensuite toutes les demandes pendant 10 secondes. Au passage, il réinitialise le compteur de 10 secondes à chaque nouvelle demande dans ce laps de temps...
Vous pouvez également choisir d'exécuter une commande à chaque fois qu'une ip est bloquée. pour alimenter votre fail2ban, par exemple ou ajouter un règle à votre pare-feu.

Si vous avez une distribution "classique" pour faire tourner votre serveur, ce module doit être packagé et prêt à l'emploi sur l'un de vos dépôt logiciel. Pour s'en convaincre, il suffit de faire une petite recherche sur l'excellent site pkgs.org

Bon. Mais moi, j'ai une sme-server. Et bien sûr, un simple
yum install mod_evasive
ne m'a servi à rien.... Et j'avoue que j'ai pas trop cherché comment activer un autre dépôt juste pour ça.

J'ai donc téléchargé le paquet mod_evasive-1.10.1-3.el5.i386.rpm directement depuis l'url récupérée sur pkgs:
wget http://pkgs.org/centos-5-rhel-5/epel-i386/mod_evasive-1.10.1-3.el5.i386.rpm/download/

Une fois téléchargé, on l'installe:
yum localinstall mod_evasive-1.10.1-3.el5.i386.rpm

Jusque là, ça va.

Maintenant, ceux qui connaissent un peu la sme se doutent que ça peut pas être aussi simple. Effectivement. Mais rassurez-vous, c'est pas franchement compliqué non plus.

D'abord, on copie le fichier de configuration de mod_evasive au bon endroit, en le renommant de façon à ce qu'il soit pris en compte par la sme
cp /etc/httpd/conf.d/mod_evasive.conf /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20mod_evasive

Ensuite, on passe au paramétrage. Ouvrez le fichier 20mod_evasive avec votre éditeur de texte préféré (vi, vim, nano... ;-) )
nano /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20mod_evasive
Oui, j'aime bien nano :P (un jour je vous dirais comment utiliser gedit ou kwrite grâce à sshfs)

Puis éditez les paramètres à votre convenance:

DOSHashTableSize 3097 : Taille de la table hash, plus la valeur est grande, plus il faudra de mémoire pour parcourir la table, plus la valeur sera petite, plus le parcourt de la table sera rapide. Le mieux est encore de laisser la valeur par défaut.
DOSPageCount 2 : Nombre de requêtes pour une même page dans l’intervalle "DOSPageInvernal", au delà, l'IP est bloquée. Pas plus de 2 pages par seconde avec la configuration par défaut
DOSSiteCount 150 : Nombre de requêtes pour un même site dans l'intervale "DOSSiteInvernal, au delà, l'IP est bloquée. Pas plus de 150 requêtes (css, images, etc...) par seconde et par site avec la configuration par défaut.
DOSPageInterval 1 : Intervalle du nombre de pages en secondes.
DOSSiteInterval 1 : Idem qu'au dessus mais pour le site
DOSBlockingPeriod 10 : Période en seconde pendant laquelle l'IP sera bloquée. Je rappelle que le compteur est réinitialisé à chaque nouvelle requête qui interviendrait pendant cette période. il est donc inutile de mettre un temps trop élevé.
DOSEmailNotify : commenté par défaut. Si vous voulez être informé chaque fois q'une ip est bloquée, mettez votre adresse mail. Sur sme, il suffit de mettre admin -> DOSEmailNotify admin
DOSSystemCommand : commenté par défaut. C'est ici que vous pouvez écrire la commande qui sera exécutée à chaque blocage.
DOSLogDir : commenté par défaut. Emplacement du dossier de log. Attention, il doit être accessible en écriture pour apache, et n'est pas purgé par le module. C'est donc à vous de faire le nécessaire pour faire un peu de ménage de temps en temps.
DOSWhitelist : commenté par défaut. Vous pouvez définir une liste blanche d'IPs qui ne seront jamais filtrées. Vos postes sur le réseau local, typiquement.

Personnellement, je n'ai changé que le "DOSSiteCount" pour le passer à 50 et l'adresse mail pour être informé.

Pour finir, il suffit de ré-assembler le fichier de configuration d'apache pour y ajouter notre fichier
expand-template /etc/httpd/conf/httpd.conf
et de relancer apache
/etc/init.d/httpd-e-smith restart

Vous pouvez vérifier si la modification a été prise en compte soit en regardant le fichier httpd.conf résultant
nano /etc/httpd/conf/httpd.conf
Vous devriez y voir la ligne

LoadModule evasive20_module modules/mod_evasive20.so

suivie de votre configuration du module

ou bien en vérifiant que le module est bien chargé:
apachectl -t -D DUMP_MODULES
Qui va lister tous les modules chargés dont "evasive20_module (shared)" si tout va bien.

Maintenant, si vous voulez être sur que ça marche, il suffit de mettre des valeurs très basses surtout pour DOSSiteCount. Mettez 5 ou 10, et allez faire un tour sur vos sites ;-) n'oubliez pas de recharger votre config' et de relancer apache à chaque changement...


Fabrice Bordes
secrétaire de l`Aru2l
bordesfabrice(at)gmail(dot)com

Connexion pour participer à la conversation.

Plus d'informations
il y a 5 ans 1 mois #5978 par stephdl
stephdl a répondu au sujet : Mod_evasive sur SME8
Tiens sme is not dead :-/

.....être Libre, c'est aussi être Militant.....

stephane (att) de-labrusse (punto) fr

Connexion pour participer à la conversation.

Plus d'informations
il y a 5 ans 1 mois #5980 par lebipbip
lebipbip a répondu au sujet : Mod_evasive sur SME8
Non elle est pas morte.
Elle revit, même plutôt, chez moi. Il a l'air pas mal efficace ce module. même si les seules alertes que j'ai eu pour le moment venaient de moi...
D'ailleurs, j'ai finalement remonté (pour l'instant) le DOSSiteCount à 190. Sans ça, la synchro de l'agenda d'Android sur Owncloud était bloquée :S ... Efficace! ;)


Fabrice Bordes
secrétaire de l`Aru2l
bordesfabrice(at)gmail(dot)com

Connexion pour participer à la conversation.

Temps de génération de la page : 0.129 secondes