← Retour aux tutoriels

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 →