19 Mai 2012, 04:00:14 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: mod_evasive - Apache gegen DoS Attacken absichern  (Gelesen 10619 mal)
0 Mitglieder und 2 Gäste betrachten dieses Thema.
Chris
Admin
Forenguru
*****
Beiträge: 2042



WWW
« am: 06 Juni 2009, 17:53:06 »

Anleitung zum Absichern unseres Apache Webservers gegen die gefürchteten DoS-Angriffe unter Verwendung des mod_evasive Moduls.

Feedback & Fragen zu diesem Beitrag sind nicht nur willkommen sondern ausdrücklich erwünscht ;-)!

Was kann mod_evasive?

Das Apache Modul mod_evasive kann unseren Webserver gegen DoS-Angriffe / Attacken schützen und basiert im Grunde auf einer Blacklist. Dazu legt mod_evasive in einer internen Hash Tabelle die IP Adessen der Clients ab, zählt diese und verhindert innerhalb eines bestimmten (definierbaren) Zeitraumes den erneuten Zugriff. Nachdem der Aufrufer das Limit der Anfragen überschritten hat erhält er im Webbrowser/Client die 403 Forbidden Meldung und kann vorerst unter der IP-Adresse keine Inhalte mehr abrufen.

Das schöne ist das wir hiermit auch BruteForce-Attacken aller Art über das HTTP-Protokoll verhindern können oder es dem Angreifer zumindest deutlich schwerer machen diese durchzuführen..

Was ist so schlimm an DoS Attacken?

Das Problem liegt auf der Hand, ruft ein Client innerhalb kurzer Zeit sehr oft Inhalte unserer Servers ab wird dieser entspr. belastet und geht je nach Auslastung des Servers schnell in die "Kinie". Das ganze führt zum Nachteil der normalen Besuchehr, weil der Server dann entweder nur sehr langsam antwortet oder wenn es schlimmer kommt auch gar nicht mehr. Bei statischen HTML Dokumenten ist ein solcher Angriff nicht so wirkungsvoll, setzen wir aber Scriptsprache wie PHP auf unseren Server ein um Inhalte dynamisch zu erstellen benötigt der Server für jede Anfrage deutlich mehr Ressourcen, ganz davon abgesehen das dynamische Inhalte auch noch an Datenbanken gekoppelt sind. In einem solchen Fall hat der Angreifer die Möglichkeit über eine DoS Attacke alle Dienste zu überlasten die an die Auslieferung der Dokumente gebunden sind.

Wo gegen hilft mod_evasive nicht?

Gegen massive DoS Angriffe.
Sobald ein Angriff die gesamte Bandbreite des Servers beansprucht ist das Modul mod_evasive hilflos und kann die Angriffe nicht mehr verhindern. Hier helfen nur weitere Massnahmen auf Software-Ebene oder viel besser, Lösungen die bereits vor der eigentlichen Serverhardware zum Einsatz kommen - Stichwort Router.

Wie installiere ich mod_evasive?

Zu unserer Freude ist das Modul in den offiziellen Paketquellen von Debian Lenny enthalten, die Installation des Moduls ist daher denkbar einfach und erfolgt wie gehabt durch ein einfaches:

Code:
apt-get install libapache2-mod-evasive

Damit ist das Modul dann auch schon installiert, evtl. müssen wir unsere Apache-Config einmal neuladen, welches wir mit:

Code:
/etc/init.d/apache2 force-reload

durchführen können.

Um unser mod_evasive zu konfigurieren müssen wir in unserer Apache Konfiguration das Modul konfigurieren:

Code:
<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

Optional können wir die folgenden Direktiven mit in unsere Konfiguration einbringen um uns über eine Attacke informieren zu lassen, eine bestimmte Aktion auszuführen oder ein Logfile zu schreiben:

Code:
DOSEmailNotify me@example.com
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
DOSLogDir "/var/lock/mod_evasive"

Der Entwickler vom mod_evasive hat an alles gedacht, wir können sogar eine eigene Whitelist anlegen:

Code:
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*

Und woher weis ich ob mod_evasive funktioniert?

Wenn wir das Modul testen möchten um zu schauen wann es anschlägt oder um ein "Fine-Tuning" auf unsere Bedürfnisse durch zuführen können wir das Testscript aus den Quellpaketen des Entwicklers "test.pl" nutzen:

Code:
#!/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);
}
facebook-like.png Gespeichert

Wir auf touchdesign und facebook
Webhosting: Homepage-Kosten.de Webhosting Preisvergleich
E-Commerce: ClickandBuy | Sofortüberweisung
Tags:
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006, Simple Machines | Impressum | Datenschutz
Seite erstellt in 0.049 Sekunden mit 20 Zugriffen.