Sécurité WordPress

XML-RPC – Comment sécuriser votre site WordPress des attaques par Force Brute

12 octobre 2015

XML-RPC – Comment sécuriser votre site WordPress des attaques par Force Brute

Sucuri a publié le 8 Octobre un article faisant part d’une attaque de grande envergure qui pourrait donner aux pirates l’accès à votre blog.

Pour les non techniciens, voici une explication un peu moins technique de cette attaque. Les attaquants profitent d’une vulnérabilité de la méthode « system.multicall » XML-RPC de WordPress qui leur permet d’effectuer des centaines de tentatives de connexion avec une seule demande. Ils peuvent ainsi, presque, passer inaperçus.

Pour faire court, il s’agit d’une tentative pour forcer les connexions, en une seule tentative, afin de déterminer vos informations d’identification administrateur. Basé sur le nombre élevé de tentatives qu’un attaquant peut faire à chaque appel, ces tentatives sont 50 à 100 fois plus efficaces que les tentatives « normales » d’attaques par force brute.

Contrer les attaques XML-RPC de WordPress

WordPress XML-RPC

La première attaque a été repérée le 10 Septembre dernier, ce qui signifie que cela fait un mois que ce genre d’attaque est dans la nature, lui permettant de se propager sans encombre. Cela devient problématique lorsque l’on voit l’augmentation drastique du nombre de sites Web qui ont connu cette attaque dans les derniers jours.

Alors la question demeure, que pouvez-vous faire, en tant que propriétaire de blog WordPress, pour protéger votre site?

Bonne question! Je vais essayer de fournir une réponse claire, pour que les utilisateurs inquiets pour la sécurité de leur blog puissent protéger leur bien.

Contrer les attaques par  Force Brute de XML-RPC

Il existe plusieurs méthodes de blocages pour arrêter les attaques, mais aucune n’est infaillible. Elles diminuent uniquement la probabilité d’attaques, sans pour autant vous protéger à 100%. Vous pourrez toujours être sujet à une attaque de type DDoS (Déni de service distribué), sauf si votre site passe par un CDN ou que votre hébergeur ai activé la protection DDoS.

Arrêtez les attaques en désactivant la méthode « system multicall »

Vous pouvez désactiver la méthode system.multicall de XML-RPC en ajoutant le code suivant au fichier « functions.php » de votre thème. C’est la méthode idéale, car elle ne désactive que quelques paramètres très spécifiques de XML-RPC.

function mmx_remove_xmlrpc_methods( $methods ) {
    unset( $methods['system.multicall'] );
    unset( $methods['system.listMethods'] );
    unset( $methods['system.getCapabilities'] );
return $methods;
}
add_filter( 'xmlrpc_methods', 'mmx_remove_xmlrpc_methods');

Arrêtez les attaques grâce au fichier .htaccess

Si vous souhaitez désactiver tous les accès à XML-RPC, ajoutez le code ci-dessous à votre fichier « .htaccess » situé dans le répertoire de base WordPress (celui où se trouve le fichier index.php) . Malheureusement, cela n’aura pas forcément  l’effet désiré en fonction des plugin installés, nous allons y revenir plus loin.

<files xmlrpc*="">
order deny,allow
deny from all
</files>

Arrêtez les attaques en désactivant XML-RPC dans wp-config.php

Vous pouvez choisir de mettre à jour votre fichier de configuration wp-config.php en ajoutant la ligne suivante en dessous de la dernière déclaration ABSPATH (à la fin du fichier):

add_filter ('xmlrpc_enabled', '__return_false');

Désactiver XML-RPC avec un plugin

Disable XM-LRPC

Le plugin Disable XML RPC vous permet de désactiver XML-RPC d’un simple clic.

Si vous utilisez le plugin iThemes Security (anciennement Better WP Security), il est inutile d’installer ce plugin.

Rendez vous dans la section WordPress Tweaks d’iThemes Security, et choisissez Completely Disable XML RPC dans la liste déroulante XML-RPC, puis cliquez sur Save All Changes pour enregistrer les modifications.

 

[Tweet « Protégez votre site des attaques XML-RPC #WordPress XML-RPC attacks »]

Attention: Certains plugin populaires utilisent XML-RPC

Tous les types de blocages que nous avons vu jusqu’à présent, bloquent totalement XML-RPC, mais dans certains cas cela revient à générer « volontairement » des erreurs sur votre site.

En désactivant XML-RPC, vous risquez de « casser » les fonctionnalités de certains plugin populaires. Si vous avez installé l’un des plugin ci-dessous, la liste n’est pas limitative, il faudra faire plus de recherche pour trouver la solution idéale:

  • WordPress Mobile App
  • JetPack
  • BuddyPress
  • Windows Live Writer
  • Plusieurs plugin de galeries photo

Il existe toutefois, un plugin qui vous permet de bloquer XML RPC, tout en vous laissant la possibilité, d’utiliser JetPack sans provoquer d’erreurs. Ce plugin s’appelle Stop XML RPC Attack.

Stop XML-RPC Attack

 

Et ensuite…

Il est pratiquement acquis que XML-RPC sera à nouveau utilisé, un jour, pour lancer des attaques contre les sites WordPress. Aussi pour vous prémunir je vous propose deux solutions:

1- Un Firewall (WAF – Web Application Firewall)

Un pare-feu est un système de sécurité (logiciel) qui est installé entre deux ou plusieurs réseaux de contrôler le trafic entrant et sortant de chaque réseau. Il agit comme une barrière entre un réseau de confiance et non de confiance. Dans une configuration typique, un pare-feu est installé entre une connexion Internet et un réseau interne, protégeant ainsi le réseau des attaques de pirates et également utilisé pour contrôler qui peut accéder à l’Internet.

Les pare-feu d’applications (WAF) sont des pare-feu qui ont une portée unique, protéger votre site des attaques de pirates malveillants. Un WAF (Web Application Firewall) est installé entre le serveur Web sur lequel est hébergé votre site WordPress et la connexion publique (Internet), et il analyse chaque requête HTTP qui est envoyé vers votre site WordPress, comme le montre la capture d’écran ci-dessous.

Diagramme WordPress WAF

Si vous utilisez une application pare-feu WordPress Web

Comme vous le savez probablement déjà, il n’y a pas de solution à l’épreuve des balles, quand on parle de sécurité WordPress. Vous devez vérifier tous les aspects sécuritaire de votre site (protection,détection, réponse) pour vous assurer d’obtenir le meilleur de vos systèmes afin de garder votre site WordPress sécurisé.

Votre site WordPress reste accessible aux attaquants.

Lorsque vous utilisez un WAF en ligne (pare-feu d’applications) pour votre site WordPress, votre serveur web doit être accessible sur Internet pour permettre au WAF de faire transiter du trafic vers votre site WordPress. Cela signifie que lorsque quelqu’un tente d’accéder à votre site via votre nom de domaine, il passera par le pare-feu.

Cependant si quelqu’un peut contourner le WAF en communiquant directement avec votre serveur Web et votre site WordPress via l’adresse IP, comme le montre le schéma ci-dessous, votre site n’est plus du tout protégé.

Passe outre le WAF WordPress

Les pare-feu de site WordPress n’agissent que sur un aspect de la sécurité. Si votre budget le permet, allez-y. Je vous recommande fortement Sucuri Website Firewall, mais il y a beaucoup d’autres solutions toutes aussi efficaces.

Il est très important de noter que même si vous utilisez un pare-feu d’applications Web pour WordPress, vous ne devez pas baisser votre gardes car les pare-feu ne portent que sur un aspect de la sécurité.

2- Un CDN (Content Delivery Network)

Un réseau de distribution de contenu (CDN) est constitué d’une série de serveurs cache interconnectés, qui permettent de stocker et de distribuer votre contenu à de nombreux utilisateurs finaux basés à leur proximité.

Architecture CDN WordPress
Crédit Photo: Winning WP

De cette façon, si des personnes accèdent à votre site à partir de l’Australie, la Chine, les Etats-Unis ou le Royaume-Uni, elles sont capables de charger votre contenu à partir d’un serveur local au lieu d’avoir à attendre qu’il soit fourni par votre serveur d’origine. Cela peut avoir un impact significatif sur les temps de chargement, tout en réduisant la pression sur votre serveur d’hébergement. Cela peut aussi vous faire économiser les coûts de bande passante.

Chaque CDN dispose de ces propres règles de sécurité, mais dans l’ensemble, tous les CDN proposent des fonctions de sécurité identiques à la base, incluant les WAF (Web Application Firewall).

Le WAF (Web Application Firewall) protège automatiquement votre site de ce types d’attaques:

  • Injection SQL
  • Cross-site scripting (XSS)
  • Déni de service distribué (DDoS)
  • Attaques spécifiques à l’application (WordPress, etc.)

Utiliser un CDN reste donc une solution intéressante pour vous protéger des attaques XML-RPC très répandues en ce moment.

Dans cet article j’ai essayé d’être aussi précis que possible, tout en évitant d’être trop technique. Les explications pourraient être beaucoup plus avancées, mais il m’a semblé qu’avec cet ensemble de données la plupart d’entre vous devrait être à même de se protéger des attaque XML-RPC en cours.

Si vous avez relevé un erreur, n’hésitez pas à m’en faire part afin que je puisse la corriger.

Avez vous été victime d’attaques XML-RPC récemment? Qu’utilisez vous pour protéger votre site? Vos avis et solutions sont les bienvenus dans les commentaires ci-dessous.

séparateur de texte

Ne laissez pas vos amis se faire pirater. Faites circuler l’information!

[Tweet « Protégez votre site des attaques XML-RPC #WordPress XML-RPC attacks »]
20 commentaires
  1. Li-An

    Le fait que Jetpack ait besoin de XML-RPC est particulièrement agaçant d'un point de vue sécurité. Merci pour le plugin adapté.

  2. Hubert

    Il est vrai que ce besoin de XML-RPC est fâcheux pour Jetpack. Espérons qu'uns solution définitive au problème du protocole XML-RPC sera trouvé rapidment.

  3. Nath

    Bonjour, Je fais l'objet de ce type d'attaque sur mon blog perso. J'ai souhaité installer le plugin disable XML-RPC, hors, il indique n' être compatible que jusqu'à la version 4.1 de wordpress. Essayant de suivre scrupuleusement vos conseils, ma version wp est à jour : 4.3.1. En conséquence est ce que ce plugin disable machin truc fera aussi bien le job avec ma version wp à jour ? Merci à vous.

  4. Hubert

    A vrai dire, je déconseille généralement l'emploi d'un plugin qui n'a pas été testé sur la dernière version de WordPress, toutefois dans ce cas précis, le plugin ne fait que désactiver une fonction bien précise, il n'y a donc aucun risque. Si toutefois vous utilisez iThemes Security pour protéger votre blog, il vienne t de mettre le plugin à jour afin de combattre la fameuse attaque dont je parlais. En plus de autres protections qu'offre ce plugin, c'est une chose non négligeable et peut valoir le coup d'installer iThemes Security.

  5. Nath

    Merci beaucoup pour votre réponse.Ayant déjà des plug in comme blockbad queries, akismet, login lockdown, je ne souhaite pas cumuler trop de plugin. I theme security pourrait être en doublon avec certains de ces plugins déjà installés.Si je vous comprends bien, pas de plug in. Ok. Le code affiché dans la functions.php du thème (Je l'ai trouvé) je le copie en intégralité mais où dans le fichier ? En haut ? Pardonnez-moi pour mes questions de débutante, mais, il faut bien débuter un jour. Si j'arrive à installer ce code, je retire le plugin disable machin truc et c'est ok pour ma protection anti xml-rpc ?Merci beaucoup pour votre patience.

  6. Hubert

    Toujours copier le code au bas du fichier functions.php. Une fois le code installé plus besoin de plugin supplémentaire. Bon courage, et au cas où, je serai là pour vous aider.

  7. Nath

    Bonjour, C'est encore moi. J'ai fait la manip, cela à bloquer mon site. J'ai enlever le copié collé de votre code et maintenant quand je souhaite mettre à jour le fichier sans modif j'ai ce message d'erreur : "Parse error: syntax error, unexpected '?' in /home/avaamara/public_html/wp-content/themes/BUZZBLOG-theme/functions.php on line 593" J'ai bien compris que le ? posait problème mais je ne sais pas quoi en faire pour rétablir la configuration initiale. Ça m'apprendra à vouloir jouer les webmasters alors que les plug in sont faits pour des gens comme moi :( Promis je ne viendrai plus vous ennuyer après.

  8. Nath

    Coucou, (Je passe du bonjour au coucou :D ) Ne perdez pas votre temps avec moi. Mon problème est résolu. Après m'avoir enguirlandé mon époux à remis le fichier initial à sa place via ftp. Je n'y touche plus et gardé le plugin :( Je vais retourné à l'écriture de mon blog, c'est ce qui me va le mieux. Mais c'est ballot quand même ! Merci encore pour votre attention.ps : Je vais néanmoins continuer à vous lire.

  9. Deuns26

    il vaux mieux installer ce codeadd_filter('xmlrpc_enabled', '__return_false');dans votre propre plugin ce que fait exactement d'ailleurs le plugin Disable XML RPC . Ce plugin ne ralentira pas votre site, installer le plutôt que de toucher à votre fichier functions.php surtout si vous avez pas trop l'habitude d'y toucher puis on ne c'est jamais si vous avez besoin du XML RPC vous aurez juste à désactiver le plugin. Enfin chacun son truc.

  10. Hubert

    Merci à vous, et à votre service :)

  11. Hubert

    Merci pour cette idée. Nath devrait en tirer profit.

  12. Hubert

    Comme le problème est résolu, il n'y a rien a rajouter, si ce n'est de voir le commentaire de Deuns26.

  13. Sébastien Méric

    Bonjour,Merci pour l'article.Une note sur le paragraphe : "Arrêtez les attaques en désactivant la méthode “system multicall”" le filtre 'xmlrpc_methods' ne peut pas être utilisé pour désactiver les méthodes 'system.multicall', 'system.listMethods', et 'system.getCapabilities' car elles sont implémentées dans la bibliothèque wp-includes\class-IXR.php, pas dans l'Api WordPress. Les méthodes accessibles au travers du filtre 'xmlrpc_methods' sont listées ici : https://core.trac.wordpress.org/browser/tags/4.3.1/src/wp-includes/class-wp-xmlrpc-server.php#L48Séb.

  14. Hubert

    Merci Sébastien pour cette information technique, très utile.

  15. Marius

    Bonjour,Je reçois beaucoup d'attaques, j'ai caché mon formulaire de connexion et les IP sont bloqués. Du coup je pense que les attaques passent par xmlrpc, d'où mon arrivée sur cet article.ma question, j'utilise MarsEdit sur Mac et Wordpress sur iPhone. Si je désactive xmlrpc avec le plugin par exemple, ces applications ne vont plus fonctionner ?

  16. Hubert

    Bonjour Marius, Je ne peux malheureusement pas vous aider, ne connaissant ni Mac ni iPhone, mais je pense qu'un des lecteurs pourra vous répondre.

  17. Marius

    Bonjour Hubert,Ne trouvant pas de réponses j'ai fait tout simplement le test. Je m'attendais un peu au résultat à vrai dire.Plus aucune application du genre MarsEdit ou Wordpress pour iOS ne fonctionne si on désactive xmlrpc.J'ai pu également en désactivant xmlrpc, découvrir que les attaques n'utilisaient pas ce biais. Mais du coup je me demande bien par où elles passent...

  18. Hubert

    Bonjour Marius, A vrai dire les attaques peuvent provenir de bien des endroits. Cela peut être des tentatives d'accès à votre fichier wp-config, comme des tests sur des plugin défectueux. Un plugin, comme Redirection vous donnera un log des erreurs 404, qui sont assez souvent des tentatives d'attaques et vous permettra de connaitre l'IP de l'attaquant, il vous suffira ensuite de demander à votre hébergeur de bloquer l'IP correspondante, si vous avez un récidiviste.

  19. Marius

    Bonjour Hubert,En fait j'utilise le plugin WP Cerber. J'ai ainsi la liste de toutes les tentatives de connexion avec les IP qui sont bloqués automatiquement au bout d'un certain nombre d'essais, dans mon cas 1 seul.Le fichier wp-login.php est caché, il faut taper un URL différent avec un code comme un mot de passe.Le formulaire de connexion n'est donc plus accessible sans connaître déjà ce premier mot de passe. En tout cas je ne le voix nul part ailleurs, une tentative sur wp-admin renvoie une erreur, une tentative d'accès directe à wp-login bloque l'IP sans même avoir pu tenter une connexion. Et pourtant j'ai des tentatives de connexion répétées jusqu'à plusieurs dizaines par jour en ce moment. C'est pourquoi je pensais que les tentatives pouvaient être effectuées à l'aide d'un logiciel exploitant xmlrpc. Mais ce n'est pas le cas car une désactivation comme dit plus haut n'a aucun effet.

  20. Hubert

    Bonjour Marius, Il est effectivement possible qu'il y ait des tentatives via xmlrpc, c'est pourquoi il est fortement conseillé& de le désactiver. Sur un de mes blogs, une personne a tenté pas moins de 582 fois en 45 minutes d'avoir accès au site ou à des plugin qui ne sont pas installés, certaines personnes sont vraiment tenaces, finalement il est totalement banni.

Laisser un commentaire

You have to agree to the comment policy.

-20% sur ElegantThemes.com Maintenant !Cliquez-ici !
+

-20% sur les thèmes et les plugins d’ElegantThemes.Com

-20%

OFFRE

Jours
Heures
Minutes
Secondes