Fail2Ban: Login-Schutz für Linux-Server

Fail2Ban: Login-Schutz für Linux-Server

Mit wenigen Handgriffen kannst Du Deinen Server vor fremden Logins schützen. So machst Du es Angreifern schwer, Deinen zu Server zu kapern und für schützt ihn somit vor Missbrauch. Wir zeigen Dir, wie Du mit dem kostenlosen Tool Fail2Ban und ein paar Hilfsmitteln ohne große Fachkenntnis Deinen Linux-Server absicherst.

So wirst Du angegriffen

Botnetze arbeiten rund um die Uhr und greifen ständig unzählige Server an, um sie zu übernehmen und dann für sich arbeiten zu lassen. Die häufigsten Angriffe sind Login-Versuche bei Servern mit dem Nutzernamen „root“ und einem Passwort aus einen Passwort-Wörterbuch. Bei so genannten Brute-Force-Attacken probieren Bots schlichtweg Passwörter aus. Auf diese Weise versuchen Angreifer sich rund um die Uhr im Sekundentakt einzuloggen: bis zu 86.400 Mal pro Tag. Wenn die Attacke in der Zeit nicht gelingt, dann wird sie Tag für Tag fortgesetzt. Und jeden Tag steigt die Wahrscheinlichkeit, dass der Einbruch klappt

Das Schlimmste kommt aber erst noch: nicht nur ein Angreifer versucht die Attacke, sondern meist 10, 20, 30 oder mehr gleichzeitig. Das Resultat: der Server verbraucht mehr und mehr Leistung für die Login-Abfragen und die Webseite wird dadurch immer langsamer.

1216__auth_log_beleg
Auth.log: In der Logdatei für die Authentifizierung am System werden alle Login-Versuche notiert – auch die von Angreifern.

Fail2Ban schickt Angreifer in die Wüste

Mit dem kostenlosen Tool Fail2Ban blockst Du nicht nur falsche Login-Versuche. Du sperrst die Angreifer auch gleich für Stunden, Tage oder Monate aus. Das geht so: das Programm Fail2Ban läuft auf Deinem Server und liest die Log-Datei in Echtzeit mit. Jede IP-Adresse, die sich mehrfach falsch einloggt, kann sich dann für ein paar Stunden oder Tage gar nicht mehr anmelden. Tausende  Login-Versuche sind somit unterbunden. Und selbst wenn die Angreifer mit der gleichen IP-Adresse wieder auftauchen, haben sie nur einzelne Versuche und sind wieder gebannt.

Nutze einfach Gratis-Tools!

Alles, was Du für eine Abwehr benötigst, sind die kostenlosen Tools WinSCP und Fail2Ban. Wir sagen Dir im unten stehenden Abschnitt, wie Du an WinSCP kommst. Fail2Ban besorgt sich Dein Server selbst. Du musst dazu nur einen kurzen Befehl eingeben. Auch dazu gleich mehr.

Dein Server hat bereits eine Plesk-Oberfläche?

STRATO stellt Dir den Fail2Ban-Service in Plesk bereit. Du musst ihn nur noch aktivieren. Wie einfach das geht, kannst Du in unserem FAQ-Artikel Plesk 12: das Fail2Ban Modul einrichten nachlesen. Das Fail2Ban-Modul ist bei Dir schon aktiviert? Dann kannst Du in dem Artikel gleich zum Punkt Konfiguration des Fail2Ban-Moduls springen.

So nutzt Du Fail2ban auf einem Linux-Server ohne Plesk

Für die schnellste und einfachste Installation ohne weitere Linux-Kenntnisse benutzt Du am besten das Windows-Tool WinSCP mit der Zusatz-Software PuTTY, welche Dir eine Kommandozeile samt Administratorenrechten zur Verfügung stellt. Du kennst das Tool noch nicht? Alles zum Programm WinSCP kannst Du in dem Artikel  WinSCP: Das starke Windows-Tool für den Zugriff auf Linux-Server nachlesen.

Fail2Ban installieren

Starte das Windows-Tool WinSCP und verbinde Dich mit Deinem Server. Für die Fail2Ban-Installation musst Du PuTTY öffnen (Befehle → In PuTTY öffnen). Dort gibst Du noch einmal Dein Server-Passwort manuell ein.

1216_putty_box
PuTTY: Mit dem Tool PuTTY hast Du eine Kommandozeile mit Administrationsrechten und kannst Programme auf Deinem Linux-Server installieren.

Gib den folgenden Befehl in der Kommandozeile ein, wenn auf Deinem Server Ubuntu oder Debian läuft:

sudo apt-get install fail2ban

Wenn Du auf Deinem Server openSUSE nutzt, dann lautet der Befehl:

sudo zypper install fail2ban

