Digitaler Türsteher: fail2ban
Auch wenn ich dieses Programm schon längere Zeit benutze, ist es mir jetzt doch noch einen Eintrag wert, denn nach der Neuinstallation meines Servers fiel auch die Installation von fail2ban an. Die Funktionsweise von fail2ban ist einfach beschrieben: Das Programm läuft im Hintergrund und liest in bestimmten Abständen bestimme Log-Dateien von diversen Servern (SSH, WWW, FTP) aus. Findet es dort Einträge, die auf Fehlgeschlagene Login-Versuche hindeuten werden diese gezählt. Diese Einträge werden via Regular Expressions gefiltert. Sobald eine bestimmte, konfigurierbare Anzahl an fehlgeschlagenen Login-Versuchen stattgefunden hat, führt das Programm eine Aktion aus. Meistens ist dies ein Eintrag in der Firewall zum sperren der IP.
Und was bringt uns das ganze? Man kann damit sehr effektiv Bruteforce-Angriffe verhindern. Wer nicht weiß, was Bruteforce ist: Bei einem Bruteforce-Angriff werden alle möglichen Passwörter bei einem Login probiert; solange, bis das richtige gefunden ist. Besonders bei kürzeren Passwörtern ist ein solcher Schutz sehr sinnvoll.
Die Installation des ganzen ist dank Debians großem Paket-Repertoire auch ein Kinderspiel. Zuerst den Daemon mit folgendem Befehl installieren.
-
apt-get install fail2ban
Dann ins Verzeichnis /etc/fail2ban/ wechseln, wo sich fail2bans Konfigurationsdateien befinden. Dort gibt es 4 relevante Dateien und Ordner. Im Ordner action.d sind Dateien, welche bestimmte Aktionen bei einem Bann vom Server und dem Löschen eines Banns definieren. Dabei sind mehrere verschiedene Firewall-Typen bereits als Beispiel angegeben. Die meisten werden wohl iptables benutzen.
Im Verzeichnis filter.d befinden sich - wie der Name auch schon andeutet - die Filterdateien für die Logs. Auch dort sind schon Beispiele vorgegeben, zum Beispiel für proftpd, ssh oder dem Apache. Meht Beispiele gibt es mit ls.
In der Datei fail2ban.conf befindet sich eine globale Konfiguration, welche einige Grundsätzliche Einstellungen des Servers beinhaltet. Zumindest bei mir kann man diese Datei so lassen wie sie ist. (Dennoch lohnt sich ein Blick natürlich immer.
)
Die jail.conf beinhaltet nun den interessanten Teil des Daemons. Hier wird im Format einer Ini-Datei angegeben, welche Log-Dateien ausgelesen werden sollen, welche Filter dafür zutreffen, welche Aktionen zutreffen, wieviele Fehlversuche bei einem Login möglich sind und so weiter… Besonders toll an dieser Datei ist, dass die bekanntesten Services schon drin stehen. Das Vorgehen nun ist einfach. Man sucht sich den zu schützenden Dienst heraus und ändert in der Ini das enabled = false auf enabled = true. Anschließend muss der fail2ban-Server noch die Einstellungen neu laden.
-
fail2ban-client reload
Wer Interesse an fail2ban gefunden hat, dem kann ich noch ein paar Dinge empfehlen, die man sich angucken könnte. So liefert fail2ban einen Clienten aus, mit dem man den Server einfach steuern kann; dieser nennt sich, wie bereits oben erwähnt fail2ban-client. (man fail2ban-client) Zwar nicht direkt mit fail2ban verbunden, aber auch recht interessant ist ein iptables-Modul namens “recent”. Auch einen Blick wert, vielleicht schreibe ich auch darüber mal was…