Comment protéger WordPress des attaques XML-RPC sur Ubuntu 14.04

introduction

WordPress est une plate-forme populaire et puissante de CMS (système de gestion de contenu). Sa popularité peut attirer l’attention indésirable sous forme de trafic malveillant spécialement destiné à un site WordPress.

Il existe de nombreux cas où un serveur qui n’a pas été protégé ou optimisé peut rencontrer des problèmes ou des erreurs après avoir reçu une petite quantité de trafic malveillant. Ces attaques entraînent l’épuisement des ressources système, ce qui empêche les services tels que MySQL de réagir. Le signal visuel le plus courant serait une erreur "+ Erreur lors de la connexion à la base de données dans". La console Web peut également afficher des erreurs + Out of Memory.

Ce guide vous montrera comment protéger WordPress des attaques XML-RPC sur un système Ubuntu 14.04.

Conditions préalables

Pour ce guide, vous avez besoin des éléments suivants:

Nous supposons que WordPress est déjà installé sur une Droplet Ubuntu 14.04. Il existe plusieurs façons d’installer WordPress, mais voici deux méthodes courantes:

Toutes les commandes de ce didacticiel doivent être exécutées en tant qu’utilisateur non root. Si un accès root est requis pour la commande, il sera précédé de + sudo +. https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 La configuration initiale du serveur avec Ubuntu 14.04] explique comment ajouter des utilisateurs et leur donner un accès immédiat.

Qu’est-ce que XML-RPC?

WordPress utilise XML-RPC pour exécuter à distance functions. Le plugin populaire JetPack et l’application mobile WordPress sont deux excellents exemples de l’utilisation de XML-RPC par WordPress. Cette même fonctionnalité peut également être exploitée pour envoyer des milliers de requêtes à WordPress dans un court laps de temps. Ce scénario est effectivement une attaque par force brute.

Reconnaître une attaque XML-RPC

Les deux méthodes principales pour reconnaître une attaque XML-RPC sont les suivantes:

1) Voir le message «Erreur de connexion à la base de données» lorsque votre site WordPress est en panne + 2) Trouver de nombreuses entrées similaires à " POST /xmlrpc.php HTTP / 1.0 ” dans les journaux de votre serveur Web

L’emplacement des fichiers journaux de votre serveur Web dépend de la distribution Linux que vous exécutez et du serveur Web que vous exécutez.

Pour Apache sur Ubuntu 14.04, utilisez cette commande pour rechercher des attaques XML-RPC:

grep xmlrpc /var/log/apache2/access.log

Pour Nginx sur Ubuntu 14.04, utilisez cette commande pour rechercher des attaques XML-RPC:

grep xmlrpc /var/log/nginx/access.log

Votre site WordPress reçoit des attaques XML-RPC si les commandes ci-dessus génèrent plusieurs lignes de sortie, comme dans cet exemple:

access.log

111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 200 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

Le reste de cet article porte sur trois méthodes différentes permettant d’empêcher de nouvelles attaques XML-RPC.

Méthode 1: Installation du plug-in Jetpack

Idéalement, vous souhaitez empêcher les attaques XML-RPC avant qu’elles ne se produisent. Le plug-in Jetpack pour WordPress peut bloquer les demandes de méthode multicall XML-RPC avec sa fonction Protect. Vous verrez toujours les entrées XML-RPC dans les journaux de votre serveur Web avec Jetpack activé. Cependant, Jetpack réduira de près de 90% la charge de ces tentatives de journalisation malveillantes sur la base de données.

Jetpack s’installe facilement à partir du backend WordPress. Tout d’abord, connectez-vous à votre panneau de contrôle WordPress et sélectionnez * Plugins→ Add New * dans le menu de gauche.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/plugins_menu.png [Menu Plugins WordPress]

Jetpack devrait être automatiquement répertorié dans la section Plugins sélectionnée de la page * Ajouter un *. Si vous ne le voyez pas, vous pouvez rechercher * Jetpack * en utilisant le champ de recherche.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/jetpack_install.png [Page d’installation de Jetpack]

Cliquez sur le bouton * Installer maintenant * pour télécharger, décompresser et installer Jetpack. Une fois l’installation réussie, il y aura un lien * Activer le plugin * sur la page. Cliquez sur ce lien * Activer le plugin *. Vous serez renvoyé à la page * Plugins * et un en-tête vert indiquant * Votre Jetpack est presque prêt! *. Cliquez sur le bouton * Connect to Wordpress.com * pour terminer l’activation de Jetpack.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/connect.png [bouton de connexion à Wordpress.com]

