Fail2ban einrichten und so den Server absichern

Ein eigener Server bietet zahlreiche Vorzüge, erfordert aber auch ein hohes Maß an Verantwortung und regelmäßige Kontrolle. Damit Dritte nicht unerlaubt Zugriff auf den Server erlangen können, sollte insbesondere der Sicherheitsaspekt eine wichtige Rolle spielen. Kriminelle haben ganz unterschiedliche Beweggründe, Server zu attackieren – prinzipiell bedeutet jedoch jeder erfolgreiche Angriff für den Server-Betreiber ein hohes Risiko.

Was steckt hinter Fail2ban?

Das in der Programmiersprache Python geschriebene Sicherheits-Framework Fail2ban (sinngemäß übersetzt: „Fehlversuche führen zu einem Bann“) ist ein Server-Modul, das man auf allen Linux- und POSIX-Systemen mit Firewall oder Paketfilter verwenden kann. Fail2ban ermittelt in den Logfiles des Servers die IP-Adressen, die durch ungewöhnliches Verhalten auffallen, indem sie beispielsweise immer wieder versuchen, sich mit einem falschen Passwort einzuloggen. Eine gewisse Anzahl an Fehlversuchen sorgt dann automatisch für den Bann bzw. die Blockierung der IP-Adresse für einen vorher festgelegten Zeitraum. Der Administrator kann Fail2ban aber auch so konfigurieren, dass ihm eine auffällige IP-Adresse zunächst per E-Mail gemeldet wird.

Standardmäßig enthält Fail2ban eine Reihe von Filtern, zum Beispiel für Apache, Postfix oder den Courier Mail-Server, durch die bestimmte Zeichenfolgen in den Log-Dateien erkannt werden können. Über die Filter können actions getriggert werden – das sind Befehle, die zu einem zuvor definierten Zeitpunkt ausgeführt werden. Die Kombination eines Filters und einer action – beispielsweise die von Fail2ban ausgelöste IP-Blockierung – nennt man Jail (dt. Gefängnis). Solche Jails können mit Fail2ban für jede Software programmiert werden, die Logdateien erstellt. Da es sich bei Fail2ban um ein Open-Source-Framework mit GPL2-Lizenz handelt, fallen für die Verwendung und Erweiterung keinerlei Kosten an.

Fail2ban: Installation und Konfiguration

  1. Starten Sie zunächst die Installation von Fail2ban mit folgendem Befehl:

    sudo apt-get install fail2ban

  2. Nachdem die Installation abgeschlossen wurde, finden Sie das Framework im Verzeichnis /etc/fail2ban. Die Konfigurations-Datei jail.conf sollte vorsichtshalber lokal als jail.local kopiert werden, um die eigenen Einstellungen vor updates zu sichern. Das gelingt mit diesen beiden Befehlen:

    cd/etc/fail2ban
    sudo cp jail.conf jail.local

  3. Starten Sie Fail2ban mit folgendem Kommando:

    sudo service fail2ban start

  4. In der Konfigurations-Datei können nun die bereits formulierten Regeln bzw. Jails aktiviert oder deaktiviert und ihre Parameter angepasst werden. Auch das Hinzufügen eigener Jails ist möglich. Folgende Parameter der Jails lassen sich konfigurieren:

    enablend: aktiviert (true) oder deaktiviert (false) die Regel
    filter: Name des Filters aus der Datei /etc/fail2ban/filter.d
    port: Angabe des Ports (z.B. SSH, HTTP, HTTPS)
    logpath: Pfad zur Logdatei, die ausgelesen werden soll
    maxretry: Anzahl maximaler Fehlversuche
    findtime: Zeitraum, in dem problematische IPs gesucht werden, in Sekunden
    bandtime: Zeitraum, für den eine IP blockiert ist, in Sekunden (-1: dauerhaft)

  5. Haben Sie Änderungen an den Parametern vorgenommen, laden Sie Fail2ban im Anschluss neu:

    sudo service fail2ban reload

  6. Die Ergebnisse seiner Auswertung speichert Fail2ban in einer separaten Logdatei, die Sie folgendermaßen aufrufen:

    tail -100f /var/log/fail2ban.log

  7. Um das Sicherheits-Framework zu schließen, geben Sie Folgendes ein:

    sudo service fail2ban stop

Auch wirksam gegen Bots und Skripte

Da Fail2ban überall dort eingesetzt werden kann, wo Logfiles mithilfe von Filtern ausgelesen werden, ergeben sich zahlreiche Verwendungsmöglichkeiten für das Vorbeugungs-Framework. Ein beliebtes Beispiel betrifft das WordPress-Plugin Antispam Bee, das Kommentare unter WordPress-Blogs als Spam identifizieren kann. Ist bei diesem Plugin die Option „Erkannten Spam kennzeichnen, nicht löschen“ aktiviert, werden Spam-Posts mit dem Fehlercode 403 versehen. IP-Adresse, Post und Fehlersequenz erscheinen anschließend auch in der WordPress-Logdatei (access.log). Mithilfe eines Jails, das die Einträge des Logs nach dem Fehlercode abscannt, können Sie Spam somit bereits auf der Server-Ebene abfangen.

Fail2ban schützt WordPress aber nicht nur vor Spam, sondern auch vor unautorisierten Anmeldungen. Per Erweiterung kann bei fehlerhaftem Login ebenfalls der Statuscode 403 als Antwort ausgegeben werden. Das schreckt einige Bots und Skripte sogar direkt ab, sodass deren Aktivitäten abrupt enden. Die Erweiterung erlaubt mit programmierter Fail2ban-Regel zusätzlich aber auch das bewährte Blockierungsverfahren.

Fail2ban: flexibel einsetzbares Sicherheits-Framework

Im Kampf gegen Bots, Skripte und andere Hacker-Attacken stellt Fail2ban dem Server-Betreiber einen flexiblen und effektiven Schutz zur Verfügung. Das Framework macht es möglich, Logfiles auf verdächtige Muster zu überprüfen und die entsprechenden IP-Adressen vorübergehend oder dauerhaft zu sperren. Welche Dienste Fail2ban überprüft, liegt ebenso in der Hand des Nutzers wie die genauen Parameter, die bei der Durchsuchung angewandt werden sollen. Auf Wunsch können IP-Adressen von der Suche ausgeschlossen und blockierte IPs wieder entsperrt werden.

Richtig konfiguriert trägt Fail2ban als Ergänzung in hohem Maß zur Server-Sicherheit bei, ersetzt jedoch nicht altbewährte Schutzmaßnahmen wie Sicherheitssoftware, eine gut geplante Backup-Struktur oder Passwort- und Verschlüsselungsschutz. Nur im gemeinsamen Verbund ergeben die einzelnen Komponenten einen umfassenden Schutz, der auch häufigeren und stärkeren Attacken trotzt.