Gelegentlich kommt es vor, dass der Apache2 unter DOS/DDOS-Beschuss gerät. Einfache DOS bzw. DDOS-Angriffe können in aller Regel sehr leicht mit dem Modul „libapache2-mod-evasive“ abgewehrt werden. Dabei wird bei einem erkannten Angriff der jeweiligen IP-Adresse ein Fehler 403 ausgeliefert. Der Apache muss also nicht mehr die eigentliche Webseite ausliefern. Das sind bei Webseiten auf PHP-Basis wie z.B. WordPress jeweils ~0,5 Sekunden pro Anfrage die an CPU-Zeit gespart wird (abhängig vom Server). Natürlich wird auch Bandbreite gespart da ja die 403-Fehlerseite bedeutend kleiner ist.
Damit sind aber auch schon die Grenzen dieses Apache2-Mod´s aufgezeigt. Massive DOS und DDOS-Angriffe können damit nicht abgewehrt werden. Das gelingt nur wenn eine Firewall die unerwünschten Anfragen blockiert. Dazu kommen wir eventuell in einem späteren Beitrag.
Installation von mod-evasive:
als erstes installieren wir das Paket libapache2-mod-evasive
apt-get install libapache2-mod-evasive
jetzt sollten wir in der Apache Konfiguration noch einige Einträge vornehmen
dazu in der /etc/apache2/apache2.conf folgendes hinzu fügen:
DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 # optionale Einstellungen # DOSWhitelist 127.0.0.* # DOSEmailNotify deinemailadresse@meinedomain.de # DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" # DOSLogDir "/var/lock/mod_evasive"
Die Standardvorgaben sollten für einen normalen Webserver passend sein. Bei Bedarf kann man aber diese Parameter anpassen…
jetzt noch das Verzeichnis /var/lock/mod_evasive anlegen (wenn DOSLogDir benutzt wird)
mkdir /var/lock/mod_evasive
jetzt noch dem Apache in diesem Verzeichnis Schreibrechte vergeben
das war´s fürs erste,… nur noch den Apache neustarten; zur Sicherheit
/etc/init.d/apache2 restart
den Link von mod-enable zu mod-avialbe wird bei der Installation automatisch angelegt ;-)
das wars ! jetzt sollten wir natürlich die Wirksamkeit prüfen. Dazu wir bei debian 5.0 auch ein kleines Test-Script mitgeliefert:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
jetzt sollte nach den ersten paar Abfragen ein Error 403 erscheinen
> perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl HTTP/1.1 302 Found HTTP/1.1 302 Found HTTP/1.1 302 Found HTTP/1.1 302 Found HTTP/1.1 302 Found HTTP/1.1 302 Found HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden
Ziel erreicht
Update:
damit auch unter Debian 5 (Lenny) die Mailbenachrichtigung funktioniert muss noch ein symbolischer Link auf den Mailer gesetzt werden und zwar von
/bin/mail -> /etc/alternatives/mail
ln -s /bin/mail /etc/alternatives/mail
Pingback: Java Bot: Java/1.6.0_04 -> DoS attack - my GettoWEB.DE