Désactiver XML-RPC sur un blog WordPress

Désactiver XML-RPC sous WordPress pour se protéger des attaques DDoS

publié le 24/04/2023

Le protocole XML-RPC, ou XML Remote Procedure Call, permet l’accès distant de webservices à un site WordPress depuis sa version 2.6.

Cela peut permettre :

  • de se connecter à un site WP avec un SmartPhone
  • d’activer les TrackBacks et Pingbacks
  • d’utiliser Jetpack de manière très poussée
  • d’utiliser le logiciel Windows Live Writer
  • de lier des services tiers (Buffer, IFTTT, …)
  • etc…

Une fonctionnalité bien pratique mais seulement voilà, cette API est vieillissante et expose votre site à de nombreuses vulnérabilités (Attaques par force brute – Attaque HTTP Flood, attaques de déni de service – DDoS…)
En permettant ainsi d’étendre les fonctionnalités de WordPress, vous augmentez considérablement les possibilités d’être hacker !

Comment détecter un site WordPress piraté et désactiver XML-RPC ?

Pour en avoir déjà fait l’expérience, je peux vous dire que si vous êtes l’objet d’une attaque, vous allez vite vous en rendre compte… Une attaque via XML-RPC va rendre votre site très très lent voir totalement inaccessible car il ne pourra traiter les trop nombreuses requêtes qui lui sont envoyées.
Pour en être sur, il vous suffira de consulter le fichier access_log chez votre hébergeur. Si vous voyez un nombre très élevé de connexions, votre site est attaqué via le protocole XML-RPC.
Désactiver XML-RPC sur WordPress

Comment se protéger des attaques par XML-RPC ?

Pour les petits malins qui auraient dans l’idée de simplement supprimer le fichier xmlrpc.php de WordPress, sachez que ce n’est pas une bonne idée !
Ce fichier fait partie intégrante du code source WordPress. Cela peut provoquer des erreurs, et dans tous les cas, il réapparaîtra lors de la prochaine mise à jour.

Voici 4 façons de bloquer ce protocole en complément de cet article :

Désactiver xmlrpc via le fichier functions.php

add_filter(‘xmlrpc_enabled’, ‘__return_false’);
// Désactive x-pingback HTTP header
add_filter(‘wp_headers’, function($headers) {
unset($headers[‘X-Pingback’]);
return $headers;
});
// Désactive les pingbacks
add_filter( ‘xmlrpc_methods’, function( $methods ) {
unset( $methods[‘pingback.ping’] );
return $methods;
} );
remove_action( ‘wp_head’, ‘rsd_link’ );

Désactiver XML-RPC via le fichier wp-config.php

add_filter(‘xmlrpc_enabled’, ‘__return_false’);

Le code doit-être ajouté après la dernière instruction ABSPATH:

Bloquer xmlrpc.php via le .htaccess

# masque la visibilité de xmlrpc
<IfModule mod_alias.c>
RedirectMatch 403 /xmlrpc.php
</IfModule>
# END Disable xmlrpc
# Bloque les requêtes vers xmlrpc.php
<Files xmlrpc.php>
order deny,allow
deny from all
# Votre Ip fixe autorisée
allow from 110.110.110.110
</Files>

Désactiver XML-RPC via un plugin

iThemes Security
Eazy XMLRPC Pingback Disable

Dans ce cas, rien de vraiment compliqué, il suffit de télécharger le plugin, de l’activer et éventuellement de régler quelques paramètres pour être protéger !

Il n'y a pas de commentaires pour le moment. Soyez le premier à participer !

Une remarque, une question ? Laissez un commentaire.
Back to top