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
Les cookies que nous utilisons sont indispensables au bon fonctionnement de ce site. Il n'y a aucun pistage publicitaire et les données statistiques recueillies sont anonymisées.
J'ai compris