Linux bringt von Haus aus prima Möglichkeiten mit, mit Bordmitteln das Thema Sicherheit out-of-the-box entsprechend genau zu betrachten. Eins meiner Lieblings-Tools dafür ist Fail2Ban: Das kleine, aber feine Programm prüft diverse Logfiles auf erfolglose Anmeldeversuche oder Ausdrücke und sperrt dann die jeweiligen IP-Adressen nach einer gewissen Anzahl Versuchen für eine entsprechende Zeitspanne.

Bisher habe ich Fail2Ban dafür genutzt, unliebsame Loginversuche per Secure Shell (SSH) zu unterbinden, das Ganze läßt sich dann aber auch auf Webserver oder alle anderen Dienste – oder Anwendungen – erweitern. Als überzeugter Nextcloud-Nutzer wollte ich auch meine private Cloud gerne besser absichern: Zwar gibt es hier den Bruteforce-Schutz, aber die stetigen Anmeldungen, die versuchen, ihre IP als vertrauten “trusted” Host in meiner Installation zu platzieren, nerven in Summe doch schon ein wenig:

Nextcloud Trusted Host Warning

Zwar nutze ich auch für das Administrator-Konto der Nextcloud die Zwei-Wege-Authentifizierung, störend sind die ewigen Versuche aber doch allemal. Die Lösung hier: Das Durchsuchen der Nextcloud-Logdatei auf erfolglose Anmeldeversuche und das entsprechende Aussperren per Fail2Ban respektive iptables. Wie das geht, möchte ich nachfolgend nun zeigen!

Am Anfang steht die Installation des Fail2Ban-Paketes – unter meinem Debian-System geht das über den folgenden Befehl:

Sofern iptables noch nicht installiert ist, kann man hier durch ein

auch dieses Paket nachinstallieren und hat dann erst einmal die Grundvoraussetzungen aus programmtechnischer Sicht geschaffen. Nun gilt es, die vorhandene Konfigurationsdatei jail.conf im Verzeichnis /etc/fail2ban – diese solltet Ihr nicht bearbeiten, da sie durch (Distributions-) Updates gegebenenfalls überschrieben wird – in Eure individuelle Konfigurationsdatei zu kopieren.

Schickt also die Befehlszeile

hinterher und Ihr habt Eure eigene, jederzeit ohne Probleme anzupassende Konfigurationsdatei jail.local erstellt, die im Nachgang mit dem Editor Eurer Wahl (hier: vi) direkt angepaßt werden kann.

Standardmässig ist der SSH-Dienst schon für die Sperrung konfiguriert und die Sperrzeit (“jailtime”) ist hier auf 3600 Sekunden vorkonfiguriert. In meinem Beispiel wird diese Zeit auf 24 Stunden (86400 Sekunden) erhöht und die Anzahl der Versuche, nach denen geblockt werden soll, wird auf drei verringert. Die “findtime” definiert wiederum die Anzahl der Sekunden, nach denen der Zähler für den “maxretry”-Wert zurückgesetzt wird. Die Konfigurationsdatei enthält noch viele weitere Parameter, diese sollten hier aber erst einmal im Fokus stehen. Vergeßt dabei nicht, dass Ihr Euch gegebenenfalls auch selbst aussperren könnt – am Anfang sollte man also lieber mit kleineren Werten arbeiten und am Ende dann ein wenig justieren.

Nextcloud Fail2Ban Parameter

Schauen wir uns nun den weiteren Verlauf den Abschnitt “# JAILS” an, finden wir unter anderem schon den SSH-Dienst. Direkt darunter fügen wir nun eine neue Definition ein und definieren hier die Parameter des Nextcloud-“Jails”, darunter auch das Logfile.

Nextcloud Fail2Ban Nextcloud-Jail

Das kann nun erst einmal so übernommen und gespeichert werden. Nun gilt es, den Filter an sich zu definieren, sprich: Auf was soll Fail2Ban ansprechen? Dazu legen wir im Verzeichnis /etc/fail2ban/filter.d einen neuen Filter an, der sinnigerweise “nextcloud.conf” heißt und den folgenden Inhalt hat:

Nextcloud Fail2Ban Filter-Konfiguration

Wir filtern also in der Tat nach dem Passus “Trusted domain error.”, der ja bereits oben im Administrations-Bereich unserer Nextcloud-Instanz negativ aufgefallen ist. Bevor wir nun Fail2Ban durch Eingabe von

neu starten und die neue Konfiguration laden lassen, müssen wir uns noch um das Logfile kümmern, das Nextcloud auch schreiben soll.

Dieses Logfile selbst respektive das Log-Level definieren wir in der config.php unserer Nextcloud-Installation. Bei mir liegt diese unter /var/www/nextcloud/config. Fügt hier nun irgendwo in der Konfiguration die folgenden beiden Parameter ein, die – je nach Konfiguration Eures Systems und Euren Wünschen – auch entsprechend unterscheiden können:

In meinem Fall liegt die von Fail2Ban auszuwertende Log-Datei von Nextcloud in meinem Datenverzeichnis, was auf einer separaten Partition platziert wurde und dessen Mount-Punkt in /var/nextcloud_data eingehangen ist. Abspeichern, fertig!

Sind diese Änderungen nun alle getätigt, kann der Fail2Ban-Dienst neu gestartet werden und sollte auch ohne Fehlermeldung wieder hochfahren. Der Befehl

sollte dann ein paar interessante Informationen und den Beweis liefern, dass der Dienst ordnungsgemäß läuft.

Nextcloud Fail2Ban Status

Um nun zu sehen, ob der neue Filter respektive die neue Jail-Regel unter Fail2Ban für unsere Nextcloud auch funktioniert, können wir das Kommando

nutzen. Die Ausgabe sieht dann wie folgt aus:

Nextcloud Fail2Ban Nextcloud-Filter-Status

Wir sehen also, dass der Filter aktiv ist, welches Logfile er bedient und welche Aktionen aktuell aktiv sind respektive waren – gesperrter IP-Adressen inklusive. Damit ist die Aufgabenstellung erfolgreich gemeistert und wir haben Fail2Ban erfolgreich dafür genutzt, unsere private Cloud mit Nextcloud noch ein wenig sicherer zu machen.

Das ist aber für Fail2Ban an sich nur der Anfang – wer mehr über das Tool wissen möchte, findet auf der offiziellen Homepage auch viele interessante HOWTOs. Unter anderem lässt sich das Ganze auch noch durch E-Mail-Benachrichtigungen oder eben das Überwachen weiterer Dienste weiter ausbauen.

Viel Spaß!

 

 

Share.

About Author

Stolzer Familienvater. Digital Native und chronischer Device-Switcher. Multimedia-Freak. UK-Fan, auch mit Brexit. Blogger mit stets zu wenig Zeit. Hobbyphilosoph. Musik-Enthusiast. Querdenker. Zyniker. Hauptberuflicher IT-Consultant- & Vertriebler. Auch zu finden bei LinkedIn. Dieser Artikel hat einen Job oder zumindest Euren Seelenfrieden gerettet und gegebenenfalls sogar für Kurzweil gesorgt? Die PayPal-Kaffeekasse freut sich - dankeschön!

Leave A Reply

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden .

%d Bloggern gefällt das: