Pour éviter les attaques de force brute, les dénis de service et dénis de service distribués, il est indispensable de sécuriser au maximum votre site. Et d'être paré à toute éventualité.
Cet article a été mis à jour le 10 janvier 2025 ; il prend 4 minutes à lire et comporte 760 mots.
J’ai reçu un email de mon hébergeur, me disant que je subissais une attaque de type force brute en bonne et due forme :
Nous avons été notifié que votre page tsw.ovh/xmlrpc.php a été victime d’un très grand nombre d’accès provenant de nombreux pays. Après vérification, il s’agit d’une attaque par BruteForce distribué afin de trouver votre mot de passe de votre tableau de bord de votre CMS.
Bon, je ne me suis pas inquiété outre mesure, mon mot de passe… avant qu’un hacker le casse, de l’eau aura coulé sous les ponts. Sauf à avoir une chance de cocu 😉 mais ça, c’est son problème, pas le mien 😀 Pour info, je crée mes mots de passe faciles à mémoriser, mais pas à trouver, du genre C10fi6l@KC100&C
ou 7.1Po6Bl@TrouV
. Vous pouvez le tester sur Under News – voici le résultat du test de mon mot de passe actuel (je le change au gré de mes découvertes mnémotechniques) :
Bon, plaisanterie mise à part, je n’aime quand même pas l’idée qu’un sombre idiot vienne chercher mon mot de passe pour défacer mon site ou pour y découvrir mes plus inavouables turpitudes – il serait bien mal payé de sa peine, il n’y a strictement rien à découvrir 😉
Alors pour éviter tout problème et pour décourager toute nouvelle tentative, j’ai cherché comment me protéger des attaques menées via XML-RPC.
Deux solutions :
- solution radicale, je désactivais purement et simplement XML-RPC, mais dans ce cas-là, je ne pouvais plus me servir de certaines fonctionnalités de Jetpack et d’autres extensions pourtant intéressantes.
- ou alors, je désactivais uniquement les fonctionnalités XML-RPC utilisées par les mécréants qui en veulent à mon mot de passe.
Je ne vous fais pas un dessin, vous vous doutez que j’ai choisi la deuxième solution.
Je vous fais grâce de mes recherches, je vous livre le résultat. Quelques lignes de code à insérer via Code Snippets :
add_filter('xmlrpc_methods', function ($methods) { unset($methods['system.multicall']); unset($methods['system.listMethods']); unset($methods['system.getCapabilities']); unset($methods['pingback.extensions.getPingbacks']); unset($methods['pingback.ping']); return $methods; }); add_action('wp', function () { header_remove('X-Pingback'); }, 9999);
À activer sur tout le site, administration incluse. On n’est jamais trop prudent. Ce n’est pas le Pérou, mais ça évitera les attaques de force brute, les DoS et DDoS via XML-RPC. Tout en permettant à Jetpack et autres extensions de se servir des fonctionnalités qui n’ont pas été bloquées.
Pour ceux qui ne veulent pas mettre les mains dans le code, j’ai prévu une petite extension à télécharger et à installer / activer. L’extension a été soumise à WordPress et a été approuvée, vous pouvez donc la récupérer directement depuis votre interface d’administration ou via le répertoire des extensions sur wordpress.org
Vous pouvez télécharger puis téléverser et activer l’extension, ou en extraire le fichier principal stop-xml-rpc-attacks.php
et le téléverser dans le répertoire /wp-content/mu-plugins/
d’où il s’exécutera automatiquement sans que vous n’ayez besoin de l’activer.
Bon, je vous préviens quand même : vu qu’on parle de sécurité, cette extension ne fonctionnera pas avec WordPress 3.5 et du PHP 5.3 – la sécurité, c’est aussi une version récente de PHP (8.0 minimum, la version 7 n’est plus maintenue) et la toute dernière version de WordPress.
En plus de cette sécurisation, il est indispensable de passer au HTTPS (pour les retardataires), de mettre à jour régulièrement WordPress, les thèmes et les extensions, et d’opter pour une extension telle que WP Cerber, Wordfence, Sucuri ou SecuPress.
Jetpack propose lui aussi de bloquer les attaques de type DoS / DDoS / force brute, mais ce n’est pas son point fort, du moins pas dans sa version gratuite. Je vous conseille vivement d’installer une extension dédiée à la sécurité, et bien sûr d’effectuer des sauvegardes régulières de votre site.
Voilà, tout est dit. Téléchargez l’extension, ou copiez / collez le bout de code dans Code Snippets, et n’hésitez pas à partager l’article pour qu’un maximum de sites puissent contrer les attaques sans pour autant se priver des avantages de XML-RPC.
Et si vous avez une question, ou si vous voulez partager votre propre expérience, direction les commentaires !
Suivez le lien : https://tsw.ovh/blogging/conseils/securite-attaques-xml-rpc/tsw.ovh/blogging/code/centralisez-code-snippets/ tout est expliqué, de l’installation de Code Snippets à son utilisation.
Mais si nous n’avez pas d’autre code personnalisé à utiliser, je vous recommande d’installer mon extension, elle est ultra légère, testée et vérifiée à chaque nouvelle version de WordPress, et ne nécessite aucune configuration.
Bjr. Le bout de code, on doit l’insérer ou ?
Bonsoir, vous avez un ensemble de solutions proposées ici : https://wpformation.com/bloque-wordpress/. Si aucune d’entre elles ne vous permet de récupérer votre accès, n’hésitez pas à revenir vers moi.
Bonjour Pascal,
Merci beaucoup pour cette application très utile. Je me suis fait pirater récemment via cette vulnérabilité XML-RPC de WordPress.
Le seul accès qui me reste est mon FTP. J’ai installé votre mu-plugin dans le répertoire mu-plugins, mais je ne vois pas comment récupérer mon accès à WordPress. Auriez-vous une idée s’Il vous plaît ?
Les pingbacks sont désactivés si vous utilisez l’extension.
Si vous souhaitez garder cette fonctionnalité (discutable) vous devez commenter ou supprimer les lignes 5 et 6 :
Mais les pingbacks introduisent une vulnérabilité (relative) sur votre blog. À vous de voir…
Bonjour pascal ;
Est-ce qu’en activant ce code dans mon site, les pings automatiques XML-RPC vers d’autres sites pourront fonctionner merci.
Il va tout simplement désactiver l’accès aux méthodes utilisées par les hackers pour accéder aux données sensibles.
Sympathique, la seule chose que je n’ai pas comprise, c’est ce que le bout de code va faire exactement pour empêcher le hackeur d’utiliser cette méthode.