Attaques et force brute

Comment limiter les tentatives de connexion sur WordPress : seuils, durées et pièges

Limiter les tentatives de connexion sur WordPress

WordPress n'impose aucune limite au nombre d'essais de mot de passe : un robot peut en tenter autant que le serveur en accepte. Limiter les tentatives est donc l'une des premières protections ajoutées à un site. Mal réglée, elle bloque pourtant vos propres utilisateurs, ou ne bloque rien du tout derrière un CDN. Voici les réglages qui comptent et les pièges les plus fréquents.

Le principe et ses trois réglages

L'aide-mémoire Authentification de l'OWASP décrit trois paramètres :

  • le seuil : le nombre d'échecs tolérés ;
  • la fenêtre d'observation : la période pendant laquelle ces échecs sont comptés ;
  • la durée de blocage : combien de temps la connexion reste refusée une fois le seuil atteint.

Certaines applications utilisent un blocage exponentiel : une durée très courte au départ, qui double à chaque nouveau blocage. Cela gêne peu un humain qui se trompe deux fois, mais ralentit fortement un robot.

Schéma d'une fenêtre de comptage : cinq échecs en orange, le sixième déclenche un blocage de l'adresse
Seuil, fenêtre et durée : les trois réglages de toute limitation.

Quels chiffres choisir

Il n'existe pas de valeur officielle universelle. Les repères disponibles :

  • le NIST (SP 800-63B-4) impose aux vérificateurs de limiter les échecs consécutifs sur un même authentifiant à 100 au maximum, en précisant que c'est une borne haute et que des limites plus basses sont possibles ;
  • l'OWASP insiste sur l'équilibre entre protection et risque de blocage des utilisateurs légitimes ;
  • à titre de comparaison, WP Masquerade Pro autorise par défaut 8 échecs, puis bloque l'adresse 15 minutes.
Type de siteSeuilDurée de blocageRemarque
Site vitrine, un ou deux administrateurs5 à 8 échecs en 15 minutes15 à 60 minutesPeu de faux positifs possibles
Site de rédaction multi-auteurs8 à 10 échecs15 à 30 minutesPrévoir le déblocage par un administrateur
Boutique ou espace membres10 à 20 échecs5 à 15 minutes, exponentielleLes clients oublient souvent leur mot de passe
Tout siteDouble authentification pour les administrateursSans objetRend le seuil moins critique
Point de départ raisonnable selon le type de site (à ajuster à vos journaux)

Ces valeurs sont un point de départ éditorial, pas une norme : observez combien d'échecs légitimes apparaissent dans vos journaux avant de serrer.

Compter par adresse IP ou par compte ?

C'est le choix le plus important, et chacun a un défaut.

MéthodeCe qu'elle arrêteSon point faible
Par adresse IPUn robot qui insiste depuis une même adresseUn botnet change d'adresse ; une adresse partagée bloque des innocents
Par compte (identifiant)Les essais répartis sur des milliers d'adresses contre un même compteUn inconnu peut bloquer volontairement un utilisateur légitime
Les deux, avec double authentificationLa grande majorité des casRéglages un peu plus complexes
Les deux façons de compter

L'OWASP recommande d'associer le compteur au compte pour contrer les attaques venant de nombreuses adresses, tout en mettant en garde contre le risque inverse : permettre à un attaquant de bloquer d'autres utilisateurs. Elle suggère par exemple de laisser fonctionner le lien « Mot de passe oublié » même lorsqu'un compte est bloqué.

La plupart des extensions WordPress comptent par adresse IP. C'est efficace contre les robots insistants, mais la documentation WordPress le rappelle : ces attaques viennent souvent de botnets, donc d'adresses très nombreuses. Le rapport 2024 de Wordfence évoque près de 136 millions d'adresses distinctes à l'origine d'attaques sur les mots de passe dans l'année. La plupart des extensions de sécurité généralistes intègrent aussi une limitation des connexions : notre comparatif des meilleurs plugins de sécurité WordPress indique lesquelles.

Le piège des proxys et des CDN

Quand un CDN comme Cloudflare est placé devant votre site, ce n'est plus le visiteur qui contacte votre serveur, c'est le CDN. Pour PHP, l'adresse de connexion (REMOTE_ADDR) est alors celle du CDN.

Schéma : un visiteur et un robot passent par un CDN ; sans restauration de l'adresse réelle, le serveur voit l'adresse du CDN pour tous et un blocage touche tout le monde
Derrière un proxy, une limitation mal configurée bloque tout le monde ou personne.

