[[Vorlage(Archiviert)]]
{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Terminal: Ein Terminal öffnen]
[:sudo: Root-Rechte]
[:Editor: Einen Editor verwenden]
}}}
[[Inhaltsverzeichnis()]]
Dieser Artikel beschränkt sich auf die Sicherung des Webservers [:Apache:] durch das Modul [github:jzdziarski/mod_evasive:mod_evasive] {en}. Einen übergeordneten Artikel findet man im Wiki unter [:Apache/Sicherheit:].
mod_evasive ist ein Modul, welches ähnlich einem [wikipedia:Intrusion_Prevention_System:Intrusion Prevention System] (IPS) Muster eines möglichen Angriffs im Netzwerk erkennt. Dieses Modul konzentriert sich auf [wikipedia:Ddos: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 [wikipedia:Port_(Protokoll):Ports] gesperrt. Zudem wird der Serveradministator per E-Mail informiert. Dies setzt einen funktionierenden [wikipedia:Mail_Transfer_Agent:MTA] voraus.
Beispiel: Gibt man in einem beliebigen Browser die URL/IP-Addresse eines Servers ein und hält die Taste [[Vorlage(Tasten, 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.
{{{#!vorlage Warnung
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]:
{{{#!vorlage Paketinstallation
libapache2-mod-evasive, universe
}}}
Anschließend muss das Modul noch aktiviert werden. Dies geschieht am einfachsten mit den folgenden Befehlen im Terminal [2][3]:
{{{#!vorlage Befehl
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:
{{{#!vorlage Befehl
sudo mkdir /var/log/mod_evasive
sudo chown www-data:root /var/log/mod_evasive
}}}
Um die E-Mail-Benachrichtigungen von mod_evasive] {en} per [wikipedia:Sendmail:Sendmail] zu erhalten, muss ein Symlink erstellt werden.
{{{#!vorlage Befehl
sudo ln -s /usr/bin/mail /bin/mail
}}}
{{{#!vorlage Experten
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''':
{{{#!code apache
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.
}}}
Nach einem neuerlichen Laden der Konfiguration ist das Modul in gewünschter Weise aktiv:
{{{#!vorlage Befehl
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 [[Vorlage(Tasten, 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 [[Vorlage(Tasten, 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:
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 )
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:
From: www-data
X-SA-Exim-Connect-IP:
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:] {Übersicht} Übersichtsartikel
#tag: Apache, Internet, Sicherheit, Server