Comment limiter les tentatives de connexion sur WordPress ?
Par Eureka Studio · Mis à jour le
En bref
WordPress laisse n’importe qui deviner des mots de passe indéfiniment. Pour limiter les tentatives de connexion, utilisez une extension qui compte les connexions échouées par IP sur une fenêtre de temps et bloque cette IP pendant un moment, par exemple 8 échecs en 5 minutes entraînent une attente de 15 minutes. Assurez-vous que les échecs de 2FA et de mots de passe d’application comptent aussi, et ajoutez votre propre IP à la liste d’autorisation.
Étapes
1Étape 1
Voyez à quoi ressemblent des tentatives illimitées
Sans limite, WordPress répond à chaque mauvais mot de passe par la même erreur, aussi souvent qu’on le lui demande, et le message par défaut confirme même que l’identifiant existe.

2Étape 2
Activez les Limites de connexion et fixez les règles
Dans WordPress, ouvrez Hushfort → Limites et restrictions et cochez Activer les limites de connexion. Par défaut : 8 tentatives échouées en 5 minutes, puis un blocage de 15 minutes ; après 4 blocages en 24 heures, le blocage dure 1 440 minutes. Cliquez sur Enregistrer les modifications.

3Étape 3
Autorisez votre propre IP et vérifiez la source de l’IP
Plus bas, réglez Source de l’IP. « Automatique (en-têtes de proxy vérifiés uniquement) » convient à la plupart des sites, y compris ceux derrière Cloudflare. Ajoutez ensuite l’IP de votre bureau ou de votre domicile dans IP autorisées pour ne jamais vous bloquer vous-même, et enregistrez.

4Étape 4
Recevez un e-mail quand une IP est bloquée
Activez E-mail d’alerte et indiquez une ou plusieurs adresses, séparées par des virgules. Cette option nécessite un SMTP fonctionnel sur le site ; sans lui, Hushfort laisse l’option désactivée et vous explique pourquoi.