Maintenant, connectez-vous avec un compte WordPress.com. Vous pouvez également créer un compte si nécessaire.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/log_in.png [Connectez-vous au formulaire Wordpress.com]

Une fois que vous vous êtes connecté à votre compte WordPress.com, Jetpack sera activé. Vous serez présenté avec une option pour exécuter * Jump Start * qui activera automatiquement les fonctionnalités communes de Jetpack. Cliquez sur le lien * Sauter * à cette étape.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/jump_start.png [Écran de démarrage par saut].

La fonction de protection est automatiquement activée, même si vous ignorez le processus Jump Start. Vous pouvez maintenant voir un tableau de bord Jetpack qui affiche également la fonction de protection comme étant active. Les adresses IP de la liste blanche risquent d’être bloquées par Protect en cliquant sur l’engrenage à côté du nom * Protect *.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/jetpack_dashboard.png [Tableau de bord Jetpack]

Entrez les adresses IPv4 ou IPv6 que vous souhaitez utiliser dans la liste blanche, puis cliquez sur le bouton * Enregistrer * pour mettre à jour la liste blanche Protect.

image: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/protect.png [Protéger les paramètres]

Méthode 2: activation de block-xmlrpc avec a2enconf

La fonctionnalité + a2enconf block-xmlrpc + a été ajoutée à l’image en un clic de DigitalOcean WordPress en décembre 2015. Avec celui-ci, vous pouvez bloquer toutes les requêtes XML-RPC au niveau du serveur Web.

Pour activer le script de blocage XML-RPC, exécutez la commande suivante sur votre Droplet sur laquelle l’image WordPress en un clic DO est installée:

sudo a2enconf block-xmlrpc

Redémarrez Apache pour activer le changement:

sudo service apache2 restart

Méthode 3: bloquer manuellement tout le trafic XML-RPC

Sinon, le bloc XML-RPC peut être appliqué manuellement à votre configuration Apache ou Nginx.

Pour Apache sur Ubuntu 14.04, éditez le fichier de configuration avec la commande suivante:

sudo nano /etc/apache2/sites-available/000-default.conf

Ajoutez les lignes en surbrillance ci-dessous entre les balises + <VirtualHost> +.

Apache VirtualHost Config

<VirtualHost>
…




</VirtualHost>

Enregistrez et fermez ce fichier lorsque vous avez terminé.

Redémarrez le serveur Web pour activer les modifications:

sudo service apache2 restart

Pour Nginx sur Ubuntu 14.04, éditez le fichier de configuration à l’aide de la commande suivante (changez le chemin d’accès pour qu’il corresponde à votre fichier de configuration):

sudo nano /etc/nginx/sites-available/

Ajoutez les lignes en surbrillance ci-dessous dans le bloc serveur:

Fichier de blocage du serveur Nginx

server {
…



}

Enregistrez et fermez ce fichier lorsque vous avez terminé.

Redémarrez le serveur Web pour activer les modifications:

sudo service nginx restart

Vérification des étapes d’atténuation des attaques

Quelle que soit la méthode choisie pour prévenir les attaques, vous devez vérifier que cela fonctionne.

Si vous activez la fonction Jetpack Protect, vous verrez les demandes XML-RPC se poursuivre dans les journaux de votre serveur Web. La fréquence devrait être inférieure et Jetpack réduira la charge qu’une attaque peut imposer au processus du serveur de base de données. Jetpack bloquera également progressivement les adresses IP attaquantes.

Si vous bloquez manuellement tout le trafic XML-RPC, vos journaux continueront d’afficher les tentatives, mais le code d’erreur résultant sera différent de 200. Par exemple, les entrées du fichier Apache + access.log + peuvent ressembler à:

access.log

111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0"  674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

Conclusion

En prenant des mesures pour limiter le trafic XML-RPC malveillant, votre site WordPress consommera moins de ressources système. L’épuisement des ressources système est la raison la plus courante pour laquelle un site WordPress est mis hors ligne sur un VPS. Les méthodes de prévention des attaques XML-RPC mentionnées dans cet article permettent de garantir que votre site WordPress reste en ligne.

Pour en savoir plus sur les attaques par force brute contre WordPress XML-RPC, voir Sucuri.net - Brute Force Attaques d’amplification contre WordPress XMLRPC.

Related