# Sichern gegen DDOS Zuerst sollte auf dem System ein Update durchgeführt werden, damit vor der Installation das System auf einem aktuellen Stand ist. ``` sudo apt update && apt upgrade -y ``` Jetzt installierst du das Paket libapache2-mod-evasive. ``` sudo apt install libapache2-mod-evasive ``` Jetzt musst du überprüfen ob der Mod installiert und aktiviert wurde. ``` sudo apachectl -M | grep evasive ``` Die Antwort die zurück kommen sollte sieht so aus ``` $ evasive20_module (shared) ``` In der Konfigurationsdatei evasive.conf kannst du jetzt einige EInstellungen vornehmen. Die default Einstellungen reichen aber hier aus. ``` sudo vi /etc/apache2/mods-enabled/evasive.conf ``` Hier die default Einstellung der Datei: ``` DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSEmailNotify info@example.com DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" DOSLogDir "/var/log/mod_evasive" ``` Erklärung der Parameter:
DOSHashTableSizeDie Grösse der HashTables pro child-prozess (und somit pro Verbindung) Grössere HashTables = hoehere Geschwindigkeit = mehr RAM-Verbrauch
DOSPageCountAnzahl der Requests pro Seite innerhalb des mit DOSPageInterval angegebenen Zeitraumes, nach denen weitere Verbindungen unterbunden werden.
DOSSiteCountAnzahl der Requests pro Website innerhalb des mit DOSSiteInterval angegebenen Zeitraumes, nach denen weitere Verbindungen unterbunden werden.
DOSPageIntervalDer Zeitraum (in Sekunden) in dem nicht mehr Requests pro Seite, als in DOSPageCount angegeben, erlaubt sind.
DOSSiteIntervalDer Zeitraum (in Sekunden) in dem nicht mehr Requests pro Website, als in DOSSiteCount angegeben, erlaubt sind.
DOSBlockingPeriodDer Zeitraum (in Sekunden) für den eine Sperre aufrecht erhalten wird. Der Zähler wird bei erneuten Anfragen innerhalb dieses Zeitraumes zurückgesetzt, weshalb hier sehr niedrige Werte ausreichend sind.
DOSLogDirWo die HashTables abgelegt werden sollen. (Default ist "/tmp" was auf Systemen mit mehreren Shell-Usern ein Sicherheitsrisiko ist, da dieses Verzeichnis von jedermann gelesen werden kann.
Verständlich ausgedrückt bedeutet das in unserem Beispiel, dass jeder für 10 Sekunden geblockt würde, der öfter als zwei mal pro Sekunde die gleiche Seite oder mehr als 50 mal pro Sekunde irgendeine Seite auf einer WebSite aufruft. Wenn er dann innerhalb dieser 10 Sekunden wieder versucht, eine Seite aufzurufen, bekommt er eine 403 Fehlermeldung präsentiert und der Zähler wird wieder zurückgesetzt. Jetzt musst du noch einen Restart auf dem Apache Server machen ``` sudo systemctl restart apache2 ``` Jetzt kannst du einen Test durchführen, ob alles funktioniert. Dazu machst du ein: ``` sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl ``` Jetzt bekommst du etliche Bad Request Antworten: ``` HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request . . . ``` Somit sollte dein Server jetzt gut gegen DDOS Attacken geschützt sein.