Mod_evasive sur SME8
- lebipbip
-
Auteur du sujet
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 304
- Remerciements reçus 0
il y a 10 ans 9 mois #5977
par lebipbip
Mod_evasive sur SME8 a été créé par lebipbip
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 simplene 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:
Une fois téléchargé, on l'installe:
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
Ensuite, on passe au paramétrage. Ouvrez le fichier 20mod_evasive avec votre éditeur de texte préféré (vi, vim, nano...
)Oui, j'aime bien nano
(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 fichieret de relancer apache
Vous pouvez vérifier si la modification a été prise en compte soit en regardant le fichier httpd.conf résultantVous devriez y voir la ligne
ou bien en vérifiant que le module est bien chargé: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...
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
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

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
/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
suivie de votre configuration du moduleLoadModule evasive20_module modules/mod_evasive20.so
ou bien en vérifiant que le module est bien chargé:
apachectl -t -D DUMP_MODULES
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

Connexion pour participer à la conversation.
- stephdl
-
- Hors Ligne
- Administrateur
-
- le libre vous va si bien
il y a 10 ans 9 mois #5978
par stephdl
.....être Libre, c'est aussi être Militant.....
stephane (att) de-labrusse (punto) fr
Réponse de stephdl sur le 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.
- lebipbip
-
Auteur du sujet
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 304
- Remerciements reçus 0
il y a 10 ans 9 mois #5980
par lebipbip
Réponse de lebipbip sur le 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
... Efficace!
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


Connexion pour participer à la conversation.
Temps de génération de la page : 0.139 secondes