Nextcloud gegen Brute-Force-Angriffe absichern
Owncloud und der Fork Nextcloud lassen sich von Haus aus nicht gegen Brute-Force-Angriffe auf den Login-Screen absichern. Mit dem Tool fail2ban
lässt sich dies – Root-Server vorausgesetzt – für Owncloud und andere Webapplikationen nachholen.
Zuerst muss das Loggen von Anmeldefehlern in der Nextcloud aktiviert werden, dazu folgende Zeilen 4 und 5 in der config.php
ergänzen:
<?php
$CONFIG = array (
...
'logfile' => '/var/log/nextcloud.log',
'loglevel' => 2,
...
);
Achtung: die Datei /var/log/nextcloud.log
muss manuell erstellt werden und muss mit den Rechten des Webservers schreibbar sein.
Dann muss fail2ban
lernen, wie ein Anmeldefehler im Nextcloud-Log aufgebaut ist und an welcher Stelle die IP-Adresse des Nutzers steht:
[Definition]
failregex = ^.*\"remoteAddr\":\"<HOST>\".*Login failed:.*$
Zuletzt muss für den soeben definierten Filter ein konkrete Sperrkonfiguration (ein Jail) erstellt werden, bei dem das zu beobachtende Logfile spezifiziert werden muss. Die Aktion action_mwl
bedeutet, dass fail2ban
den Nutzer per iptables
Firewallregel sperrt und den Admin per Email über die Sperrung informiert. Soll nur die Sperrung per Firewall erfolgen, kann die Zeile action = ...
entfallen.
[nextcloud]
enabled = true
logpath = /var/log/nextcloud*.log
port = http,https
action = %(action_mwl)s
In der Standardkonfiguration wird jetzt eine Sperregel für jeden Nutzer (IP-Adresse) erstellt, der innerhalb von 10 Minuten 5 fehlerhafte Anmeldeversuche durchgeführt hat. Diese wird nach 10 Minuten wieder entfernt.
Der aktuelle Status lässt sich jederzeit mit dem Befehl fail2ban-client status nextcloud
prüfen. Dieser listet die aktuell erkannten Fehlversuche und Sperrungen auf:
Status for the jail: nextcloud
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/nextcloud.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list: