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

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 4 minutes à lire et comporte 760 mots.

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

Nous avons été noti­fié que votre page tsw.ovh/xmlrpc.php a été vic­time d’un très grand nom­bre d’ac­cès provenant de nom­breux pays. Après véri­fi­ca­tion, il s’ag­it d’une attaque par Brute­Force dis­tribué afin de trou­ver votre mot de passe de votre tableau de bord de votre CMS.

Bon, je ne me suis pas inquiété out­re mesure, mon mot de passe… avant qu’un hack­er le casse, de l’eau aura coulé sous les ponts. Sauf à avoir une chance de cocu 😉 mais ça, c’est son prob­lème, pas le mien 😀 Pour info, je crée mes mots de passe faciles à mémoris­er, mais pas à trou­ver, du genre C10fi6l@KC100&C ou 7.1Po6Bl@TrouV. Vous pou­vez 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é­motech­niques) :

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

Bon, plaisan­terie mise à part, je n’aime quand même pas l’idée qu’un som­bre idiot vienne chercher mon mot de passe pour défac­er 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 stricte­ment rien à décou­vrir 😉

Alors pour éviter tout prob­lème et pour décourager toute nou­velle ten­ta­tive, j’ai cher­ché com­ment me pro­téger des attaques menées via XML-RPC.

Deux solu­tions :

  • solu­tion rad­i­cale, je dés­ac­ti­vais pure­ment et sim­ple­ment XML-RPC, mais dans ce cas-là, je ne pou­vais plus me servir de cer­taines fonc­tion­nal­ités de Jet­pack et d’autres exten­sions pour­tant intéres­santes.
  • ou alors, je dés­ac­ti­vais unique­ment les fonc­tion­nal­ités XML-RPC util­isées par les mécréants qui en veu­lent à mon mot de passe.

Je ne vous fais pas un dessin, vous vous doutez que j’ai choisi la deux­ième solu­tion.

Je vous fais grâce de mes recherch­es, je vous livre le résul­tat. Quelques lignes de code à insér­er via Code Snip­pets :

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);

À activ­er sur tout le site, admin­is­tra­tion incluse. On n’est jamais trop pru­dent. Ce n’est pas le Pérou, mais ça évit­era les attaques de force brute, les DoS et DDoS via XML-RPC. Tout en per­me­t­tant à Jet­pack et autres exten­sions de se servir des fonc­tion­nal­ités qui n’ont pas été blo­quées.

Pour ceux qui ne veu­lent pas met­tre les mains dans le code, j’ai prévu une petite exten­sion à télécharg­er et à installer / activ­er. L’ex­ten­sion a été soumise à Word­Press et a été approu­vée, vous pou­vez donc la récupér­er directe­ment depuis votre inter­face d’ad­min­is­tra­tion ou via le réper­toire des exten­sions sur wordpress.org

Vous pou­vez télécharg­er puis télé­vers­er et activ­er l’ex­ten­sion, ou en extraire le fichi­er prin­ci­pal stop-xml-rpc-attacks.php et le télé­vers­er dans le réper­toire /wp-content/mu-plugins/ d’où il s’exé­cutera automa­tique­ment sans que vous n’ayez besoin de l’ac­tiv­er.

Bon, je vous préviens quand même : vu qu’on par­le de sécu­rité, cette exten­sion ne fonc­tion­nera pas avec Word­Press 3.5 et du PHP 5.3 — la sécu­rité, c’est aus­si une ver­sion récente de PHP (8.0 min­i­mum, la ver­sion 7 n’est plus main­tenue) et la toute dernière ver­sion de Word­Press.

En plus de cette sécuri­sa­tion, il est indis­pens­able de pass­er au HTTPS (pour les retar­dataires), de met­tre à jour régulière­ment Word­Press, les thèmes et les exten­sions, et d’opter pour une exten­sion telle que WP Cer­ber, Word­fence, Sucuri ou Secu­Press.

Jet­pack pro­pose lui aus­si de blo­quer les attaques de type DoS / DDoS / force brute, mais ce n’est pas son point fort, du moins pas dans sa ver­sion gra­tu­ite. Je vous con­seille vive­ment d’in­staller une exten­sion dédiée à la sécu­rité, et bien sûr d’ef­fectuer des sauve­g­ardes régulières de votre site.

Voilà, tout est dit. Téléchargez l’ex­ten­sion, ou copiez / collez le bout de code dans Code Snip­pets, et n’hésitez pas à partager l’ar­ti­cle pour qu’un max­i­mum de sites puis­sent con­tr­er les attaques sans pour autant se priv­er des avan­tages de XML-RPC.

Et si vous avez une ques­tion, ou si vous voulez partager votre pro­pre expéri­ence, direc­tion les com­men­taires !

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

  1. Sym­pa­thique, la seule chose que je n’ai pas com­prise, c’est ce que le bout de code va faire exacte­ment pour empêch­er le hackeur d’u­tilis­er cette méth­ode.

    1. Il va tout sim­ple­ment dés­ac­tiv­er l’ac­cès aux méth­odes util­isées par les hack­ers pour accéder aux don­nées sen­si­bles.

  2. Bon­jour pas­cal;

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

    1. Les ping­backs sont dés­ac­tivés si vous utilisez l’ex­ten­sion.
      Si vous souhaitez garder cette fonc­tion­nal­ité (dis­cutable) vous devez com­menter ou sup­primer les lignes 5 et 6 :

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

      Mais les ping­backs intro­duisent une vul­néra­bil­ité (rel­a­tive) sur votre blog. À vous de voir…

  3. Bon­jour Pas­cal,

    Mer­ci beau­coup pour cette appli­ca­tion très utile. Je me suis fait pirater récem­ment via cette vul­néra­bil­ité XML-RPC de Word­Press.
    Le seul accès qui me reste est mon FTP. J’ai instal­lé votre mu-plu­g­in dans le réper­toire mu-plu­g­ins, mais je ne vois pas com­ment récupér­er mon accès à Word­Press. Auriez-vous une idée s’Il vous plaît ?

    1. Suiv­ez le lien : https://tsw.ovh/blogging/conseils/securite-attaques-xml-rpc/tsw.ovh/blogging/code/centralisez-code-snippets/ tout est expliqué, de l’in­stal­la­tion de Code Snip­pets à son util­i­sa­tion.
      Mais si nous n’avez pas d’autre code per­son­nal­isé à utilis­er, je vous recom­mande d’in­staller mon exten­sion, elle est ultra légère, testée et véri­fiée à chaque nou­velle ver­sion de Word­Press, et ne néces­site aucune con­fig­u­ra­tion.

Les commentaires sont fermés.

Retour en haut
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept