Attaque par force brute sur WordPress

4 mesures pour empêcher les attaques par force brute sur ton WordPress

Que sont les attaques par force brute, à quoi les attaquants les utilisent-ils et comment peux-tu empêcher ces attaques sur ton WordPress ? Tu te poses certainement ce genre de questions lorsque tu t'intéresses à ce sujet. Nous avons rassemblé les réponses à ces questions.

Que sont les attaques de force brute ?

Les attaques par force brute sont des tentatives d'accès à ton système (dans ton cas, probablement ton WordPress). Cela se fait en essayant de deviner un nom d'utilisateur et le mot de passe correspondant. Ce compte a finalement déjà accès au système. 

C'est une méthode très simple et primitive (comme son nom l'indique - Brute Force = force contondante), mais qui reste très efficace. En même temps, elle est très facile à éviter.

Quels sont les types d'attaques par force brute ?

Il existe de petites différences, mais elles sont importantes, entre les attaques par force brute et leurs scénarios d'attaque. Les types les plus courants peuvent être divisés en 5 catégories :

  1. Simple attaque par force brute
  2. Attaque du dictionnaire
  3. Attaque hybride Brute Force
  4. Reverse Brute Force Attack / Password Spraying
  5. Le bourrage de crâne

Ci-dessous, nous te présentons chacune de ces catégories en détail.

"*" indique les champs requis

Consentement*
Ce champ sert à la validation et ne doit pas être modifié.

1. attaque simple par force brute

C'est la forme la plus pure de l'attaque par force brute. Elle essaie une à une toutes les combinaisons de caractères, sans recherche ni procédure particulière, à part le simple fait de compter ou de décompter les caractères.

WordPress Brute Force Simple Attack
Crédit : Matthias Held