5Étape 5
Regardez la limite fonctionner
Après le nombre d’échecs autorisé, l’IP est bloquée au lieu d’obtenir un nouvel essai. L’Historique liste chaque blocage actif avec l’identifiant tenté, le nombre de tentatives et l’heure de fin du blocage, avec un bouton Débloquer.
Pourquoi c’est important
Une attaque par force brute n’est qu’une affaire de patience : essayer un mot de passe, se tromper, essayer le suivant. WordPress ne s’en formalise pas. Il répondra à mille mauvaises tentatives venant de la même adresse aussi poliment qu’à la première. Si un compte a un mot de passe faible ou réutilisé, ce n’est qu’une question de temps.
Une limite de connexion change l’équation. Si une IP ne peut faire qu’une poignée de tentatives avant de devoir attendre quinze minutes, deviner un mot de passe correct prend des années au lieu de quelques heures. Cela évite aussi à votre serveur d’afficher la page de connexion encore et encore pour un robot.
Ce qu’elle ne couvre pas à elle seule. Les attaquants qui disposent de milliers d’adresses IP peuvent envoyer quelques tentatives depuis chacune. C’est pourquoi une limite de connexion fonctionne mieux associée à la double authentification, qui rend un mot de passe deviné inutile sans le code.
Erreurs courantes
- Ne compter que le formulaire de connexion. Les mots de passe peuvent aussi être testés via
xmlrpc.php, via les mots de passe d’application de l’API REST, et à l’étape du code de double authentification. Si ces tentatives ne comptent pas dans la limite, les attaquants les utilisent tout simplement. Fermez aussi la connexion par XML-RPC ; voir comment désactiver XML-RPC sans risque. - Lire la mauvaise IP derrière un proxy. Si votre site est derrière Cloudflare et que l’extension
lit l’adresse du proxy, un seul robot peut bloquer tous les visiteurs. Si elle fait au contraire aveuglément confiance à
l’en-tête
X-Forwarded-For, un robot peut inventer une nouvelle IP à chaque requête et n’être jamais compté. La règle sûre consiste à ne faire confiance aux en-têtes de proxy que lorsque la requête provient réellement du proxy. - Des blocages trop longs. Un blocage de 24 heures pour trois fautes de frappe pénalise votre propre équipe. Gardez un premier blocage court et allongez les blocages répétés.
- Pas de liste d’autorisation. Ajoutez votre propre IP fixe pour qu’un mot de passe oublié ne vous bloque jamais.
Sans extension
WordPress dispose d’un hook, wp_login_failed, qui se déclenche après chaque connexion échouée. Vous pouvez compter
les échecs avec un transient et refuser les connexions lorsque le compteur est trop élevé. Une version minimale pour
une extension indispensable (must-use) (wp-content/mu-plugins/login-limit.php) :
<?php
add_action( 'wp_login_failed', function () {
$key = 'll_' . md5( $_SERVER['REMOTE_ADDR'] );
$n = (int) get_transient( $key );
set_transient( $key, $n + 1, 15 * MINUTE_IN_SECONDS );
} );
add_filter( 'authenticate', function ( $user ) {
$key = 'll_' . md5( $_SERVER['REMOTE_ADDR'] );
if ( (int) get_transient( $key ) >= 8 ) {
return new WP_Error( 'too_many', 'Too many failed attempts. Try again later.' );
}
return $user;
}, 30 );
Cela fonctionne, mais soyons honnêtes sur ce qui manque : le code ne lit que REMOTE_ADDR, donc derrière un proxy
il compte le proxy ; il ne compte pas les tentatives XML-RPC multicall comme des tentatives séparées ; il n’a
ni liste d’autorisation, ni e-mail d’alerte, ni journal. Chacun de ces éléments représente du code supplémentaire à écrire et à maintenir.
Certains hébergeurs proposent aussi des outils au niveau du serveur, comme fail2ban qui surveille le journal d’accès. C’est solide si votre hébergeur s’en charge pour vous ; sur un hébergement mutualisé, vous ne pouvez généralement pas le mettre en place.
En cas de problème
- Vous vous êtes bloqué vous-même. Attendez la fin du blocage, essayez depuis un autre réseau comme les données mobiles, ou demandez à un autre administrateur d’ajouter votre IP à la liste d’autorisation.
- Tout le monde est bloqué en même temps. Votre site est probablement derrière un proxy et l’extension lit l’IP du proxy. Modifiez le réglage Source de l’IP.
- Aucun blocage ne se produit jamais. Vérifiez si la source de l’IP fait confiance à un en-tête que les robots peuvent falsifier. Si chaque tentative affiche une « IP » différente, c’est la cause.
Pour tous les moyens de retrouver l’accès, consultez Bloqué après avoir changé l’URL de connexion.
Avec Hushfort
Les Limites de connexion font partie de Hushfort Pro, le module complémentaire qui s’installe par-dessus Hushfort Security, l’extension de sécurité WordPress gratuite.
La couche Limites de connexion de Hushfort compte les connexions échouées par IP (ou par IP et identifiant) sur une fenêtre de temps de votre choix, et bloque l’IP pendant une durée de votre choix. Des blocages répétés en 24 heures peuvent déclencher un blocage prolongé.
- Les codes de double authentification erronés et les connexions échouées par mot de passe d’application comptent aussi : il n’existe donc pas de porte dérobée pour deviner.
- Les en-têtes de proxy ne sont pris en compte que lorsque la requête provient réellement de Cloudflare ou d’un réseau privé.
- Les e-mails d’alerte partent vers autant d’adresses que vous en indiquez.
- Chaque tentative échouée ou bloquée apparaît dans un Historique filtrable.
- La liste d’autorisation est partagée avec toutes les autres couches de Hushfort : vous ne vous ajoutez qu’une fois.
Désactiver Hushfort lève tous les blocages en cours.
Questions fréquentes
Combien de tentatives de connexion faut-il autoriser ?
WordPress limite-t-il les tentatives de connexion par défaut ?
Une limite de connexion peut-elle me bloquer l’accès à mon propre site ?
Limiter les tentatives de connexion suffit-il à stopper la force brute ?
Pourquoi les blocages touchent-ils les mauvaises personnes derrière Cloudflare ?
Guides associés
Comment ajouter l’authentification à deux facteurs (2FA) à WordPress ?
Activez l’authentification à deux facteurs sur WordPress avec une application d’authentification : configuration, codes de récupération et téléphone perdu.
Voir les étapesQu’est-ce que xmlrpc.php, et comment désactiver XML-RPC sur WordPress ?
Désactivez XML-RPC sur WordPress : xmlrpc.php est une seconde porte de connexion que masquer la connexion ne ferme pas. Gardez les pingbacks, puis testez.
Voir les étapesComment changer l’URL de connexion de WordPress ?
Changez l’URL de connexion WordPress et masquez wp-admin en cinq étapes sûres. Testez avant de vous déconnecter et sachez retrouver l’accès en cas d’oubli.
Voir les étapes
