[[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