Deux erreurs opposées sont possibles :

  • compter l'adresse du CDN : tous les visiteurs semblent venir de quelques adresses. Les échecs d'un robot bloquent alors vos utilisateurs, ou le blocage est si large qu'il devient inutilisable ;
  • croire l'en-tête X-Forwarded-For sans vérification : cet en-tête est envoyé par le client et peut être falsifié. Un robot qui envoie une adresse différente à chaque requête échappe à tout comptage.

La bonne méthode est de restaurer l'adresse réelle au niveau du serveur. Cloudflare documente cette configuration : module mod_remoteip pour Apache avec l'en-tête CF-Connecting-IP, ou module realip pour Nginx, en déclarant uniquement les plages d'adresses de Cloudflare comme proxys de confiance. Cloudflare précise que ces plages évoluent et doivent être tenues à jour. Une fois cela fait, REMOTE_ADDR contient l'adresse du visiteur et toutes les extensions en profitent.

Les adresses partagées

Même sans CDN, une adresse IP ne correspond pas toujours à une personne.

  • Réseaux d'entreprise, écoles, wifi publics : des dizaines ou des centaines de personnes sortent par la même adresse.
  • Opérateurs mobiles : beaucoup utilisent un NAT à grande échelle (CGN), pour lequel l'IETF a réservé un bloc d'adresses dédié (RFC 6598). Un même client peut changer d'adresse et partager la sienne avec d'autres abonnés.
  • IPv6 : un abonné reçoit généralement un bloc entier d'adresses (la RFC 6177 recommande d'attribuer à chaque site au moins un /64, et souvent bien plus). Compter adresse par adresse en IPv6 laisse un robot en essayer des milliers sans jamais atteindre le seuil ; il est plus pertinent de compter par préfixe.

Conséquences pratiques : gardez une liste d'adresses de confiance pour vos bureaux, ne bloquez pas définitivement une adresse, et prévoyez un moyen simple pour un administrateur de se débloquer.

Faux positifs : à quoi s'attendre

  • Un utilisateur qui a changé son mot de passe et dont le navigateur ou l'application mobile renvoie l'ancien en boucle.
  • Une application ou un service qui se connecte à XML-RPC ou à l'API REST avec un mot de passe périmé.
  • Un client de boutique qui essaie tous ses mots de passe habituels.
  • Un administrateur derrière la même adresse qu'un poste infecté du réseau.

Pour chacun, la double authentification et les mots de passe d'application réduisent le besoin d'un seuil très bas.

Avec WP Masquerade

WP Masquerade Pro intègre la limitation des tentatives de connexion par adresse réseau : 8 échecs autorisés par défaut, réglable de 3 à 30, avec une durée de blocage de 15 minutes par défaut, réglable de 1 à 60. Une connexion réussie remet le compteur à zéro, et l'onglet de dépannage permet de débloquer votre propre adresse. L'extension compte l'adresse de connexion du serveur et ne fait jamais confiance à un en-tête X-Forwarded-For envoyé par le client : derrière un CDN, la restauration de l'adresse réelle doit donc être faite au niveau du serveur, comme décrit plus haut. Les échecs de double authentification comptent aussi dans cette limitation. Son guide le précise : ce n'est ni une limitation de trafic réseau ni une défense suffisante seule contre une attaque distribuée.

En anglais : mettre en place la limitation des tentatives de connexion sur WordPress avec une extension.

À retenir

  • WordPress ne limite pas nativement les essais de connexion.
  • Réglez trois paramètres : seuil, fenêtre d'observation, durée de blocage ; préférez des blocages courts ou exponentiels.
  • Derrière Cloudflare ou un autre CDN, restaurez l'adresse réelle au niveau du serveur et ne croyez jamais X-Forwarded-For sans vérification.
  • Une adresse IP peut être partagée par des centaines de personnes ; en IPv6, comptez par préfixe.
  • La limitation ralentit les robots ; la double authentification protège le compte.

Sources

Autres sources consultées : documentation officielle et base Wordfence.

La sécurité WordPress, sans le bruit

Un e-mail quand ça compte : nouvelles attaques observées, mises à jour de l’extension et guides pratiques. Pas de spam, désinscription en un clic.

Commencez gratuitement, passez à Pro quand vous êtes prêt

La version gratuite masque déjà WordPress et déplace la page de connexion. Pro ajoute alias, double authentification et surveillance.