Sécurité : contrez les attaques en sécurisant XML-RPC

Dernière mise à jour le 3 mars 2021

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 prend 3 minutes à lire et comporte 661 mots.

J’ai reçu un email de mon héber­geur, me disant que je subis­sais une attaque de type force brute en bonne et due forme :

Nous avons été noti­fié que votre page pascalcescato.gdn/xmlrpc.php a été victime d’un très grand nombre d’ac­cès prove­nant de nombreux pays. Après véri­fi­ca­tion, il s’agit d’une attaque par BruteForce distri­bué afin de trou­ver 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émo­ri­ser, mais pas à trou­ver, du genre C10fi6l@KC100&C ou 7.1Po6Bl@TrouV. Vous pouvez le tester sur Under News – voici le résul­tat du test de mon mot de passe actuel (je le change au gré de mes décou­vertes mnémotechniques) :

sécurité - test du mot de passe
Test de mon mot de passe

Bon, plai­san­te­rie mise à part, je n’aime quand même pas l’idée qu’un sombre idiot vienne cher­cher mon mot de passe pour défa­cer mon site ou pour y décou­vrir mes plus inavouables turpi­tudes – il serait bien mal payé de sa peine, il n’y a stric­te­ment rien à découvrir 😉

Alors pour éviter tout problème et pour décou­ra­ger toute nouvelle tenta­tive, j’ai cher­ché comment me proté­ger des attaques menées via XML-RPC.

Deux solu­tions :

  • solu­tion radi­cale, je désac­ti­vais pure­ment et simple­ment XML-RPC, mais dans ce cas-là, je ne pouvais plus me servir de certaines fonc­tion­na­li­tés de Jetpack. Et person­nel­le­ment, j’aime bien cette extension.
  • ou alors, je désac­ti­vais unique­ment les fonc­tion­na­li­tés XML-RPC utili­sé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ésul­tat. 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);

À acti­ver sur tout le site, admi­nis­tra­tion 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 permet­tant à Jetpack et autres exten­sions de se servir des fonc­tion­na­li­té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 exten­sion à télé­char­ger et à instal­ler / acti­ver. L’extension a été soumise à WordPress et a été approu­vée, vous pouvez donc la récu­pé­rer direc­te­ment depuis votre inter­face d’ad­mi­nis­tra­tion ou via le réper­toire des exten­sions sur wordpress.org

Vous pouvez télé­char­ger puis télé­ver­ser et acti­ver l’ex­ten­sion, ou en extraire le fichier prin­ci­pal stop-xml-rpc-attacks.php et le télé­ver­ser dans le réper­toire /wp-content/mu-plugins/ d’où il s’exé­cu­tera auto­ma­ti­que­ment sans que vous n’ayez besoin de l’activer.

Bon, je vous préviens quand même : vu qu’on parle de sécu­rité, cette exten­sion ne fonc­tion­nera pas avec WordPress 3.5 et du PHP 5.3 – la sécu­rité, c’est aussi une version récente de PHP (7.1 mini­mum) et la toute dernière version de WordPress.

En plus de cette sécu­ri­sa­tion, il est indis­pen­sable de passer au HTTPS (pour les retar­da­taires), de mettre à jour régu­liè­re­ment WordPress, les thèmes et les exten­sions, et d’op­ter pour une exten­sion 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 vive­ment d’ins­tal­ler une exten­sion dédiée à la sécu­rité, et bien sûr d’ef­fec­tuer des sauve­gardes régu­lières de votre site.

Voilà, tout est dit. Téléchargez l’ex­ten­sion, ou copiez / collez le bout de code dans Code Snippets, et n’hé­si­tez pas à parta­ger l’ar­ticle pour qu’un maxi­mum de sites puissent contrer les attaques sans pour autant se priver des avan­tages de XML-RPC.

Et si vous avez une ques­tion, ou si vous voulez parta­ger votre propre expé­rience, direc­tion les commentaires !

Si vous avez trouvé une faute d’orthographe, veuillez nous en infor­mer en sélec­tion­nant le texte en ques­tion et en appuyant sur Ctrl + Entrée .

S’abonner
Notifier de
guest
6 Commentaires
Inline Feedbacks
View all comments
Alters
Alters
13 octobre 2019 21 h 39 min

Bonjour Pascal,

Merci beau­coup pour cette appli­ca­tion très utile. Je me suis fait pira­ter récem­ment via cette vulné­ra­bi­lité XML-RPC de WordPress.
Le seul accès qui me reste est mon FTP. J’ai installé votre mu-plugin dans le réper­toire mu-plugins, mais je ne vois pas comment récu­pé­rer mon accès à WordPress. Auriez-vous une idée s’Il vous plaît ?

Rayan
Rayan
21 juin 2019 10 h 12 min

Bonjour pascal ;

Est-ce qu’en acti­vant ce code dans mon site, les pings auto­ma­tiques XML-RPC vers d’autres sites pour­ront fonc­tion­ner merci.

Charlie Laubin
26 avril 2019 13 h 13 min

Sympathique, la seule chose que je n’ai pas comprise, c’est ce que le bout de code va faire exac­te­ment pour empê­cher le hackeur d’uti­li­ser cette méthode.

Défiler vers le haut

Abonnez-vous à la
newsletter

Pour être informé à chaque fois qu'un nouvel article est publié.

Merci !

Quelque chose s'est mal passé…

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :

Nous utilisons des cookies pour le fonctionnement de ce site. En continuant votre navigation vous acceptez leur utilisation.
J'ai compris
Privacy Policy