SSH absichern mit fail2ban
Wer von euch meinen letzten Artikel zum Thema SSH absichern mit Denyhosts gelesen hat wird möglicherweise bei der Installation Schwierigkeiten gehabt haben. Bei einigen neuen Distributionen wurde Denyhosts durch fail2ban ersetzt. Ich zeige euch wie man fail2ban installiert und konfiguriert und warum es die bessere Alternative ist.
SSH absichern mit fail2ban
Bei der Absicherung eines neuen Debian 8 Servers bin ich auf dieses Thema gekommen. Üblicherweise verwende ich immer Denyhosts, doch das steht bei Jessie nicht mehr in den Standardpaketen. Das Entwicklerteam nennt folgende Gründe:
- nicht gelöste Sicherheitsprobleme
- keine neue Version (zuletzt 2008 upgedated)
- fail2ban ist eine Alternative mit erweiterter Funktionalität
Somit wird empfohlen fail2ban zu verwenden, obwohl man natürlich manuell Denyhosts immer noch nachinstallieren könnte.
Wie funktioniert fail2ban?
Das Programm durchsucht laufend die Log Dateien nach fehlgeschlagenen Logins. Sind bei einer IP Adresse auffallend viele falsche Login Versuche dabei, dann wird diese Adresse mittels IP Tables für eine bestimmte Zeit gesperrt. Zugriff von dieser IP Adresse ist dann nicht mehr möglich. Der Unterschied zu Denyhosts liegt darin, dass die Sperre nicht über die hosts.deny Datei funktioniert sondern über Firewallregeln.
Installation
Bei Debian war die Installation sehr einfach, das Programm ist über den Paketmanager zu finden:
apt-get install fail2ban
Konfiguration
Nachdem die Installation recht einfach war müssen wir uns nun Gedanken zur Konfiguration der Software machen. fail2ban bietet dazu eine eigene Konfigurationsdatei an. Es wird empfohlen diese nicht direkt zu bearbeiten, sondern eine Kopie mit der Dateiendung .local zu erstellen. Somit bleiben die Standardeinstellungen vorhanden – sollte man einen Fehler machen und diese zurücksetzen müssen.
Wir kopieren also die Konfigurationsdatei:
cd /etc/fail2ban cp jail.conf jail.local
Im folgenden bearbeiten wir nur noch die jail.local Datei. Am besten mit dem Texteditor nach Wahl:
nano jail.local
Wie (fast) immer bei Linux ist auch diese Datei sehr gut dokumentiert. Man kann das Programm recht umfangreich einstellen, wir beschränken uns aber auf einige wenige Parameter.
- ignoreip
wir können hier IP Adressen und Netzbereiche angeben die vom Programm nicht beachtet werden. Es macht Sinn die eigene IP Adresse (sofern statisch) dort einzutragen. - bantime
die Zeit in Sekunden die eine IP Adresse gesperrt wird. Standard ist 600 Sekunden – ich setze das gerne auf 86400, also einen ganzen Tag. - findtime und maxretry
die beiden Werte spielen zusammen. Gesperrt wird eine IP Adresse, wenn von ihr aus innerhalb von findtime Sekunden maxretry Login Versuche fehlschlagen. Standardmäßig bedeutet das, dass in 10 Minuten 3 falsche Logins zugelassen werden. Es macht Sinn den Zeitwert etwas zu erhöhen. Ich stelle diesen gerne auf eine Stunde, also auf 3600 Sekunden. - destemail
fail2ban sendet Informationen per Mail aus. Wenn man diese auf die eigene Adresse haben möchte, dann kann man diese dort eintragen. - action
man kann bei der action einstellen was bei einer Sperrung passieren soll. Standardmäßig wird nur gesperrt. Man kann zB mit action_mw einstellen, dass man pro gesperrter IP Adresse eine Mail mit weiteren Informationen bekommt.
Fazit
fail2ban ist eine gute Alternative zu dem bewährten Denyhosts. Ich musste dieses Programm zwangsweise installieren, da bei Debian Jessie Denyhosts nicht mehr verfügbar war. Mich hat es jedenfalls überzeugt. Die Konfiguration ist klar und einfach und das Programm bietet die selbe Funktionalität.
Was haltet ihr von fail2ban?