How to Prevent Brute Force Attacks

Comment prévenir les attaques par force brute : 9 contrôles éprouvés

Par Benish Parvaiz·

Pour prévenir les attaques par force brute, exigez une authentification multifacteur pour chaque connexion Internet, limitez le taux de tentatives infructueuses par compte, IP et globalement, bloquez les mots de passe violés, stockez les hachages avec Argon2id ou bcrypt et alertez en cas d'échecs de connexion anormaux. Superposez ces contrôles, car personne n’arrête chaque variante.

Ouvrez le journal d'authentification de n'importe quel serveur SSH quelques heures après sa mise en ligne et vous verrez ceci :

3 octobre 02:14:07 web01 sshd[2231] : échec du mot de passe pour root à partir du port 203.0.113.45 51022 ssh2
3 octobre 02:14:09 web01 sshd[2233] : échec du mot de passe pour l'administrateur du port 198.51.100.17 40318 ssh2
3 octobre 02:14:11 web01 sshd[2236] : échec du mot de passe pour Ubuntu à partir du port 192.0.2.88 33874 ssh2

Trois noms d'utilisateur, trois IP, à deux secondes d'intervalle. Personne ne tape. Les robots testent chaque page de connexion, port SSH et point de terminaison d'API qu'ils trouvent, et une seule hypothèse réussie mène directement àreprise de compte. Vous trouverez ci-dessous neuf contrôles classés par impact, ainsi que la manière de détecter et de répondre à une attaque en cours.

Comment prévenir les attaques par force brute : 9 contrôles classés par impact

  1. Appliquez l’authentification multifacteur.Une tentative correcte ou un mot de passe divulgué ne donne plus accès.

  2. Limite de débit et connexions limitées.Devinez lentement à une vitesse qui la rend inutile.

  3. Suivez les règles de mot de passe NIST SP 800-63B.Privilégiez la longueur, bloquez les mots de passe violés, abandonnez la rotation forcée.

  4. Hachez les mots de passe avec Argon2id ou bcrypt.Une base de données volée ne doit pas devenir une base de données piratée.

  5. Ajoutez CAPTCHA et la détection de robots de manière sélective.Défiez uniquement le trafic suspect.

  6. Renforcez les connexions SSH, RDP, CMS et les API.Fermez les services que les attaquants ont touchés en premier.

  7. Utilisez la réputation IP, les règles géographiques et un WAF.Réduisez tôt le mauvais trafic connu.

  8. Surveillez et alertez en cas d’échec d’authentification.Attrapez ce qui échappe à la prévention.

  9. Testez vos propres défenses.Confirmez que les contrôles fonctionnent avant qu’un attaquant ne le fasse.

Vous manquez de temps ? Effectuez d'abord les contrôles 1, 2 et 8. La MFA limite les dégâts, la limitation du débit ralentit l'attaque et la surveillance vous indique que cela se produit.

Pourquoi la prévention diffère selon la variante

How to Prevent Brute Force Attacks

Chaque variante est arrêtée par un contrôle différent, alors sachez à laquelle vous faites face.

Variante

Comment ça marche

Signature du journal

Meilleur contrôle

Force brute simple

Beaucoup de suppositions sur un seul compte

De nombreux échecs, un seul nom d'utilisateur

Limitation, verrouillage temporaire

Pulvérisation de mot de passe

Quelques mots de passe courants sur de nombreux comptes

Un ou deux échecs par compte

Limites par IP et globales, MFA

Bourrage d’informations d’identification

Les paires de nom d'utilisateur et de mot de passe divulguées ont été rejouées

IP tournantes à volume élevé

MFA, contrôle des violations

Craquage hors ligne

Deviner contre les hachages volés

Aucun sur vos systèmes

Argon2id ou bcrypt, mots de passe longs

La pulvérisation élimine les verrouillages par compte, car chaque compte ne voit presque aucun échec. Le cracking hors ligne ne laisse aucune trace, c'est pourquoi le hachage est important même si votre page de connexion est parfaite.

Contrôle 1 : appliquer l'authentification multifacteur

How to Prevent Brute Force Attacks

MFA occupe la première place car elle rend un mot de passe correct insuffisant. Classé par force :

  1. Mots-clés et clés FIDO2.Résistant au phishing car les informations d'identification sont liées au domaine réel.

  2. Application d'authentification TOTP.Solide, même si un proxy de phishing en direct peut relayer le code.

  3. Poussez avec la correspondance des numéros.Bloque les approbations aveugles.

  4. Codes SMS.Le plus faible, exposé à l’échange de carte SIM. À utiliser uniquement comme solution de secours.

Lutter contre la lassitude MFA, où les attaquants envoient des invites jusqu'à ce que quelqu'un approuve, avec une correspondance de numéros, une limite d'invites par heure et des alertes après des refus répétés. Déployez par rayon d'action : panneaux d'administration et consoles cloud, puis e-mail, VPN et hébergement de code, puis tout le monde. Verrouillez également le chemin de récupération. Ne laissez jamais l’assistance désactiver la MFA uniquement par courrier électronique.

Contrôle 2 : tentatives de limite de débit et de connexion avec limitation

How to Prevent Brute Force Attacks

Un robot essayant 10 000 mots de passe par minute constitue une menace. Tenu à 5 par minute, ce n'est pas le cas. Accélérez avant de verrouiller, car les verrouillages stricts permettent aux attaquants de refuser le service aux utilisateurs réels.

  • Pannes 1 à 3 : pas de délai

  • Échecs à partir de 4 : 1, 2, 4, 8 secondes, plafonné à 60

  • Après 10 échecs : verrouillage de 15 minutes plus un e-mail au propriétaire du compte

Limite à trois dimensions, puisque chaque variante en dépasse une différente : par compte (10 échecs toutes les 15 minutes), par IP (20 tentatives par minute) et globale (alerte supérieure à 3 fois les échecs de base).

nginx

limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;

emplacement / connexion {
    limit_req zone=login burst=3 nodelay ;
    limit_req_status 429 ;
    proxy_pass http://app_backend ;
}

Nginx ne voit que les adresses IP, utilisez donc des compteurs Redis ou un WAF pour le compte et les couches globales. Appliquez les mêmes limites à la réinitialisation du mot de passe, à la saisie MFA (un code à 6 chiffres ne comporte que 1 000 000 de combinaisons) et aux itinéraires de connexion API.

Contrôle 3 : définir des règles de mot de passe basées sur NIST SP 800-63B

Le NIST a remplacé les anciennes règles de complexité par des conseils basés sur la façon dont les attaquants devinent.

  • Exigez 8 caractères minimum avec MFA et 15 ou plus pour les comptes administrateur. Autorisez 64 ou plus.

  • Supprimez les mélanges forcés de symboles et de chiffres.agrafe de batterie de cheval correctebatP@ssw0rd !.

  • Vérifiez les nouveaux mots de passe par rapport à l'API Have I Been Pwned Pwned Passwords, qui utilise le k-anonymat afin que le mot de passe complet ne quitte jamais votre système.

  • Mettre fin à la rotation planifiée. Forcer une réinitialisation uniquement sur preuve de compromission, telle qu'une correspondance trouvée viasurveillance du Web sombre.

  • Autorisez le collage pour que les gestionnaires de mots de passe fonctionnent.

Si un auditeur exige toujours une rotation, documentez la justification du NIST et appliquez la règle la plus stricte uniquement lorsqu'un cadre l'exige.

Contrôle 4 : hacher les mots de passe pour arrêter les attaques hors ligne

Les limites de débit ne font rien une fois qu'un attaquant détient votre base de données. Un GPU moderne teste des milliards de suppositions MD5 par seconde, de sorte que les hachages rapides tombent en quelques heures. C'est là quecomprendre comment fonctionne le hachagec'est payant. Utilisez un algorithme lent et exigeant en mémoire :

  1. Argon2id.La recommandation actuelle de l’OWASP.

  2. crypter.Alternative forte.

  3. bcrypt.Testé au combat, facteur de coût 12 ou supérieur.

  4. PBKDF2.Uniquement là où la conformité l’exige, à 600 000 itérations ou plus.

N'utilisez jamais MD5, SHA-1 ou SHA-256 seuls. Les bibliothèques gèrent le salage, alors ne l'écrivez jamais vous-même. Réglez le facteur de travail à environ 250 à 500 ms par hachage et re-hachez à la prochaine connexion lorsque les paramètres s'améliorent.

python

à partir d'argon2 importer PasswordHasher
ph = Mot de passeHasher (time_cost=2, memory_cost=19456, parallélisme=1)
stocké = ph.hash (mot de passe)
ph.verify(stocké, mot de passe) # se déclenche en cas de non-concordance

Confirmez les paramètres par rapport à l'aide-mémoire de stockage de mot de passe OWASP actuel avant l'expédition.

Contrôle 5 : ajouter sélectivement CAPTCHA et la détection de robots

CAPTCHA ajoute de la friction, pas un mur. Les services de résolution vendent à bas prix des défis résolus par l’homme, et les modèles d’IA réussissent désormais à résoudre de nombreuses énigmes d’images. Déclenchez des défis sur les risques : trois pannes ou plus, un nouvel appareil ou un nouveau pays, les adresses IP du fournisseur d'hébergement ou les signatures de navigateur sans tête. Cloudflare Turnstile, hCaptcha et reCAPTCHA v3 présentent des risques de manière invisible. Associez-les à l’analyse des empreintes digitales et du timing des appareils et offrez une alternative accessible aux utilisateurs qui ne peuvent pas relever les défis visuels.

Contrôle 6 : Renforcez les services les plus touchés par les attaquants

SSH.Supprimez le mot de passe et la force brute n'a rien à deviner.

Mot de passeAuthentification non
PermitRootLogin non
AllowUsers déployer l'administrateur
MaxAuthTries 3

Générez des clés avecssh-keygen -t ed25519, confirmez la connexion par clé dans une deuxième session, puis rechargezsshd. Ajoutez Fail2ban comme couche de support. Changer le port réduit le bruit du journal mais ne constitue pas un contrôle.

RDP.N'exposez jamais le port 3389. Placez-le derrière un VPN ou une passerelle (découvrez commentZTNA et VPN s'adaptent aux stratégies de sécurité modernes), activez l'authentification au niveau du réseau, exigez MFA et définissez une politique de verrouillage de 5 échecs pendant 15 minutes.

WordPress et CMS.Limiter les tentatives de connexion, bloquer/xmlrpc.php(sonsystem.multicallméthode teste des centaines de mots de passe par requête), restreindre/wp-login.phppar IP et appliquer l'administrateur MFA.

Apis.Définissez des limites par clé et par IP avec429réponses, utilisez des clés aléatoires de 332 octets ou plus, expirez les jetons dans l'heure et renvoyez des erreurs identiques pour les mauvais noms d'utilisateur et les mauvais mots de passe.

Contrôle 7 : Utiliser la réputation IP, les règles géographiques et un WAF

Le filtrage périphérique est un pré-filtre et non une défense principale. Intégrez des flux de réputation tels que AbuseIPDB et Spamhaus DROP, contestez les gammes de fournisseurs d'hébergement et les nœuds de sortie Tor sur les routes de connexion, et appliquez des règles géographiques là où vos clients sont concentrés. Utilisez une MFA renforcée au lieu de blocages stricts afin que les voyageurs ne soient pas exclus. Déployez des règles WAF basées sur les taux (Cloudflare, AWS WAF ou ModSecurity), en commençant en mode comptage avant de passer au bloc. Les réseaux proxy résidentiels alternent avec les véritables adresses IP domestiques et évitent tout cela, de sorte que la MFA et la limitation par compte portent toujours la charge.

Contrôle 8 : Surveiller et alerter en cas d'échec d'authentification

How to Prevent Brute Force Attacks

La prévention finit par échouer et, sans surveillance, une connexion réussie par force brute semble normale. Bonsurveillance de la cybersécuritécommence par les bons journaux : ID d’événement Windows 4625, 4624 et 4740 ; SSHauth.log401 pics sur les connexions Web et les journaux de connexion du fournisseur d'identité. N’enregistrez jamais les mots de passe.

Écrivez une détection par variante :

  • Force brute :plus de 10 échecs pour un compte en 5 minutes

  • Pulvérisation :une adresse IP défaillante contre plus de 15 noms d'utilisateur en 30 minutes

  • Farce :volume de connexion supérieur à 3x la ligne de base avec un taux d'échec élevé

  • Compromis:une connexion réussie après une explosion d'échecs. Appelez quelqu'un pour celui-ci.

  • Abus de MFA :trois invites push refusées ou plus

index=wineventlog EventCode=4625
| bin _durée = 30 m
| stats dc (TargetUserName) en tant qu'utilisateurs par _time, IpAddress
| où utilisateurs > 15

Wazuh est un point de départ gratuit avec des règles SSH et brute force intégrées. Exécutez des alertes en mode rapport uniquement pendant une semaine et adaptez-vous à votre propre référence.

Contrôle 9 : testez vos propres défenses

Un contrôle non testé est une hypothèse. Testez uniquement les systèmes que vous possédez ou avez une autorisation écrite pour tester, en utilisant un compte de test dédié. Hydra, Medusa et Burp Intruder couvrent les formulaires et services de connexion, et Hashcat teste la résistance hors ligne par rapport à une copie de vos propres hachages dans un laboratoire. Pliant cela dans untests d'intrusion et évaluation de la vulnérabilitéle programme le maintient selon un calendrier.

Vérifiez que 15 échecs rapides déclenchent des retards, qu'un mot de passe sur 30 comptes déclenche la détection de pulvérisation, qu'un mot de passe correct sans MFA est refusé, que SSH rejette les mots de passe et qu'une rafale d'échec suivie d'un succès atteint votre téléavertisseur. Le test d’alerte est tout aussi important que le test de bloc. Retestez tous les trimestres et après tout changement d’authentification.

Que faire pendant une attaque active

  1. Confirmez la portée.Identifiez les comptes ciblés, les adresses IP sources et tout succès après une explosion d’échecs.

  2. Bloquez la source.Utilisez des règles de pare-feu ou WAF, ou bloquez par ASN ou un modèle de demande en cas de rotation des adresses IP. Changez les règles de mode de comptage pour bloquer.

  3. Verrouillez les comptes compromis.Réinitialisez les mots de passe, révoquez les sessions et vérifiez la propriété MFA via un autre canal.

  4. Serrez temporairement.Abaisser les seuils et exiger une intensification de l’AMF, puis supprimer les mesures après l’attaque.

  5. Chassez l’activité post-compromis.Recherchez de nouveaux appareils MFA, des règles de transfert de boîtes aux lettres, des clés API et des subventions OAuth.

  6. Document.Enregistrez quel contrôle aurait dû arrêter cela et comblez l’écart. Vérifiez les délais de notification des violations si les données ont été consultées.

Liste de contrôle pour la prévention des forces brutes

À faire aujourd'hui

  • Répertoriez toutes les connexions Internet

  • Activer MFA sur les comptes administrateur, de messagerie et cloud

  • Désactivez les mots de passe SSH et fermez le RDP public

À faire cette semaine

  • Ajouter des limites de débit de connexion, de réinitialisation et de point de terminaison MFA

  • Filtrer les mots de passe par rapport aux listes de violations

  • Définir des alertes de réussite après des échecs

Faites ce trimestre

  • Exécutez un test autorisé sur chaque contrôle

  • Ajuster les seuils d'alerte

  • Ré-analyser les facteurs de travail de hachage

Conclusion

Les attaques par force brute sont automatisées et constantes, la défense doit donc également être automatique. Donnez la priorité à l’authentification multifacteur, à la limitation de débit par couches, au hachage puissant avec filtrage des violations et aux alertes en cas de réussite après échec. Ensemble, ils augmentent le coût de votre attaque au-delà de ce que la plupart des robots dépenseront.

Prochaine étape aujourd'hui :répertoriez toutes les connexions Internet et marquez celles qui manquent de MFA et de limitation de débit. Corrigez d'abord les panneaux d'administration, la messagerie électronique et l'accès à distance.

Foire aux questions

Quel est le moyen le plus efficace de prévenir les attaques par force brute ?

MFA résistant au phishing tel que les clés d'accès ou les clés FIDO2. Cela rend un mot de passe correct insuffisant, ce qui neutralise les devinettes, les bourrages et les informations d'identification hameçonnées. Associez-le à une limitation de débit.

Le verrouillage du compte arrête-t-il les attaques par force brute ?

Il empêche les devinettes sur un seul compte, mais les attaquants peuvent déclencher des verrouillages pour bloquer les utilisateurs réels, et il ne fait rien contre la pulvérisation de mots de passe. Utilisez des délais progressifs ainsi que des limites par IP et globales.

Combien de temps faut-il pour forcer brutalement un mot de passe ?

Cela dépend de la longueur, du jeu de caractères et du type de hachage. La longueur compte le plus, et les hachages rapides comme MD5 tombent beaucoup plus rapidement que Argon2id. Testez vos propres hachages dans un laboratoire plutôt que de vous fier à un chiffre générique.

Un VPN ou la modification du port par défaut peuvent-ils arrêter les attaques par force brute ?

Un VPN supprime l’exposition publique, les attaquants doivent donc d’abord réussir son authentification. Le changement de port ne réduit que le bruit du scanner et se trouve en quelques minutes.

Quelle est la différence entre la force brute et le credential stuffing ?

La force brute devine les mots de passe. Le credential stuffing rejoue de vraies paires divulguées, en misant sur la réutilisation. Les mots de passe uniques, le filtrage des violations et le MFA arrêtent le bourrage.

Comment puis-je savoir si je suis brutalement forcé ?

Recherchez les pics d'échecs de connexion, les échecs d'une adresse IP sur plusieurs noms d'utilisateur, les tentatives de mot de passe sur plusieurs comptes et les inondations de verrouillages. Un succès juste après un échec est le signe le plus sérieux.

Fail2ban est-il suffisant pour protéger SSH ?

Non. Les attaques distribuées restent en dessous de ses seuils. Désactivez l'authentification par mot de passe et exigez des clés, et conservez Fail2ban comme couche de support.

Prêt à être protégé ?

Commencez votre parcours de sécurité dès aujourd'hui

Obtenez une consultation gratuite avec nos experts en cybersécurité. Aucun engagement requis.