Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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 Denyal 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.
Apache-Module sollte man immer in ihren /etc/apache2/mods-available/*.conf-Dateien ändern, nie in ihren /etc/apache2/mods-enabled/*.load-Dateien!
mod_evasive ist direkt in den Paketquellen von Ubuntu enthalten. Benötigt wird folgendes Paket [1]:
libapache2-mod-evasive (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libapache2-mod-evasive
sudo aptitude install 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
Unter Ubuntu 10.04 und 12.04 lautet der Befehl:
sudo a2enmod mod-evasive
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
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 (unter Ubuntu 10.04 und 12.04: /etc/apache2/mods-available/mod-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
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/
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
Diese Revision wurde am 24. Mai 2015 02:14 von ubot erstellt.