Attaques par Force Brute sur les Logins de Sites Web : Comment Elles Fonctionnent et Comment les Stopper
Ce Qui Se Passe Quand les Attaquants Ciblent Votre Page de Connexion
Chaque site web avec un formulaire de connexion est une cible. Peu importe si vous gerez une petite entreprise a Lugano ou une operation multinationale. Des outils automatises scannent internet a la recherche de pages de connexion 24 heures sur 24, 7 jours sur 7. Quand ils en trouvent une, ils commencent a essayer des mots de passe.
Ce n'est pas un risque theorique. Akamai a rapporte plus de 193 milliards d'attaques de credential stuffing en 2020 seulement. Cloudflare bloque des millions de tentatives de force brute par jour sur son reseau. Votre site fait partie de cette surface d'attaque, que vous le sachiez ou non.
La raison pour laquelle ces attaques persistent est simple : elles fonctionnent. Les identifiants par defaut, les mots de passe faibles et l'absence de rate limiting donnent aux attaquants des victoires faciles. Un seul panneau d'administration compromis peut mener au vol de donnees, a la defiguration du site, a l'injection de malware ou au deploiement de ransomware.
Cet article detaille exactement comment les attaques par force brute et credential stuffing operent, presente des statistiques reelles sur les tentatives automatisees de connexion, et parcourt chaque contre-mesure que vous devriez avoir en place.
Comment Fonctionnent les Attaques par Force Brute
Une attaque par force brute est la forme la plus simple de craquage de mots de passe : essayer chaque combinaison possible jusqu'a ce qu'une fonctionne. En pratique, les outils de force brute modernes sont bien plus sophistiques que d'essayer "aaaaaa" puis "aaaaab". Ils utilisent des strategies optimisees pour trouver des identifiants valides plus rapidement.
Force Brute Pure
L'attaquant essaie chaque combinaison de caracteres possible pour une longueur donnee. Pour un mot de passe de 6 caracteres en minuscules, cela fait 308 millions de combinaisons. Pour un mot de passe de 8 caracteres avec majuscules, minuscules, chiffres et symboles, c'est plus de 6 quadrillions de combinaisons.
La force brute pure est lente contre les mots de passe forts. Mais contre les faibles (comme "admin1" ou "password"), elle fonctionne en quelques secondes.
Attaques par Dictionnaire
Au lieu d'essayer chaque combinaison, les attaques par dictionnaire utilisent des listes de mots de passe courants. Ces wordlists contiennent des millions d'entrees compilees a partir de violations de donnees precedentes. Les mots de passe les plus utilises apparaissent dans pratiquement chaque base de donnees de violations :
- 123456 (utilise par plus de 23 millions de comptes dans les bases de donnees de violations)
- password
- 123456789
- qwerty
- 12345678
- admin
- welcome
- letmein
Les attaques par dictionnaire sont rapides car elles sautent les combinaisons improbables et se concentrent sur les mots de passe que les gens utilisent reellement. Une wordlist de 10 millions de mots de passe courants peut etre testee contre un login web en quelques heures, selon le rate limiting en place.
Credential Stuffing
Le credential stuffing est la variante la plus efficace. L'attaquant prend des paires nom d'utilisateur-mot de passe d'une violation de donnees precedente (LinkedIn, Adobe, Dropbox, ou n'importe laquelle des milliers de violations qui ont expose des milliards d'identifiants) et les essaie sur votre site.
Pourquoi cela fonctionne-t-il ? Parce que les gens reutilisent leurs mots de passe. Les etudes montrent systematiquement que 60-65% des personnes utilisent le meme mot de passe sur plusieurs services. Si votre employe a utilise le meme mot de passe pour son compte LinkedIn et pour le panneau admin WordPress de votre entreprise, une violation de LinkedIn donne a l'attaquant acces a votre site web.
Le credential stuffing est plus difficile a detecter que la force brute car chaque tentative de connexion utilise un nom d'utilisateur d'apparence valide et un mot de passe plausible. Il n'y a pas de patterns de tentatives sequentielles a signaler.
Attaques Hybrides
Les attaques hybrides combinent des mots du dictionnaire avec des modifications courantes : ajout de chiffres (password1, password123), remplacement de lettres par des symboles (p@ssw0rd), mise en majuscule de la premiere lettre (Password). Celles-ci attrapent les utilisateurs qui pensent etre malins en apportant des modifications mineures a des mots courants.
Les Outils Utilises par les Attaquants
Vous n'avez pas besoin d'etre un hacker competent pour lancer des attaques par force brute. Les outils sont gratuits, open source et bien documentes :
- Hydra : Un craqueur de connexion parallelise qui supporte des dizaines de protocoles dont les formulaires HTTP, SSH, FTP et SMTP. Il peut effectuer des milliers de tentatives par minute contre un login web.
- Burp Suite : Une plateforme de tests de securite web avec un module Intruder concu pour les attaques automatisees de connexion. L'edition communautaire est gratuite.
- WPScan : Un scanner specifique a WordPress qui inclut des capacites de force brute pour wp-login.php et les endpoints XML-RPC.
- Sentry MBA, OpenBullet : Des outils de credential stuffing qui utilisent des "configs" partagees dans les forums underground. Chaque config est adaptee au formulaire de connexion d'un site specifique.
La barriere a l'entree est extremement basse. Un adolescent avec un ordinateur portable et une wordlist peut lancer une attaque par force brute en quelques minutes.
Statistiques sur les Tentatives de Connexion Automatisees
L'ampleur des attaques automatisees de connexion est considerable :
| Metrique | Valeur | Source |
|---|---|---|
| Attaques de credential stuffing en 2020 | 193 milliards | Akamai |
| Pourcentage du trafic de connexion malveillant | Plus de 90% sur certains sites | Shape Security |
| Cout moyen d'une attaque de credential stuffing | 6 millions USD par an | Ponemon Institute |
| Sites WordPress attaques par force brute par jour | Plus de 900 000 | Wordfence |
| Temps pour craquer "password123" par force brute | Moins d'une seconde | Hive Systems |
| Pourcentage d'utilisateurs reutilisant les mots de passe | 60-65% | Google/Harris Poll |
Si vous gerez un site WordPress, les donnees Wordfence montrent que les attaques par force brute sur wp-login.php et xmlrpc.php representent l'un des trois principaux vecteurs d'attaque. Chaque site WordPress que nous auditons pour des entreprises au Tessin montre des traces de tentatives de force brute dans les logs d'acces.
Pourquoi les Identifiants par Defaut Restent le Vecteur d'Attaque Numero Un
Cela semble absurde en 2022, mais les identifiants par defaut sont encore le moyen le plus efficace d'entrer dans un systeme. Voici pourquoi :
- Installations CMS : Les installations WordPress, Joomla et Drupal gardent souvent le nom d'utilisateur par defaut "admin". L'attaquant connait deja la moitie des identifiants.
- Equipements reseau : Les routeurs, switches et appareils IoT sont livres avec des identifiants par defaut (admin/admin, admin/password, root/root). Beaucoup ne sont jamais changes.
- Environnements de developpement : Les serveurs de staging, bases de donnees de developpement et instances de test utilisent souvent des identifiants simples qui se retrouvent accidentellement en production.
- Plugins tiers : Certains plugins et themes WordPress creent des comptes administrateur avec des mots de passe par defaut lors de l'installation.
Le botnet Mirai, qui a mis hors service des services internet majeurs en 2016, fonctionnait en essayant seulement 62 combinaisons d'identifiants par defaut contre des appareils IoT. C'etait suffisant pour construire un botnet de plus de 600 000 appareils.
Contre-mesure 1 : Rate Limiting
Le rate limiting est votre premiere ligne de defense. Il restreint le nombre de tentatives de connexion depuis une source unique dans une fenetre de temps.
Comment Implementer le Rate Limiting
Au niveau applicatif, tracez les tentatives de connexion echouees par adresse IP et par nom d'utilisateur. Apres un seuil (par exemple, 5 tentatives echouees en 15 minutes), ajoutez un delai croissant avant que la prochaine tentative soit traitee.
Au niveau serveur, des outils comme nginx peuvent appliquer des limites sur des endpoints specifiques :
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
Cette configuration limite chaque adresse IP a 5 requetes par minute sur l'endpoint de connexion. Les utilisateurs legitimes n'atteindront jamais cette limite. Les outils automatises seront considérablement ralentis.
Limitations
Le simple rate limiting base sur l'IP n'est pas suffisant seul. Les attaquants sophistiques distribuent leurs tentatives sur des milliers d'adresses IP en utilisant des botnets ou des reseaux de proxy. Vous avez besoin de couches supplementaires.
Contre-mesure 2 : CAPTCHA
Le CAPTCHA ajoute un defi facile pour les humains mais difficile pour les bots.
Options
- reCAPTCHA v2 : La case "Je ne suis pas un robot". Fonctionne bien mais ajoute de la friction.
- reCAPTCHA v3 : Invisible, attribue un score a chaque requete de 0.0 a 1.0 base sur l'analyse comportementale. Aucune friction pour les utilisateurs, mais necessite l'ajustement du seuil.
- hCaptcha : Une alternative a reCAPTCHA axee sur la confidentialite. Particulierement pertinente pour les entreprises suisses preoccupees par le traitement des donnees sous la nLPD.
- Cloudflare Turnstile : L'alternative CAPTCHA de Cloudflare. Gratuite, respectueuse de la vie privee et sans friction dans la plupart des cas.
Quand Afficher le CAPTCHA
N'affichez pas le CAPTCHA a chaque tentative de connexion. Cela agace les utilisateurs legitimes. Affichez-le apres 2-3 tentatives echouees depuis la meme IP ou pour le meme nom d'utilisateur. Ainsi, les utilisateurs normaux avec une faute de frappe ne sont pas deranges, mais les outils automatises sont bloques apres leurs premieres tentatives.
Contre-mesure 3 : Politiques de Verrouillage de Compte
Le verrouillage de compte desactive temporairement un compte apres un certain nombre de tentatives de connexion echouees.
Implementation
- Apres 5 tentatives echouees, verrouiller le compte pendant 15 minutes.
- Apres 10 tentatives echouees, verrouiller pendant 1 heure.
- Apres 20 tentatives echouees, verrouiller jusqu'a examen manuel.
Le Risque de Deni de Service
Le verrouillage de compte a un inconvenient significatif : un attaquant peut deliberement verrouiller des utilisateurs legitimes en essayant de mauvais mots de passe contre leurs comptes. C'est une attaque par deni de service contre des utilisateurs specifiques.
Pour attenuer ce probleme, combinez le verrouillage avec d'autres signaux. Verrouillez sur la base de la combinaison IP + nom d'utilisateur plutot que le nom d'utilisateur seul. Envoyez des emails de notification lorsque les comptes sont verrouilles pour que les utilisateurs sachent ce qui s'est passe. Fournissez un chemin de recuperation alternatif (lien de reinitialisation par email) qui contourne le verrouillage.
Contre-mesure 4 : Blocage IP
Bloquer les adresses IP qui generent des tentatives de connexion echouees excessives retire les acteurs malveillants connus de l'equation.
Geo-Blocking
Si votre site web sert des clients uniquement en Suisse, vous pouvez restreindre l'acces a la connexion aux adresses IP suisses. Cela elimine les attaques provenant d'autres pays. Ce n'est pas infaillible (les VPN existent) mais cela reduit considerablement la surface d'attaque.
Contre-mesure 5 : fail2ban
fail2ban est un outil de prevention d'intrusion au niveau serveur qui surveille les fichiers de log a la recherche de signes d'activite malveillante et bannit automatiquement les adresses IP fautives.
Comment fail2ban Fonctionne
- fail2ban surveille les fichiers de log (par ex. /var/log/auth.log, /var/log/nginx/access.log).
- Il applique des regles de filtre pour identifier les tentatives de connexion echouees.
- Quand une IP depasse le seuil configure (par ex. 5 echecs en 10 minutes), fail2ban ajoute une regle de pare-feu pour bloquer cette IP.
- Apres un temps de bannissement configurable, l'IP est automatiquement debloquee.
Configuration pour les Connexions Web
Pour un site WordPress, une configuration jail de fail2ban ressemble a ceci :
[wordpress-login]
enabled = true
filter = wordpress-login
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 300
bantime = 3600
Cela bannit toute IP qui genere 5 tentatives de connexion echouees en 5 minutes (300 secondes) pendant 1 heure (3600 secondes). fail2ban opere au niveau du pare-feu, donc les IP bannies ne peuvent meme pas atteindre votre serveur web.
Contre-mesure 6 : Cloudflare WAF
Un WAF se place entre internet et votre serveur web, filtrant le trafic malveillant avant qu'il n'atteigne votre application. Cloudflare est l'option la plus largement utilisee, mais les alternatives incluent Sucuri, AWS WAF et Imperva.
Comment Cloudflare WAF Arrete la Force Brute
- Detection de bots : Cloudflare utilise le machine learning pour distinguer les outils automatises des vrais navigateurs.
- Regles de rate limiting : Vous pouvez creer des regles personnalisees qui limitent les tentatives de connexion par IP, par session ou par d'autres criteres.
- Rulesets geres : Cloudflare maintient des rulesets qui bloquent les patterns d'attaque connus.
- Pages de challenge : Le trafic suspect recoit un challenge JavaScript ou CAPTCHA avant d'atteindre votre page de connexion.
- Reputation IP : Cloudflare maintient une base de donnees de reputation des adresses IP a travers tout son reseau.
Pour les entreprises au Tessin et dans toute la Suisse, le plan gratuit de Cloudflare inclut des fonctionnalites WAF de base. Le plan Pro (20 USD/mois) ajoute le ruleset gere complet. C'est l'un des investissements de securite avec le meilleur rapport qualite-prix. Pour une perspective plus large sur la securite web pour les sites d'entreprise, consultez notre article sur la securite des sites web d'entreprise.
Contre-mesure 7 : Authentification a Deux Facteurs (2FA)
L'authentification a deux facteurs est la defense la plus efficace contre la force brute et le credential stuffing. Meme si un attaquant obtient le bon mot de passe, il ne peut pas se connecter sans le second facteur.
Types de 2FA
- TOTP (Time-based One-Time Password) : Des applications comme Google Authenticator, Authy ou Microsoft Authenticator generent un code a 6 chiffres qui change toutes les 30 secondes.
- Cles de securite materielles : Des appareils physiques (YubiKey, Google Titan) qui utilisent le protocole FIDO2/WebAuthn. L'option la plus securisee, immunisee contre le phishing.
- Codes SMS : Un code envoye par SMS. Mieux que pas de 2FA, mais vulnerable aux attaques de SIM swapping.
- Codes email : Un code envoye a l'email de l'utilisateur. Mieux que rien mais depend de la securite du compte email.
Pourquoi le 2FA Resout le Credential Stuffing
Le credential stuffing fonctionne parce que les mots de passe voles sont valides. Mais un mot de passe vole combine avec le 2FA est inutile. L'attaquant a le mot de passe mais ne peut pas generer le code TOTP. Cette seule mesure elimine tout le vecteur d'attaque du credential stuffing.
Implementer la Securite de Connexion Correctement : Une Approche par Couches
Aucune contre-mesure unique n'est suffisante. L'approche correcte est la defense en profondeur, ou plusieurs couches travaillent ensemble de sorte qu'une defaillance dans une couche soit rattrapee par la suivante.
Resume de la Configuration Recommandee
| Couche | Outil | Configuration |
|---|---|---|
| Reseau | Cloudflare WAF | Managed Challenge sur URL de connexion, rate limit 5 req/min |
| Serveur | fail2ban | Bannir IP apres 5 echecs en 5 min, duree du ban 1 heure |
| Serveur | nginx rate limit | 5 requetes/minute par IP sur endpoint de connexion |
| Application | CAPTCHA | Afficher apres 3 tentatives echouees par IP ou nom d'utilisateur |
| Application | Verrouillage compte | Verrouiller apres 10 echecs, deverrouiller apres 15 min |
| Authentification | 2FA (TOTP) | Obligatoire pour tous les comptes admin et editeur |
Mesures de Hardening Supplementaires
Renommer ou Masquer l'URL de Connexion
Pour WordPress, l'URL de connexion par defaut est /wp-login.php. Chaque bot sur internet le connait. Des plugins comme WPS Hide Login permettent de le changer en une URL personnalisee. Cela ne fournit pas de vraie securite (securite par l'obscurite), mais cela elimine une quantite enorme de bruit automatise dans vos logs.
Desactiver XML-RPC
L'interface XML-RPC de WordPress (xmlrpc.php) permet des tentatives de connexion qui contournent les protections de wp-login.php. Les attaquants utilisent la methode system.multicall pour tester des centaines de mots de passe en une seule requete. Sauf si vous avez specifiquement besoin de XML-RPC, desactivez-le completement. Pour en savoir plus sur les vulnerabilites specifiques a WordPress, consultez notre article sur la securite et mises a jour WordPress.
Appliquer des Politiques de Mots de Passe Forts
Exigez des mots de passe d'au moins 12 caracteres et verifiez-les contre les bases de donnees de violations connues (l'API HaveIBeenPwned fournit ce service gratuitement). N'imposez pas de regles de complexite arbitraires car elles menent a des patterns previsibles comme "Password1!". La longueur compte plus que la complexite.
Le Cout de Ne Rien Faire
La defense contre la force brute n'est pas couteuse. Le plan gratuit de Cloudflare couvre la protection de base. fail2ban est un logiciel open source gratuit. Les plugins 2FA pour WordPress sont gratuits. Le cout total de l'implementation de toutes les contre-mesures decrites dans cet article est proche de zero pour la plupart des sites web.
Le cout d'une attaque reussie, en revanche, va de la defiguration du site au vol complet de donnees (responsabilite legale sous nLPD et RGPD, couts de notification des clients, amendes reglementaires). Pour une PME suisse, une violation de donnees peut facilement couter CHF 50 000 a 200 000.
Si vous gerez un site web d'entreprise et que votre page de connexion n'a pas de rate limiting, pas de CAPTCHA, pas de 2FA et utilise des identifiants par defaut, vous n'etes pas juste a risque. Vous etes deja attaque. La seule question est de savoir si les attaquants ont deja reussi.
Prochaines Etapes
Chez Envestis a Lugano, nous effectuons des evaluations de securite qui incluent le test des protections de connexion contre les attaques par force brute. Nous verifions le rate limiting, l'implementation CAPTCHA, la configuration 2FA et les defenses au niveau serveur. Ensuite, nous implementons les correctifs, couche par couche du reseau a l'application.
Si vous voulez savoir si la connexion de votre site web est correctement protegee, ou si vous avez besoin d'aide pour implementer les contre-mesures decrites ici, contactez-nous. Un login qui peut etre force par brute force n'est pas une vulnerabilite theorique. C'est une porte ouverte.
Vous voulez savoir si votre site est sécurisé ?
Demandez un audit de sécurité gratuit. En 48 heures vous recevez un rapport complet.
Demander un Audit Gratuit