Nach einem Vorfall mit fehlgeschlagenen Login-Versuchen zeigte meine Nextcloud-Instanz bei jedem Zugriff aus dem eigenen Netzwerk zwei hartnäckige Fehlermeldungen. Der Zugriff über ein anderes Netzwerk funktionierte einwandfrei. Nur die betroffene IP blieb gesperrt. Ich habe einige Zeit gebraucht, um die eigentliche Ursache zu finden.

Die Fehlermeldungen

In der Web-Oberfläche erschien bei jedem Aufruf diese Meldung.

Deine Remote-Adresse wurde als 192.172.168.77 erkannt und wird derzeit durch die Brute-Force-Erkennung gedrosselt. Wenn die Remote-Adresse nicht deine Adresse ist, kann dies ein Hinweis darauf sein, dass ein Proxy nicht richtig konfiguriert ist.

Im Nextcloud-Log fand sich zusätzlich diese Exception.

TooManyRequestsException thrown: OCA\DAV\Connector\Sabre\Exception\TooManyRequests

Dazu tauchten im Log wiederholt fehlgeschlagene Login-Versuche mit derselben Remote-IP auf.

Login failed: 'user' (Remote IP: '192.172.168.77')

Was nicht geholfen hat

Ich habe mehrere Standardmaßnahmen probiert, die in diesem Fall wirkungslos blieben.

Bruteforce Reset

Der Befehl

sudo -u www-data php occ security:bruteforce:reset

lief ohne Fehler, änderte aber nichts an der Sperre.

Datenbank Einträge

Die Prüfung der Datenbank-Tabellen ergab, dass sowohl oc_bruteforce_attempts als auch oc_ratelimit_entries leer waren. Es gab also keinen klassischen Datenbank-Eintrag, der hätte gelöscht werden können.

Ratenbegrenzung

Auch die Deaktivierung der Ratenbegrenzung über

sudo -u www-data php occ config:system:set ratelimit.protection.enabled --value=false

blieb ohne Wirkung.

Apache und php immer neu starten

Wichtig ist, bei allen Versuchen das Problem zu lösen, immer den apache und php neu starten, ansonsten kann es sein, dass du zwar das Problem gelöst hast, aber durch den Cache es gar nicht merkst .. ist mir passiert ;)

systemctl restart apache2 php8.4-fpm

Trusted Proxies

Die Ursache, warum genau mein Client auf diese Brutforce Liste geraten ist, ist mir noch ein Rätsel, aber ich habe einiges ausprobiert und auch etwas zuviel gemacht, nämlich meine eigene IP viermal in der Liste trusted_proxies eingetragen.

Sehen kannst du das mit diesem Befehl

sudo -u www-data php  occ config:system:get trusted_proxies

Vermutlich trug das und der fehlende apache und php Neustart, dass ich gar nicht merken konnte, dass das Problem eigentlich schon gelöst war. Aber hier mal noch Schritt für Schritt, wie das Problem gelöst werden kann.

Die Lösung

config.php trusted_proxies bearbeiten

sudo vim /var/www/nextcloud/config/config.php

Der Block wurde so angepasst, dass die IP nur einmal enthalten ist.

'trusted_proxies' =>
array (
  0 => '192.172.168.77',
),

Wichtig ist, dass die PHP-Syntax mit Kommas und Klammern exakt stimmt.

Apache und PHP neu starten

Wie gesagt: Der entscheidende Schritt. Ohne den Neustart bleibt die Änderung wirkungslos, da die laufenden Prozesse die config.php nicht neu einlesen.

systemctl restart apache2 php8.4-fpm

Die PHP-Version muss gegebenenfalls angepasst werden, zum Beispiel auf php8.5-fpm.

Et voila, alles geht wieder schmusli.

Fazit und Erkenntnisse

Die occ-Befehle allein reichen nicht immer. Sie schreiben die Konfiguration zwar in die config.php, aber laufende Dienste wie Apache und PHP übernehmen die Werte erst nach einem Neustart.

Quelle

Nextcloud ist als Open-Source-Software verfügbar.