Nextcloud — durcissement : 2FA imposée, brute-force throttling et App passwords
Durcissement d'authentification Nextcloud : 2FA obligatoire par groupe, réglage du brute-force throttling, révocation des App passwords et en-têtes de sécurité via occ.
Durcissement de la couche d’authentification Nextcloud : imposition du second facteur, réglage de la protection anti-force brute et gestion des App passwords.
Contexte
Nextcloud a fait l’objet de plusieurs avis de sécurité liés à la force brute sur l’API WebDAV et aux contournements de second facteur (advisories nextcloud/security-advisories). Le durcissement combine 2FA imposée par groupe, un brute-force throttling correctement réglé derrière un reverse proxy, et la maîtrise des App passwords qui contournent le 2FA.
Détection
État du brute-force throttling et adresses actuellement ralenties :
sudo -u www-data php occ config:system:get auth.bruteforce.protection.enabled
sudo -u www-data php occ security:bruteforce:attempts <ip>
sudo -u www-data php occ config:system:get trusted_proxies
Inventaire des utilisateurs sans second facteur actif :
sudo -u www-data php occ twofactorauth:state <uid>
sudo -u www-data php occ user:list --output=json | jq -r 'keys[]' | while read u; do
echo -n "$u : "; sudo -u www-data php occ twofactorauth:state "$u" | grep -i 'enabled'
done
Détection de tentatives de force brute dans les logs (échecs d’authentification répétés) :
sudo -u www-data php occ log:tail -n 200 | grep -iE 'login failed|bruteforce|invalid'
grep -aE '"(LoginController|remote.php)".*(401|403)' /var/www/nextcloud/data/nextcloud.log
Durcissement
Activation du brute-force throttling et déclaration correcte des trusted proxies (sans quoi toutes les requêtes proviennent de l’IP du proxy et le throttling est inopérant ou bloque tout le monde) :
sudo -u www-data php occ config:system:set auth.bruteforce.protection.enabled --value=true --type=boolean
sudo -u www-data php occ config:system:set trusted_proxies 0 --value="192.0.2.10"
sudo -u www-data php occ config:system:set forwarded_for_headers 0 --value="HTTP_X_FORWARDED_FOR"
Imposition du 2FA pour tous les utilisateurs sauf groupe d’exemption restreint, via l’application twofactor_enforced :
sudo -u www-data php occ app:enable twofactor_totp
sudo -u www-data php occ app:enable twofactor_enforced
sudo -u www-data php occ config:app:set twofactor_enforced enforced --value=true
sudo -u www-data php occ config:app:set twofactor_enforced excluded_groups --value='["service-accounts"]'
Renforcement de la politique de mot de passe et durée de session :
sudo -u www-data php occ app:enable password_policy
sudo -u www-data php occ config:app:set password_policy minLength --value=14
sudo -u www-data php occ config:app:set password_policy enforceHaveIBeenPwned --value=1
sudo -u www-data php occ config:system:set remember_login_cookie_lifetime --value=0 --type=integer
sudo -u www-data php occ config:system:set session_keepalive --value=false --type=boolean
Les App passwords contournent le 2FA : auditer et révoquer ceux qui sont obsolètes. La rotation force la réémission via un appareil authentifié :
sudo -u www-data php occ user:auth-tokens:list <uid>
sudo -u www-data php occ user:auth-tokens:delete <uid> <token-id>
Vérification
Confirmation de l’état du throttling et de l’imposition du 2FA :
sudo -u www-data php occ config:system:get auth.bruteforce.protection.enabled
sudo -u www-data php occ config:app:get twofactor_enforced enforced
Test que des échecs d’authentification répétés depuis une IP de doc déclenchent le ralentissement :
for i in $(seq 1 10); do
curl -s -o /dev/null -w '%{http_code} ' -u "test:mauvais" https://nextcloud.exemple.fr/remote.php/dav/files/test/
done; echo
sudo -u www-data php occ security:bruteforce:attempts 192.0.2.50
Le compteur d’attempts doit augmenter et les réponses ralentir. Le scan occ security:certificates et occ setupchecks ne doivent signaler aucune anomalie de configuration de sécurité.
Vous avez un projet sur ces sujets ?
Nous contacter →