Wenn Du auf Deinem Server CentOS nutzt, dann lautet der Befehl:

yum install fail2ban

Drücke Return, um die Installation zu starten. Zur Installation muss das System meist noch ein paar Python-Pakete installieren. Du musst dafür aber nichts weiter machen als mit einem großen J und Return zu bestätigen. Nach etwa einer Minute ist alles automatisch installiert.

Nun beende in WinSCP die Verbindung zu Deinem Server und stelle sie erneut her. Das muss sein, da Du sonst ein paar aktualisierte Verzeichnisse nicht angezeigt bekommst. Im Moment sind nur zwei Verzeichnisse auf dem Server wichtig:

<root>var/log: darin liegen die Log-Dateien Deines Servers
<root>etc/fail2ban: darin liegen alle Programmdateien von Fail2ban

Stelle Dir nun in WinSCP auf der linken Seite ein Arbeitsverzeichnis Deines PCs ein. Danach gehst Du im rechten Fenster in das Fail2Ban-Verzeichnis, klickst mit rechter Maustaste die Datei jail.conf an und wählst Herunterladen. Der Hintergrund: In der Datei jail.conf stecken alle möglichen Einstellungen für Fail2Ban. Aber sie funktioniert nur, wenn man sie bearbeitet, umbenennt in jail.local und zurückkopiert. Sie ist so eine Art Vorlage-Datei.

1216_winscp_jail_local
Fail2Ban Konfiguration: Du musst die Datei jail.conf kopieren und in jail.local umbenennen.

Nenne die Datei in jail.local um (mit der F2-Taste). Danach reicht ein Doppelklick, um die Datei im internen Editor von WinSCP zu bearbeiten. In der Textdatei stehen viele Konfigurationszeilen. Die meisten sind Kommentare. Das erkennst Du am vorgestellten #-Zeichen. Ganz unten in der Statuszeile des Editors siehst Du, wie viele Zeilen die Datei hat und in welcher Zeile gerade Dein Cursor steht. Hier unsere Vorschläge, was Du ändern solltest:

Zeile 59: Ändere die Bantime = 600 (Sekunden) auf den Wert 1209600. Das entspricht einer Bannzeit für fremde Server von 14 Tagen. Du kannst hier beliebige Werte nutzen.

Zeile 66: Ändere den Wert für maxretry = 5 auf 3. Hierbei handelt es sich um die gezählten Login-Versuche einer IP-Adresse.

Zeile 216: Diese Zeile ist leer. Trage hier ein enabled = true. Das bedeutet, dass der Abschnitt [sshd,] der für die Root-Login-Versuche zuständig ist, nun überwacht wird.

Dann speichere die Datei jail.local und kopiere sie wieder auf den Server in das Verzeichnis <root>etc/fail2ban.

Jetzt öffnest Du mit Befehle-> In PuTTY öffnen ein Fenster mit der Kommandozeile und gibst Dein Root-Passwort ein. Trage den Befehl service fail2ban reload ein und drücke Return. Falls Du eine Fehlermeldung bekommst, gib service fail2ban start ein. Falls Du den Service mal stoppen musst oder willst, dann nutze service fail2ban stop. Den aktuellen Stand des Service kann Du immer in der Datei fail2ban.log unter <root>var/log nachlesen. Ein Doppelklick auf die Datei reicht.

Nur für CentOS-Nutzer: Hier lauten die Befehle fail2ban-client start, fail2ban-client stop und fail2ban-client reload.

Ab sofort blockt Fail2Ban für Dich alle IP-Adressen, die mehr als drei Mal versuchen sich als Root-Nutzer einzuloggen. Je nachdem, welche Services Du noch installiert hast, kannst Du diese in der jail.local aktivieren. Hier bieten sich zum Beispiel der FTP- oder der Mail-Server-Zugang an. Dazu fügst Du einfach direkt nach dem entsprechenden Eintrag in der jail.local (bei [proftpd] oder [postfix]) die neue Zeile enabled = true ein.

1216__fail2ban_log_ban
Log-Datei von Fail2Ban: Der Login-Versuch dieses Angreifers wurde erkannt und nun ist er für 14 Tage gebannt.

Du kannst Dir auch alle Vorgänge von Fail2Ban per E-Mail zukommen lassen. Dafür musst Du in jail.local zwei Einträge ändern:

Zeile 129: Ändere den Eintrag destemail = root@localhost in die gewünschte E-Mail-Adresse, etwa destemail = name@meineDomain.de.

Zeile 204: Dort steht nur action = %(action_)s. Das bedeutet, dass nur falsche Login-Versuche geblockt und in der Log-Datei notiert werden. Ändere den Eintrag in action = %(action_mwl)s. Nun bekommst Du zu jedem falschen Login in einer Mail nicht nur die IP-Adresse genannt, sondern auch noch weitere Angaben zu dem Server, Betreiber und aus welchem Land er kommt.

