Nextcloud gegen Brute-Force-Angriffe absichern

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: