Open Source im professionellen Einsatz
Linux-Magazin 12/2005

Aus dem Alltag eines Sysadmin: Mod_evasive

Friede im Indianerland

Der Webserver Apache vermag sich aus eigener Kraft zu wehren, wenn DoS-Angreifer das Kriegsbeil ausgraben. Er setzt nur den einfach zu konfigurierenden Mod_evasive als Späher und Spurenleser ein.

561

Inhalt

 

86

Praxistipp: Cfengine
Ein Open-Source-Werkzeug zur automatischen
Systemadministration.

91

Admin-Workshop
Damit Logdateien nicht zu Ungetümen heranwachsen, geht's
diesmal rund.

Jeder Admin kennt, erlebt und hasst sie: Denial-of-Service-Attacken. Egal ob der Verursacher aus Dummheit, Bosheit oder krankem Spieltrieb handelt, das massive Request-Bombardement erzeugt einen Pupillenstillstand beim Server und Adrenalinschübe beim Admin. Am häufigsten sind Webserver betroffen. AEMM [1] rüstet den Apachen mit einem Selbstverteidigungs-Mechanismus aus. Der Name "Apache Evasive Maneuvers Module" ist selbst anglophonen Naturen zu lang, weshalb alle von Mod_evasive sprechen - obwohl eigentlich nur das Apache-Modul von AEMM so heißt.

Sie sind unerwünscht!

Mod_evasive führt im Kern eine schwarze Liste: Das Modul überprüft mit der Liste bei jeder eingehenden Anfrage, ob innerhalb der letzten Sekunde mehrere gleichartige Anfragen von derselben IP kamen. Die genauen Schwellenwerte sind einstellbar. Ebenso checkt Mod_evasive, ob der Anfrager in der letzten Sekunde mehr als 50 Objekte abgerufen hat.

Trifft eine der Bedingungen zu, schickt Apache statt der erwünschten Antwort einen 403er und spart damit eine Menge Bandbreite. Zudem schreibt Mod_evasive, falls gewünscht, einen Eintrag ins Syslog oder schickt mir eine Mail. Die Konsequenz für den Angreifer ist, dass für die nächsten 10 Sekunden alle Anfragen von seiner IP in einem 403 enden. Versucht er es trotzdem weiter, verlängert sich die Sperrzeit.

Ich benutze auf meinem Testrechner einen Apache 2.0, aber die zum Paket gehörige Readme-Datei liefert auch Instruktionen für Apache 1.3 und den I-Planet. Zum Einbetten von Modulen haben die meisten Apaches einen kleinen Helfer namens Apxs (Apache Extension Tool) an Bord. (Nur auf meinem Suse Linux versteckt es sich im Apache-devel-Paket.) Der folgende Aufruf kompiliert das Modul, kopiert es in Apaches »modules«-Verzeichnis und trägt es in die »httpd.conf« ein:

apxs -i -a -c mod_evasive20.c

Apache-Reload nicht vergessen! Der Konfigurationsabschnitt sieht etwa wie Listing 1 aus.

»DOSHashTableSize« ist die Größe der Hashtabelle, die die URIs und zugreifende Hosts speichert. Auf stark frequentierten Systemen tut trotz des Speicherbedarfs gut daran, wer diesen Wert erhöht. Der »DOSPageCount« gibt an, wie oft derselbe Host pro »DOSPageInterval«-Zeitintervall eine Seite abrufen darf, bevor die Schutzmaßnahmen greifen.

Das gleiche Schicksal erwartet einen Client, der öfter als »DOSSiteCount« pro »DOSSiteInterval« über denselben Listener das gleiche Objekt anfordert. Ein normaler Websurfer, der über ein NAT-Gateway oder einen Proxy kommt, ist übrigens nicht davon bedroht, dass eventuell zeitgleich andere mit gleicher IP-Adresse bei der Website aufschlagen: »DOSSiteCount« zählt nur pro Listener, und ein normaler Apache hat immer mehrere laufen, auf die sich die Zugriffe verteilen. Die Variable »DOSBlockingPeriod« gibt die Sperrzeit für den Angreifer an. Da das Intervall mit jedem weiteren Zugriff von vorne beginnt, ist hier kein besonders hoher Wert nötig.

Aber auch Mod_evasive hat Grenzen. Wird die DoS-Attacke so massiv, dass sie trotz AEMM die komplette Bandbreite belegt oder die Serverhardware nicht mehr mitkommt, ist der Angriff doch ein Erfolg. Aber der Häuptling muss die Hoffnung nicht aufgeben. Wenn er seinem Späher die Direktive »DOSSystemCommand« aufs Büffelleder ritzt, wird dieser Aktionen auf dem System triggern und so zum Beispiel bei IPchains per Rauchzeichen um Hilfe rufen. (jk)

Listing 1: Mod_evasive in der
»httpd.conf«

01 <IfModule mod_evasive20.c>
02     DOSHashTableSize    3097
03     DOSPageCount        2
04     DOSSiteCount        50
05     DOSPageInterval     1
06     DOSSiteInterval     1
07     DOSBlockingPeriod   10
08     DOSEmailNotify      admin@dos-victim.com
09 </IfModule>

Infos

[1] Mod_evasive: [http://www.nuclearelephant.com/projects/mod_evasive/]

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Ausgabe 04/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.