Und nicht vergessen: Nach jeder Änderung in der jail.local musst Du die Datei wieder auf den Server übertragen und abschließend im Terminalfenster von PuTTY den Befehl service fail2ban reload abschicken (bei CentOS lautet der Befehl fail2ban-client reload).

Du hast dich selbst ausgesperrt?

Falls Du selbst einmal das Passwort zu oft falsch eingegeben hast, dann bist Du, bzw. Deine IP-Adresse, natürlich auch für die voreingestellte Zeitspanne gesperrt. In diesem Fall kannst Du auch einfach Deinen Router neu starten. Dann bekommst Du von Deinem Provider eine neue IP-Adresse.

Hast Du eine feste IP-Adresse, dann solltest Du diese gleich bei der Einrichtung von Fail2Ban von einer Sperrung ausnehmen. Dazu musst Du nur in der jail.local in der Zeile 50 Deine zusätzlich IP-Adresse eintragen: ignoreip = 127.0.0.1/8 001.002.003.004. Zwischen den beiden IP-Adressen muss ein Leerzeichen sein!

Hast Du das zu Beginn vergessen, kannst Du Dich zur Not mit einem anonymen Proxy-Server einloggen. Durch das Tool bekommst Du eine IP-Adresse geliehen, kannst Dich einloggen und Deine Änderungen in der jail.local machen. Nutze am besten das kostenlose CyberGhost in der Basisversion.

Mehr Infos zu Fail2Ban

Es gibt ein sehr umfangreiches, englischsprachiges Wiki zu Fail2ban. Weniger umfangreich, aber in deutscher Sprache gibt es auch eine kleine Untersektion des Wikis. Weiterhin findest Du auf der Seite www.blocklist.de viele Statistiken und weitere Services zu Fail2Ban die besonders für den Server-Einsatz geeignet sind.

Teilen

  1. Ulrich Drese sagte am

    Ein wirklich guter Tip, aber wie ist eigentlich die empfindlichste Achillesverse, der Login in das Strato Kundencenter, abgesichert? Was hilft mir der Fail2ban, wenn sich ein Angreifer direkt im Kundencenter anmeldet und auf diesem Weg auf meinen Server zugreift, das Passwort ändert oder den Server kurzerhand für seine Zwecke neu installiert?

    Bei manuellen Versuchen mit bis zu 20 Fehleingaben ist mir bisher keine Sicherheitsfunktion aufgefallen, wie z.B. ein Warnung per Email über erhöhte Login Fehlversuche.

    Antworten
    • STRATO AG sagte am

      Hallo Ulrich Drese,

      unsere Kollegen nehmen verschiedene Maßnahmen vor, um Angreifer erfolgreich abzuwehren und Kunden vor diesen zu schützen. Aus Gründen der Sicherheit und zum Schutz unserer Kunden bitten wir Dich um Verständnis, dass wir die Sicherheitsmaßnahmen im Blog nicht öffentlich machen wollen.

      Viele Grüße und schönes Wochenende
      Philipp

      Antworten
      • Lukas sagte am

        Hm… Sicherheit durch Geheimhaltung. I call Bulls***. Funktioniert vermutlich genau so gut wie der Spam-Filter bei eurem E-Mail-Service.

        Was hier gar nicht erwähnt wird ist, dass die Nutzer besser SSH via Public-/ PrivateKey machen sollten.

        Antworten
        • Thomas Ritter sagte am

          Hallo Lukas,

          vielen Dank für den Hinweis zum Thema SSH. Bzgl. der Sicherheitsmechanismen sind wir schon der Meinung, diese nicht öffentlich darlegen zu wollen. Das ist aber natürlich nur ein Baustein, um die Sicherheit für unsere Kunden zu optimieren.

          Schöne Grüße
          Thomas

          Antworten
  2. Peter König sagte am

    Wirklich sehr nützliche Infos!
    Habe ich direkt bei mir so umgesetzt.

    Danke dafür!

    Antworten

Sie können erst kommentieren, wenn Sie unseren Datenschutzbestimmungen und den Cookies zugestimmt haben. Aus Datenschutzrechtlichen Gründen dürfen wir andernfalls keine personenbezogenen Daten von Ihnen aufzeichnen.

Klicken Sie dazu einfach unten im Browser Fenster auf den blauen Button Akzeptieren. Nach dem Neuladen der Seite können Sie Ihr Kommentar schreiben.

 

Diese Webseite verwendet Cookies, um die Nutzung der Seite zu verbessern, den Erfolg von Werbemaßnahmen zu messen und interessengerechte Werbung anzuzeigen. Durch die Nutzung dieser Seite erklären Sie sich damit einverstanden. Informationen