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.