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

Cet article prend 3 minutes à lire et comporte 678 mots.

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é.

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émo­tech­niques) :

Test de mon 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écou­vrir 😇

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 exten­sion.
  • 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 solu­tion.

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’ac­ti­ver.

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 commen­taires !

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 .

6 réflexions sur “Sécurité : contrez les attaques en sécurisant XML-RPC”

  1. 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 ?

  2. 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.

    1. Les ping­backs sont désac­ti­vés si vous utili­sez l’ex­ten­sion.
      Si vous souhai­tez garder cette fonc­tion­na­lité (discu­table) vous devez commen­ter ou suppri­mer les lignes 5 et 6 :

      unset($methods['pingback.extensions.getPingbacks']);
      unset($methods['pingback.ping']);

      Mais les ping­backs intro­duisent une vulné­ra­bi­lité (rela­tive) sur votre blog. À vous de voir…

Répondre à Charlie Laubin Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Abonnez-vous à la
newsletter

Pour être informé à chaque fois que je publie un nouvel article.

Merci !

Quelque chose c'est mal passé…

Retour haut de page

Rapport de faute d’orthographe

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