Cette méthode est simple, mais elle prend du temps et nécessite beaucoup de puissance de calcul. Cependant, avec des processeurs de plus en plus puissants ou la possibilité de lancer de nombreux systèmes différents sur une cible en même temps (par exemple à l'aide de botnets ou de serveurs cloud), elle reste une méthode valable. 

Il existe des essais en laboratoire ainsi que des applications dans le monde réel qui peuvent craquer un mot de passe de 8 caractères en moins de 12 minutes. Avec l'évolution de la technologie, il sera encore plus rapide et plus facile de parvenir à ses fins. C'est pourquoi cette méthode reste une méthode populaire pour les attaquants qui visent une cible spécifique.

Avantage: il est possible de deviner n'importe quel mot de passe.
Inconvénient: cela peut prendre beaucoup de temps et nécessite beaucoup de calculs.

De bonnes méthodes de défense: Utilise des mots de passe longs avec une grande variété de caractères.

2ème attaque du dictionnaire

Contrairement à la méthode de la force brute simple, l'attaque du dictionnaire utilise un ensemble de données existant pour le tester.

Il peut s'agir de données provenant de différentes sources :

  1. Les dictionnaires réels (dictionnaires), c'est-à-dire tous les mots du Duden, par exemple.
  2. Listes de mots de passe comme les 10 000 mots de passe les plus utilisés.
  3. Mots de passe de breaches passées (noms d'utilisateur et mots de passe de précédents piratages de sites web et d'applications).

La première perd de plus en plus d'importance, mais les deux dernières sont devenues de plus en plus fortes au fil des années, car avec l'augmentation des cyber-attaques, la quantité de données dans ces listes augmente naturellement aussi.

Attaque du dictionnaire WordPress par force brute
Crédit : Matthias Held

Avantage: comme les utilisateurs aiment utiliser des mots de passe faciles à retenir, ils se simplifient souvent la vie en utilisant des mots du dictionnaire ou des noms, et ce, à plusieurs reprises sur tous les services, sites et applications. La probabilité de réussite est donc très élevée pour obtenir un accès et la méthode est beaucoup plus rapide qu'une simple force brute.


Inconvénient: la probabilité de réussite n'est plus de 100 %.

Bonnes méthodes de défense: n'utilise pas de mots isolés du dictionnaire ou de noms, d'objets ou autres. Utilise également le même mot de passe pour un seul compte et non pour plusieurs. 

3. l'attaque hybride Brute Force

L'attaque Hybrid Brute Force est une combinaison de l'attaque Simple Brute Force et de l'attaque Dictionary.


Il s'agit de prendre un mot de la force brute simple et de le combiner avec des chiffres potentiels qui sont souvent utilisés, comme par exemple une année de naissance ou un anniversaire de mariage. Cela limite considérablement le nombre de tentatives potentielles et simplifie ainsi le processus d'attaque.

Attaque hybride de force brute WordPress
Crédit : Matthias Held

Avantage: cette méthode a le même avantage que la force brute du dictionnaire, sauf qu'elle augmente le nombre d'essais et qu'elle ajoute un nombre élevé d'essais avec une simple addition de caractères comme des smileys sous forme de texte ou des années(Maga2020 est un exemple célèbre).
Inconvénient: la probabilité de réussite n'est plus de 100 % comme pour la force brute du dictionnaire.

Bonnes méthodes de défense: évite d'utiliser des dates ou des chiffres importants pour toi dans les mots de passe.

4. attaque par force brute inversée ou pulvérisation de mot de passe

Dans ce cas, les pirates essaient de combiner un mot de passe avec différents noms d'utilisateur. Le nom d'utilisateur varie donc, le mot de passe reste le même.

WordPress attaque par force brute inversée
Crédit : Matthias Held

Avantage: comme décrit plus haut, les gens ont tendance à réutiliser leurs mots de passe et à les prendre les plus mémorables possible. Cela s'applique également à ce type d'attaque. De plus, cela permet de contourner un lock out (blocage de connexion pour le compte) en cas de trop nombreuses tentatives sur le même compte d'utilisateur.

Inconvénient: cette méthode peut donner lieu à de nombreux accès, mais peut-être pas aux comptes que tu souhaites.

Bonnes méthodes de défense: Comme la plupart des listes de comptes d'utilisateurs sont utilisées ici aussi (dans la mesure où elles ne peuvent pas être lues ), il est recommandé, comme pour le mot de passe, de choisir un nom d'utilisateur difficile à deviner avec beaucoup de caractères alphanumériques et de caractères spéciaux.

5. le bourrage de crâne

Ici aussi, les données des brèches passées (voir Attaque du dictionnaire, point 2) jouent un rôle. Le Credential Stuffing ne fait rien d'autre que de réutiliser les données de connexion de breaches existants.

Par exemple, si tu as utilisé le nom d'utilisateur yourmail@yourwebsite.com et le mot de passe Cola123
quelque part sur un site Web ou une application
et que ces données sont sorties à la suite d'un breach, les pirates les utiliseront pour se connecter à d'autres services et applications.

WordPress Brute Force Credential Stuffing
Crédit : Matthias Held

Cette attaque a de très grandes chances de succès et devient de plus en plus populaire. C'est pourquoi elle fait partie des plus dangereuses à l'heure actuelle.

Pour savoir si l'un de tes comptes a déjà fait l'objet d'une brèche, tu peux consulter le site haveibeenpwned.com.

Raidboxes et les brèches

Lors de la création d'un nouveau compte d'utilisateur, Raidboxes vérifie si le mot de passe a déjà fait l'objet d'une brèche(anonyme et non traçable).

Avantage: ici aussi, le fait que les gens soient des animaux d'habitude joue un rôle. La plupart des gens utilisent la même adresse e-mail et le même mot de passe pour de nombreux services. Cela permet également d'éviter le verrouillage des comptes comme dans le cas de la force brute inverse.

Inconvénient: avec cette attaque, il faut à nouveau se renseigner au préalable pour savoir si la personne dont tu veux accéder au compte utilise également le service/site web/application. Mais si tu veux simplement avoir un accès, c'est une méthode très efficace.

Bonnes méthodes de défense: N'utilise jamais les mêmes données de connexion plusieurs fois. Garde-les uniques partout où tu t'inscris.

Comment protéger mon site WordPress contre les attaques par force brute ?

Je lis et j'entends souvent le conseil suivant : "Utilise simplement des mots de passe sûrs".

C'est peut-être vrai en principe, mais avec suffisamment de temps et de ressources, il est possible de craquer n'importe quelle combinaison de login via la force brute, si tu n'utilises pas d'autres mesures de protection.

De plus, ces attaques représentent une charge évitable sur ton serveur - et cela nuit non seulement au temps de chargement de ton site web, mais aussi à ton porte-monnaie si ton hébergeur facture en fonction du trafic. 

La meilleure méthode est encore de ne pas permettre ces attaques en premier lieu et de bloquer complètement l'accès.

Au niveau du serveur

Mesure 1 : bloque les demandes non autorisées sur ton formulaire de connexion

Tu peux utiliser une combinaison de login aussi sûre soit-elle, elle sera craquée avec beaucoup de temps, de puissance de calcul et sans autre protection.
La manière la plus efficace est de créer une protection qui bloque complètement toute demande non autorisée à ton formulaire de connexion WordPress. Ainsi, les attaques automatisées et manuelles ne passent pas. En fin de compte, cela protège également ton serveur.

Il existe plusieurs possibilités. Toutes les possibilités ne conviennent pas, cela dépend de tes connaissances techniques et des possibilités de configuration de tes paramètres DNS et serveur. 

Astuce : créer une liste d'autorisation IP


Protection : 🔒🔒🔒🔒🔒
Effort technique : 🛠️🛠️🛠️

Si tu accèdes toujours à Internet avec la même adresse IP, par exemple parce que tu as ton propre VPN ou que tu as une IP fixe dans ton agence, la méthode la plus sûre est de créer une liste d'autorisation pour cette IP sur /wp-admin et /wp-login.

Apache

Si ton serveur web fonctionne sous Apache, ajoute cette partie à ton .htaccess :

RewriteEngine on

RewriteCond %{REQUEST_URI} ^(.*)?wp-login\Nphp(.*)$ [OR]

RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

RewriteCond %{REMOTE_ADDR} !^123\N.123\N.123$ 

RewriteRule ^(.*)$ - [R=403,L]


Important :
Note que dans les lignes qui contiennent REMOTE_ADDR, tu dois seulement remplacer les CHIFFRES par les chiffres respectifs de ton IP.
Par exemple, si ton IP est 95.217.228.176, la ligne devrait se lire

RewriteCond %{REMOTE_ADDR} !^95\N217\N218\N176$.

Pour chaque adresse IP autorisée, ajoute une ligne séparée. Redémarre ensuite ton service Apache pour que les modifications soient prises en compte.

Nginx

Insère ce snippet dans ton bloc de serveur du fichier d'hôte virtuel. Ici aussi, tu dois ajouter une ligne allow pour chaque adresse IP autorisée.

location = /wp-login.php {

     allow 192.168.1.1 ; #adresse IP 1 pour chaque adresse IP autorisée une ligne

     allow 172.16.1.1 ; #adresse IP 2

     deny all ;

     include snippets/fastcgi-php.conf ;

     fastcgi_pass unix:/run/php/php7.4-fpm.sock ;

     }

Redémarre ton service nginx pour que les modifications soient prises en compte.

Conseil : Utiliser un pare-feu CDN


Protection : 🔒🔒🔒🔒🔒
Effort technique : 🛠️

Les CDN peuvent offrir une très bonne protection en configurant le pare-feu pour qu'il active une demande Captcha avant le formulaire de connexion.
Voici un tutoriel pour Cloudflare. Dans le plan gratuit de Cloudflare, tu peux créer jusqu'à 5 règles.

1. connecte-toi à ton Cloudflare-Dashboard , va dans Pare-feu et crée une nouvelle règle de pare-feu.

2. les données de la règle sont

Pare-feu WordPress Brute Force CDN

C'est tout.

Astuce : Créer une liste de blocage via Fail2Ban


Protection : 🔒🔒🔒🔒
Effort technique : 🛠️🛠️🛠️🛠️

Si tu n'as pas d'IP fixe et que tu n'utilises pas de CDN, tu peux créer une liste de blocage via Fail2Ban. Tu trouveras de bons tutoriels à ce sujet ici :

Mais attention, tu dois l'adapter spécifiquement à l'URL /wp-login.

Conseil : Utilise Raidboxes Dashboard

Protection : 🔒🔒🔒🔒🔒
Effort technique : 🛠️

En combinaison avec un nom d'utilisateur et un mot de passe sécurisés et Raidboxes Single Sign On.

Raidboxes Les clients ont déjà un module anti force brute configurable sur chacune de leurs instances.
Avec le Single Sign On, c'est l'un des paramètres de sécurité les plus élevés que tu puisses avoir, sans aucun effort technique.

Dans WordPress lui-même

Si tu as suivi ces étapes, tu es très bien protégé contre les attaques.
Mais si tu ne peux pas utiliser cette (ces) solution(s) parce que tu n'as peut-être pas accès aux paramètres de ton serveur ou aux enregistrements DNS pour la mise en place d'un CDN, j'ai quelques autres étapes pour toi ici.

Action 2 : empêcher l'énumération du nom d'utilisateur

Avant d'aborder les mots de passe sûrs, commençons par le début : le nom d'utilisateur.

Les noms d'utilisateur représentent 50% de l'accès - et WordPress rend malheureusement très facile la lecture du nom d'utilisateur (login) pour tous les comptes créés avec des droits d'administration. Et ce de manière automatisée. Tu peux éviter cela soit en sécurisant toi-même ton WordPress, soit en installant les plugins suivants.

Astuce : Solution via les plugins


Protection : 🔒🔒🔒
Effort technique : 🛠️

Plugin 1 : Unified Login Error Messages
Ce plugin supprime l'émission de différents messages d'erreur en cas de tentative de connexion erronée. En effet, WordPress émet actuellement un message d'erreur différent lorsqu'un nom d'utilisateur existe ou non. Il est donc facile de savoir si l'utilisateur saisi existe.

Plugin 2 : Stop User Enumeration
Stop User Enumeration fait exactement ce qu'il dit : il bloque les demandes non autorisées à ton WordPress, par exemple pour lire les noms d'utilisateurs via l'archive d'auteur.

Astuce : Solution via functions.php

Protection : 🔒🔒🔒
Effort technique : 🛠️🛠️

Si tu préfères prendre le contrôle toi-même, tu peux adapter le fichier functions.php de ton thème actif ( fais une sauvegarde avant).

Ajoute le code suivant :

Code PHP

// If the user is not authenticated as an admin
if (!is_admin()) {
// RegEx to check if the request went to an “/author=INT” endpoint
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die();    add_filter('redirect_canonical', 'stop_user_enum', 10, 2);
}
function stop_user_enum($redirect, $request) {
// // RegEx to check if the the request went to an “/author=INT” endpoint but with the permalink furl format
if (preg_match('/\?author=([0-9]*)(\/*)/i', $request)) die(); else return $redirect;
}

Conseil : Utilise Raidboxes Dashboard


Protection : 🔒🔒🔒
Effort technique : 🛠️

Raidboxes Les clients profitent de solutions déjà prêtes sur Raidboxes Dashboard . Il n'y a rien d'autre à faire ici que de les embaucher.

Mesure 3 : "Utilise simplement des mots de passe sûrs".

Remarque: sur Raidboxes , lors de l'enregistrement d'un nouveau compte, nous demandons des choses lors de l'attribution du mot de passe qui rendent les requêtes par force brute beaucoup plus difficiles. Cela comprend 

  • Longueur minimale prédéfinie
  • Complexité
  • si le mot de passe peut être trouvé dans le dictionnaire (anglais ou allemand)
  • si elle contient une date
  • s'il a déjà été dans une faille de mot de passe connue (anonyme et intraçable)

Les mots de passe sont déficients : car ils sont devinables (force brute), lisibles (key logger etc), lisibles (à cause de l'absence ou de la mauvaise qualité du cryptage/stockage dans les mémoires de données), ne reconnaissent que l'autorisation d'un terminal, mais pas l'identité de la personne qui se cache derrière, et sont généralement difficiles à retenir (quand ils sont "sûrs").

Pour ce dernier problème, il existe des gestionnaires de mots de passe comme 1Password, BitWarden, KeePass et bien d'autres. 

Si nous sommes dans l'environnement WordPress, nous devons accepter le fait que nous devons utiliser des mots de passe.

Alors qu'est-ce qu'un mot de passe "sûr" ?

Un mot de passe sûr est un mot de passe long qui possède un certain degré de complexité. 

Oui, la longueur du mot de passe est plus importante que la complexité. Un mot de passe de 8 caractères peut être deviné en 12 minutes pour 25$USD, même s'il est composé de nombreux caractères spéciaux, de lettres majuscules et minuscules et de chiffres.

Le GIF suivant illustre très bien pourquoi la longueur a plus de poids que la complexité :

Mot de passe WordPress Brute Force Safe Password
Crédit : Intel Security // Intel.com

Les pirates n'ont pas non plus envie d' investir beaucoup d'argent ou de temps dans des calculs intensifs de mots de passe longs. La règle d'or est donc la suivante : plus ton mot de passe est long, mieux c'est !

Mais les mots de passe longs et complexes sont difficiles à retenir !

C'est vrai, mais à l'heure des gestionnaires de mots de passe, il suffit de se souvenir d'un mot de passe long et complexe et de laisser ces gestionnaires créer et enregistrer les autres.

Si nous avons ce seul mot de passe et que, dans le meilleur des cas, nous le changeons de temps en temps, nous sommes en sécurité.

Voici un secret de polichinelle sur la façon de créer des mots de passe longs et complexes et de s'en souvenir du premier coup :

Mots de passe complexes WordPress Brute Force
Crédit : xkcd.com 

Cela signifie que nous pouvons prendre à cœur cette bande dessinée XKCD et créer un long mot de passe selon l'un des modèles suivants :

Siège de train+chemin de campagne-7clins d'œil

Ou nous utilisons des phrases entières avec un peu de complexité supplémentaire :

J'aime les épinards seulement 3 fois par jour

Nous avons créé une phrase relativement vide de sens avec des caractères spéciaux et un chiffre, qui est très difficile à deviner tout en étant mémorisable (points positifs pour la rime). C'est ce qu'on appelle une phrase de passe.

De nombreux gestionnaires de mots de passe, comme BitWarden par exemple, créent pour toi de telles phrases de passe mémorables mais complexes.

Supplément : Utilise un nom d'utilisateur sûr

Comme mentionné plus haut : 50 % de ton accès est ton nom d'utilisateur.

Si une personne attaquante connaît cette partie de l'accès, la moitié est faite. Il ne reste plus que le mot de passe. Evite donc les noms d'utilisateur comme admin, administrateur ou ton nom, n'utilise pas le nom du site web ou le domaine ou quoi que ce soit en rapport avec le site en lui-même. 

Exemple

Si ton site s'appelle www.ireallylovecats.com, ne choisis pas un nom qui implique quelque chose avec des chats

Mieux encore, utilise la même astuce de mot de passe que ci-dessus en utilisant une longue phrase et en ajoutant de la complexité comme asphalte/peut/également/avec/7 épices.

Créer un mot de passe chez Raidboxes

Crée un mot de passe et un nom d'utilisateur avec une longueur maximale (dans WordPress, actuellement 60 caractères pour le nom d'utilisateur et 64 caractères pour le mot de passe, voir les propriétés de la base de données) et beaucoup de lettres, de chiffres et de caractères spéciaux - utilise ensuite simplement l'authentification unique dans Dashboard. Connexion sécurisée en un clic.

Mesure 4 : plugins de sécurité

Conseil : Plugins à tout faire

Protection : 🔒🔒🔒🔒

Effort technique : 🛠️🛠️ à 🛠️🛠️🛠️

Il y a beaucoup de plugins de sécurité WordPress sur le marché, par exemple :

Tous ces plugins de sécurité offrent une protection intégrée contre la force brute et bien plus encore. Pour la plupart des sites WordPress, l'installation et la maintenance de ces plugins suffiront comme protection. De même, la configuration et la maintenance sont minimales.

Malgré cela, les plugins ont un inconvénient (mineur dans la plupart des cas) : la charge du serveur due à la force brute ne peut pas être réduite par ces plugins. Ces plugins ont besoin d'un processus PHP pour vérifier s'il s'agit d'un accès valide, si l'IP n'est pas sur la liste de blocage.

Tout cela surcharge le serveur par requête. Bien sûr, c'est toujours moins qu'une tentative de connexion elle-même - et avant que le serveur ne soit vraiment affecté, l'attaque doit presque prendre des dimensions D/DOS - mais il ne faut pas l'ignorer.

Mais revenons aux nombreux avantages des plug-ins : s'ils sont toujours mis à jour, les nouvelles attaques sont rapidement détectées et corrigées sans que tu aies à intervenir toi-même.

Astuce : cacher le login WP

Protection : 🔒

Effort technique : 🛠️

"Security through obscurity" est une phrase souvent citée dans le domaine de la sécurité pour décrire cette méthode.

En fin de compte, cela signifie que l'on essaie d'empêcher les attaques en masquant simplement un problème. Cela fonctionne bien dans quelques cas, car les attaques par force brute ne passent pas par le formulaire de connexion, mais utilisent des paramètres de requête pour lancer les tentatives de connexion.


Ce n'est pas parce que l'URL standard comme /wp-admin ou /wp-login.* n'est pas accessible que ces attaques cesseront.

Conclusion

J'espère avoir pu t'expliquer les différents types d'attaques par force brute et te donner des conseils pour protéger ton WordPress contre ces attaques à l'avenir. Si tu as d'autres questions à ce sujet, nous nous réjouissons de ton commentaire !

As-tu aimé cet article ?

Tes évaluations nous permettent d'améliorer encore plus notre contenu.

Laisse un commentaire

Ton adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués d'un *.