Samstag, 21. Januar 2012

Apache Server DDOS schutz Script

Beim konfigurieren des neuen Servers bin ich über ein nettes Apache2 Modul gestolpert.
Mit mod_evasive werden DDos Attacken erschwert. Im einzelnen bedeutet dies, das mod_evasive die Zugriffe auf einer Website innerhalb einer bestimmten Zeit mitschreibt und (je nach Konfiguration) mit einem 403 Forbidden quittiert, falls es zu viele werden.

Das Modul arbeitet auf der obersten Ebene des Servers also ist keine spezielle VirtualHost Konfiguration nötig.

Die Installation (Debian Lenny)

# apt-get install libapache2-mod-evasive

damit ist bereits das gröbste getan für die installation des DDOS schutzes. Allerdings sollte noch das Hash-Log Verzeichnis angelegt werden:

# mkdir -p /var/lock/mod_evasive
# chown -R www-data.root /var/lock/mod_evasive

Und natürlich sollten die Berechtigungen für die Verzeichnisse gesetzt werden.

Die Konfiguration



Im Verzeichnis: /etc/apache2/mods-available/ dürfte Debian bereits die Direktive zum laden des Moduls eingepflegt haben.
# cat /etc/apache2/mods-available/mod-evasive.load
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so

Wir hängen an die entsprechende Datei die Konfigurationsparameter an:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir "/var/lock/mod_evasive"
</IfModule>Noch ein Reload der Konfig:



# /etc/init.d/apache2 force-reload



Und damit wäre die Installation abgeschlossen. Eine gute Quelle zu den einzelnen
 Parametern können Sie HIER: http://www.stimpyrama.org/blog/39-computer/107-modevasive nachsehen.



Test

Um das Modul zu testen, liefert der Entwickler gleich ein Perl Script mit:


#!/usr/bin/perl
# test.pl: small script to test mod_dosevasive's effectiveness
use IO::Socket;
use strict;
for(0..100) {
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);


Das Script kann unter: /usr/share/doc/libapache2-mod-evasive/examples/test.pl gefunden werden.

Test des Scriptes:
Um das Script auszuführen

chmod u+x test.pl
./test.pl

0 Kommentare:

Kommentar veröffentlichen

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best WordPress Web Hosting