vendredi 17 avril 2009

APACHE : Utiliser le mod_evasive

Le mod-evasive permet d'éviter les attaques par saturation (multiples connections en un minimum de temps)

Installer le mod-evasive (sous Debian)
apt-get install libapache2-mod-evasive

Activer le mod-evasive
a2enmod mod-evasive

Dans /etc/apache2/conf.d/evasive ajouter ceci


DOSHashTableSize 3097
# Nbre d'affichage de la même page par IP : 2
DOSPageCount 2
# Nbre d'affichage du même site par IP : 50
DOSSiteCount 50
# Interval d'affichage de la même page par IP : 1 seconde
DOSPageInterval 1
# Interval d'affichage du même site par IP : 1 seconde
DOSSiteInterval 1
# Durée du blocus (exprimé en secondes)
DOSBlockingPeriod 10
# Notification par adresse email pour être prévenu
DOSEmailNotify adresse@email.com
# nouveau dossier pour y placer le logs du module
DOSLogDir "/var/log/apache2/evasive/"
# Utlisation de iptables pour bannier l'IP qui tente de saturer le serveur
#DOSSystemCommand "/sbin/iptables -I INPUT -s %s -j DROP"
# Liste blanche permettant à une IP d'effecuer un nombre illimité de requètes
#DOSWhiteLt 127.0.0.1


Puis créer le dossier /var/log/apache2/evasive/ et lui donner les bons droits pour que Apache puisse ecrire dedans.
mkdir /var/log/apache2/evasive
chown -R www-data:www-data /var/log/apache2/evasive

Et redemarrer Apache, verifier tous les logs.

Pour tester, on peut utiliser un fichier Perl.

Creer test-evasive.pl et y ajouter ceci:
#!/usr/bin/perl
# test.pl: small script to test mod_dosevasive's effectiveness

use IO::Socket;
use strict;

for(0..50) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "127.0.0.1:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
$response = <$SOCKET>;
print $response;
close($SOCKET);
}

Puis
chmod u+x test-evasive.pl
./test-evasive

Vous devez avoir des reponses normales "200" puis des reponses "403" lorsque que le mod-evasive detecte l'attaque par saturation du script test-evasive.pl.

Aucun commentaire:

Enregistrer un commentaire