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.
- Webseite: https://nextcloud.com/
- Dokumentation: https://docs.nextcloud.com/
- GitHub: https://github.com/nextcloud/server