Nextcloud – protection contre les attaques ‘force brute’ derrière un reverse proxy
À la connexion à Nexcloud via le navigateur WEB j’avais le message suivant :
Nous avons détecté plusieurs tentatives de connexion invalides depuis votre adresse IP. C’est pourquoi votre prochaine connexion sera retardée de 30 secondes.
Si l’on travaille derrière un reverse proxy et si Nextcloud n’a pas été bien paramétré, alors l’adresse distante ‘remoteAddr’ sera celle du reverse proxy (192.168.2.1 dans notre cas).Toute attaque par la force brute pénalisera toutes les connexions qui passent par le reverse proxy !
Il est possible d’indiquer à Nextcloud d’utiliser l’adresse fournie par le reverse proxy, par exemple dans le champ ‘X-Forwarded-For’, comme adresse distante !
Le fichier de configuration de Nextcloud à modifier (dans mon cas) :
/var/www/html/nextcloud/config/config.php
On ajoute ces 2 lignes dans le fichier :
'trusted_proxies' => array('192.168.2.1'), 'forwarded_for_headers' => array('HTTP_X_FORWARDED_FOR'),
Exemple avec mon fichier
<?php $CONFIG = array ( 'instanceid' => 'oc42t0zl1q3f', 'passwordsalt' => 'YWhFG1ChgSuIPsRQLoWE26HYis0dCw', 'secret' => 'Mdd6Bnl25VmE4x1NsMhXHY13kdotumNM9xnmcmn0oE3TQ/4F', 'trusted_proxies' => array('192.168.2.1'), 'forwarded_for_headers' => array('HTTP_X_FORWARDED_FOR'), 'trusted_domains' => array ( 0 => 'cloud.memoirevive79.mooo.com', ),
C’est l’IP publique servant à l’accès qui sera prise en compte à la place de l’IP du reverse proxy.
Plus d’informations
Si on faire un copie du fichier avant de le modifier :
cp config.php config.php.sav
Le propriétaire et le groupe du fichier dans mon cas sont www-data (Apache).
Sur le WEB :
Agir sur la base de données en cas de fausse détection d’attaque par force brute
Pour supprimer les IP de la table.
Pour se connecter en administrateur :
mysql -u root -p
Ouvrir la base de données Nextcloud (utilisez le nom de votre base de données) :
USE nomdelabase;
Ensuite, pour afficher toutes les tables :
SHOW TABLES;
Pour afficher toutes les valeurs de la table oc_bruteforce_attempts :
SELECT * FROM oc_bruteforce_attempts;
Pour supprimer une adresse IP de la table, utilisez :
DELETE FROM oc_bruteforce_attempts WHERE IP="xxx.xxx.xxx.xxx";
Pour quitter :
EXIT;
Remplacez xxx.xxx.xxx.xxx par l’adresse IP que vous voulez supprimer de la table.
Sur le WEB :