Nextcloud mit Fail2ban absichern

2 Minuten, 7 Sekunden

Da in der persönlichen Cloud zumeist sensible Daten gespeichert werden, sollte das Thema Sicherheit nicht zu kurz kommen. Der folgende Artikel zeigt eine einfache, aber dennoch effektive Möglichkeit, Nextcloud mittels Fail2ban abzusichern. Die Grundlage für diesen Beitrag, bildet ein Debian Jessie mit installiertem Nextcloud-Server in der Version 11.

Vorbereitungen

Falls Fail2Ban noch nicht installiert ist kann man dies einfach nachholen. Dazu sollte man zuerst das System bzw. die installierten Pakete aktualisieren. Dies geschieht mit dem Befehl:

apt update && apt upgrade

Im Anschluss kann man sich die neueste Version von Fail2Ban installieren:

apt install fail2ban

Im nächsten Schritt muss Nextcloud so konfiguriert werden, das Anmeldefehler im Logfile protokolliert werden. Dazu die config.php von Nextcloud öffnen und die nachfolgenden Einstellungen überprüfen bzw. hinzufügen:

'file',
    'logtimezone' => 'Europe/Berlin',
    'logfile' => '/var/log/nextcloud.log', 
    'loglevel' => 2, 
    ...
);

Achtung:
Die Datei „/var/log/nextcloud.log“ muss manuell erstellt werden und für den Webservers-User schreibbar sein.

Einrichtung

Anschließend wird ein Nextcloud-Filter für Fail2ban in dem Verzeichnis „/etc/fail2ban/filter.d/“ wie folgt angelegt…

nano /etc/fail2ban/filter.d/nextcloud.conf

… und mit dem folgenden Inhalt befüllt:

[Definition]
failregex = ^{"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: ''\)","level":2,"time":".*"}$   ^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","app":"core".*","message":"Login failed: '.*' \(Remote IP: ''\)".*}$
ignoreregex =

Als Nächstes muss für den neu definierten Filter eine Sperrkonfiguration (ein Jail) erstellt werden. dazu öffnet man die Datei "/etc/fail2ban/jail.conf" mit einem beliebigen Editor und fügt am Ende nachfolgenden Inhalt ein:

[nextcloud]
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
logpath = /var/log/nextcloud.log
action = %(action_mwl)s

Die Aktion: action_mwl bedeutet, dass fail2ban den Nutzer per Firewallregel sperrt und den Admin per Email über die Sperrung informiert. Soll nur die Sperrung per Firewall erfolgen, kann die Zeile action = ... entfallen.

Damit die Konfiguration aktiv wird, muss mit dem Befehl:

service fail2ban restart

... Fail2ban neu gestartet werden.

Test

Nun sollte noch kontrolliert werden, ob der Filter für Nextcloud korrekt geladen wurde. Dieses erreicht man durch die folgende Eingabe auf der Console:

fail2ban-client status

Das sollte den folgenden Output erzeugen:

Status
|- Number of jail:      2
`- Jail list:           ssh, nextcloud

Am Jail mit dem Namen nextcloud sieht man, das die Konfiguration aktiv ist.

Um zu prüfen, das der RegEx Filter korrekt eingetragen wurde und funktioniert, führt man den folgenden Befehl aus:

fail2ban-regex /var/log/nextcloud.log /etc/fail2ban/filter.d/nextcloud.conf

Achtung:
Hierbei ist wichtig, dass der Pfad der Logdatei als auch der Konfiguration stimmen. Als Ausgabe sollte man unter anderem die folgende Zeile erhalten.

Lines: 20 lines, 0 ignored, 13 matched, 7 missed

Sollte man bei matched keine Ergebnisse vorfinden, stimmt entweder der eingestellte Regex-Filter nicht oder es sind noch keine Login Fehlversuche im Logfile vorhanden.

Zurück Vor