DDoS Schutz für ihren Webserver

Aus first-vserver.de
Wechseln zu: Navigation, Suche

Vielversprechend ist mod_evasive. Es macht genau das, was beim beschriebenen Problem gefragt ist, es reagiert, wenn:

dieselbe Seite auffällig oft abgerufen wird mehr als eine bestimmte Anzahl gleichzeitiger Anfragen in einem bestimmten Zeitintervall gemacht werden Anfragen von einer Adresse gesendet werden, die bereits temporär geblacklisted wurde

Die default Reaktion ist ein "403 Forbidden" Fehler, mod_evasive kann aber auch externe Befehle aufrufen (z.B. iptables).

Die Installation ist von ein paar Fußangeln abgesehen einfach:

apt-get install libapache2-mod-evasive
mkdir /var/lock/mod-evasive
chown www-data /var/lock/mod-evasive
ln -s /etc/alternatives/mail /bin/mail
$EDITOR /etc/apache2/mods-available/mod-evasive.conf

Mit eurem Lieblingseditor fügt ihr folgende Zeilen in die (nicht mitgelieferte) mod-evasive.conf Datei ein, passt dabei klarerweise die Email Adresse an:

<IfModule  mod_evasive20.c>
   DOSHashTableSize 3097
   DOSPageCount 3
   DOSSiteCount 60
   DOSPageInterval 1
   DOSSiteInterval 2
   DOSBlockingPeriod 15
   DOSEmailNotify support@server-first.de
   DOSLogDir "/var/lock/mod-evasive"
</IfModule>

Danach das Modul aktivieren und Apache durchstarten:

a2enmod mod-evasive
/etc/init.d/apache2 restart


Nun müssen wir auch testen ob es funktioniert was wir installiert haben:

Ein Testscript (perl) wird auch mitgeliefert.

perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl

Das Testscript gibt direkt Meldungen aus. Zusätzlich loggt Apache mit. Außerdem muss danach im angelegten Ordner /var/lock/mod_evasive/ eine Datei namens "dos-127.0.0.1" liegen.


Nun müss das ganze noch in die Firewall für das automatische sperren

Statt nur Apache "403 Forbidden" Fehler ausliefern zu lassen, soll die IP komplett mit iptables geblockt werden. Wahrscheinlich müssen wir vorher noch fail2ban installieren!!

Eine Datei /etc/fail2ban/filter.d/apache-dosevasive.conf anlegen mit folgendem Inhalt:

# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
failregex = ^\^\*\]\s+\[error\]\s+\[client <HOST>\] client denied by server configuration:\s 

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

In der Datei /etc/fail2ban/jail.conf folgendes hinzufügen:


[apache-dosevasive]
enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=dos]
logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10