Apache Webserver vor DoS-Angriffen schützen mit mod_evasive

Ein plötzlich sprunghafter Anstieg von Aufrufen – sei es durch Bots, aggressive Scraper oder gezielte Denial-of-Service (DoS) Attacken – kann deinen Webserver schnell an seine Leistungsgrenzen bringen. Die Folge: Deine WordPress-Website reagiert extrem langsam oder ist gar nicht mehr erreichbar.

Mit dem Apache-Modul mod_evasive kannst du deinen Webserver effektiv gegen Überlastung durch einzelne IP-Adressen absichern.

Zweck von mod_evasive

mod_evasive ist ein Evasive-Maneuvers-Modul für den Apache HTTP Server. Es schützt deine Infrastruktur vor:

  • HTTP-Flood-Angriffen (DoS): Verhindert, dass eine einzelne IP-Adresse hunderte Anfragen pro Sekunde an deinen Server schickt.
  • Brute-Force-Attacken: Erschwert das automatisierte Ausprobieren von Formularen (z. B. wp-login.php).
  • Aggressiven Web-Crawlern: Speichert Ressourcen, indem zu schnelle Scraping-Bots temporär geblockt werden.

Sobald eine IP-Adresse die definierten Limits überschreitet, antwortet Apache automatisch mit dem HTTP-Statuscode 403 Forbidden, anstatt rechenintensive PHP- und Datenbankabfragen auszuführen.


Schritt-für-Schritt-Anleitung: mod_evasive einrichten

1. Modul installieren

Installiere das Modul über die Paketverwaltung deines Servers:

sudo apt update && sudo apt install libapache2-mod-evasive -y

2. Log-Verzeichnis für gesperrte IPs erstellen

Erstelle den Ordner, in dem das Modul geblockte IP-Adressen protokolliert, und weise die passenden Rechte zu:

sudo mkdir -p /var/log/mod_evasive
sudo chown -R www-data:www-data /var/log/mod_evasive

3. Modul praxisnah konfigurieren

Öffne die Konfigurationsdatei des Moduls:

sudo nano /etc/apache2/mods-available/evasive.conf

Füge folgende praxiserprobte Werte ein, die echte Besucher nicht einschränken, aber Angreifer effektiv blockieren:


    DOSHashTableSize    3097

    # Max. Anfragen auf dieselbe Seite pro Sekunde
    DOSPageCount        5
    DOSPageInterval     1

    # Max. Gesamtanfragen (inkl. Bilder, CSS, JS) auf die Website pro Sekunde
    DOSSiteCount        100
    DOSSiteInterval     1

    # Dauer der temporären Sperre in Sekunden
    DOSBlockingPeriod   60

    # Log-Verzeichnis
    DOSLogDir           "/var/log/mod_evasive"

4. Modul aktivieren und Apache neustarten

Stelle sicher, dass das Modul in Apache geladen wird, und starte den Webserver neu:

sudo a2enmod evasive
sudo systemctl restart apache2

Schutz testen mit ApacheBench (optional)

Du kannst die Wirksamkeit direkt von einem externen Computer (z. B. deinem Mac/Linux-Laptop) mit dem Tool ab testen:

ab -n 500 -c 10 https://deine-domain.de/

Sollte der Test die Grenzen überschreiten, wirst du in der Auswertung sehen, dass ein Großteil der Anfragen mit Non-2xx responses (Status 403) abgefangen wurde, während dein Webserver stabil weiterläuft.

Fazit

mod_evasive ist eine extrem leichtgewichtige erste Verteidigungslinie auf Webserver-Ebene. Es fängt Lastspitzen ab, bevor WordPress PHP-Skripte ausführen muss, und sorgt dafür, dass deine Website auch bei Angriffen für reguläre Nutzer erreichbar bleibt.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *