mod evasive
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschränkt sich auf die Sicherung des Webservers Apache durch das Modul mod_evasive 🇬🇧. Einen übergeordneten Artikel findet man im Wiki unter Apache/Sicherheit.
mod_evasive ist ein Modul, welches ähnlich einem Intrusion Prevention System (IPS) Muster eines möglichen Angriffs im Netzwerk erkennt. Dieses Modul konzentriert sich auf Denial of Service (DoS) über das Protokoll HTTP, DDoS und Brute-Force-Attacken. Erkennt dieses Modul einen Angriff über eine IP-Addresse, so wird diese zeitbegrenzt auf allen Ports gesperrt. Zudem wird der Serveradministator per E-Mail informiert. Dies setzt einen funktionierenden MTA voraus.
Beispiel: Gibt man in einem beliebigen Browser die URL/IP-Addresse eines Servers ein und hält die Taste F5 für eine Minute gedrückt, so wird diese Seite immer neu geladen. Multipliziert man dies nun mit die Anzahl von anfragenden Clients (z.B. 100 oder 1000), simuliert man einen klassischen DDoS-Angriff, welcher in einem möglichen Bufferüberlauf des Servers enden kann.
Achtung!
Apache-Module sollte man immer in ihren /etc/apache2/mods-available/*.conf-Dateien ändern, nie in ihren /etc/apache2/mods-enabled/*.load-Dateien!
Installation¶
mod_evasive ist direkt in den Paketquellen von Ubuntu enthalten. Benötigt wird folgendes Paket [1]:
libapache2-mod-evasive (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install libapache2-mod-evasive
Oder mit apturl installieren, Link: apt://libapache2-mod-evasive
Anschließend muss das Modul noch aktiviert werden. Dies geschieht am einfachsten mit den folgenden Befehlen im Terminal [2][3]:
sudo a2enmod evasive
Konfiguration¶
Um die Logdatei von mod_evasive für Apache schreibbar zu machen, muss ein neues Verzeichnis mit entsprechenden Rechten erzeugt werden:
sudo mkdir /var/log/mod_evasive sudo chown www-data:root /var/log/mod_evasive
Um die E-Mail-Benachrichtigungen von mod_evasive] 🇬🇧 per Sendmail zu erhalten, muss ein Symlink erstellt werden.
sudo ln -s /usr/bin/mail /bin/mail
Experten-Info:
Wer mod_evasive nicht aus den offiziellen Paketquellen installiert, kann im Make-file den Pfad von /bin/mail auf /usr/bin/mail ändern.
Nun editiert [4] man noch die Konfigurationsdatei /etc/apache2/mods-available/evasive.conf:
1 2 3 4 5 6 7 8 9 10 11 12 | <ifmodule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 ## Dauer der Blockade der einzelnen IP-Addresse in Sekunden DOSSystemCommand "echo +%s > /proc/net/xt_recent/badguys" oder "su root -c '/sbin/iptables -A INPUT -s %s -j DROP'" ## Befehl an das System -> %s ist die SourceIP des Angreifers DOSLogDir "/var/log/mod_evasive" ## Log-Verzeichnis DOSEmailNotify root@localhost ## E-Mail-Adresse für Benachrichtigungen DOSWhitelist 127.0.0.1 ## Lokale Anfragen zulassen. Hier kann man auch einzelne IP-Adressen ausschließen. </ifmodule> |
Nach einem neuerlichen Laden der Konfiguration ist das Modul in gewünschter Weise aktiv:
sudo service apache2 restart sudo service apache2 force-reload
Kontrolle¶
Gibt man in einem beliebigen Browser die URL/IP-Addresse eines so geschützten Servers ein und hält die Taste F5 gedrückt, so erhält man (abhängig von der Bandbreite des Clients) nach ca. 2 - 5 Sekunden die folgende Meldung im Browser:
"http 403 - access denied"
Hält man die Taste
F5 weiter gedrückt, bekommt man die Meldung, dass der Server nicht erreichbar ist. Zudem wird der Serveradministrator per E-Mail informiert. Der Inhalt der E-Mail sieht in etwa so aus (man beachte den Absender www-data
):
Return-path: <www-data@meinedomain.net> Envelope-to: root@meinedomain.net Delivery-date: Sun, 23 Dec 2012 03:07:07 +0100 Received: from www-data by HOST with local (Exim 4.76) (envelope-from <www-data@meinedomain.net>) id 1Tmay2-0005Av-Dw for root@meinedomain.net; Sun, 23 Dec 2012 03:07:06 +0100 Date: Sun, 23 Dec 2012 03:07:05 +0100 To: root@meinedomain.net User-Agent: Heirloom mailx 12.5 6/20/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <E1Tmay2-0005Av-Dw@HOST> From: www-data <www-data@meinedomain.net> X-SA-Exim-Connect-IP: <locally generated> X-SA-Exim-Mail-From: www-data@meinedomain.net X-SA-Exim-Scanned: No (on HOST); SAEximRunCond expanded to false To: root@meinedomain.net Subject: HTTP BLACKLIST 85.127.221.215 mod_evasive HTTP Blacklisted 85.127.221.215
In der /var/log/syslog steht so etwas wie:
Dec 23 03:07:05 HOST mod_evasive[2609]: Blacklisting address 85.127.221.215: possible DoS attack.
In der /var/log/mod_evasive steht so etwas wie:
dos-85.127.221.215
In der /var/log/apache2/error.log steht so etwas wie:
[Son Dec 23 03:07:05 2012] [error] [client 85.127.221.215] client denied by server configuration: /var/www/
Problembehandlung¶
Dieses Modul arbeitet nur mit dem Webserver Apache. Fehler sind in den folgenden Log-Dateien ersichtlich:
/var/log/syslog
/var/log/apache2/access.log
/var/log/apache2/error.log
/var/log/mod_evasive
Links¶
Apache 2.4 - Hauptartikel
Apache/Sicherheit Übersichtsartikel