[WordPress] Quelques conseils de sécurité pour ne pas se faire pirater son blog

Tutoriel-Mise-a-jour-manuelle-wordpress

Récemment, mon blog WordPress a eu un gros gros souci. Pas mal de pages chargaient indéfiniment et des requêtes vers des sites louches (vente de viagra et compagnie) étaient effectuées. Après inspection, j'ai constaté que la base de données était saine mais mon FTP avait été profondément modifié et pas mal de pages PHP présentes à la racine du site avaient été éditées avec des liens bizarres en clair et d'autres codés en base64.

Cette attaque avait peu de chance de provenir d'une faille WordPress, ma version étant à jour. Mon mot de passe FTP est quasiment introuvable par bruteforce ou dictionnaire, il fait plus de 15 caractères et je le change tous les 6 mois. Après avoir pas mal farfouillé sur le net, j'en ai déduit qu'un virus avait infecté mon PC (plus précisément Trojan.Downloader.JS.Agent, JS Redirector, JSObfuscated) et récupéré le mot de passe FTP que Filezilla stocke en clair dans un simple fichier XML sur mon PC. J'avoue humblement que posséder un virus sur un PC utilisé pour blogger est une négligence grave de ma part. Je pense d'ailleurs effectuer mes opérations sensibles (FTP, Sauvegardes de bases etc.) depuis une machine virtuelle Linux à l'avenir.

Après avoir tout réparé en restaurant le FTP à son état de la semaine précédente (merci OVH) et en changeant le mot de passe FTP, voici donc quelques conseils pour ne pas se faire pirater son blog WordPress, ou du moins en diminuer fortement la probabilité.

1) Maintenir son WordPress à jour

Nettoyage-base-de-donnees-wordpressLa plupart des mises à jour WordPress ne se contentent pas de rajouter des fonctionnalités ou d'améliorer le code, elles colmatent également des failles souvent critiques découvertes par la communauté. WordPress est réactif et corrige rapidement les failles de son moteur, encore faut-il que vous fassiez rapidement les mises à jour pour être protégé. Pour ceux qui ont peur de la mise à jour automatique de WordPress, voici comment mettre à jour WordPress manuellement.

2) Sécuriser ses accès FTP

Piratage-FTP-Wordpess-par-Filezilla-TrojanC'est la partie la plus délicate. Si tout blogueur ne s'amusera pas à mettre azerty ou password comme mot de passe FTP, pensera-t-il à le changer périodiquement, à s'assurer que sa machine n'embarque pas de trojan capable de récupérer les mots de passe FTP de Filezilla etc? Pas sûr…

Soyez bien certain d'utiliser un client FTP fiable et si possible dans une sandbox type machine virtuelle Windows ou mieux, une distri Linux sur un PC dédié. Dans tous les cas, faites une sauvegarde régulière de votre FTP dans son ensemble. Normalement, votre hébergeur s'en charge et vous permet de restaurer en un clic, mais mieux vaut veiller au grain.

3) Se méfier des thèmes WordPress non officiels

Le meilleur moyen d'introduire le loup dans la bergerie, c'est de télécharger un thème gratuit trouvé en cherchant dans Google lui même. Wordpess-Fr a d'ailleurs écrit un article très édifiant là dessus : sur les 10 premiers résultats Google de la requête "Free WordPress themes", 1 seul site, l'officiel, propose des thèmes sans contenu douteux. Tous les autres sans exception contiennent des thèmes avec des scripts camouflés en base64, des liens vers des sites louches de spam etc.

Bref, soyez extrêmement prudents quant à la source de vos thèmes WordPress. Voici quelques sites fiables pour trouver des thèmes WordPress sans virus ou code malicieux:

  • ThemeLab
  • Arras Theme
  • Smashing Magazine
  • Et bien entendu le dépôt officiel de thèmes : WordPress.org

4) Limiter les attaques par bruteforce de son site WordPress

Quelques conseils basiques et ultra simples à mettre en place :

  • Créer un utilisateur autre que admin, lui donner les droits administrateur. Supprimer l'utilisateur admin. Vous utiliserez désormais ce nouveau compte pour gérer votre site WordPress et ses billets. Cela prévient la plupart des attaques par robot qui testent toutes le combinaisons de mot de passe possibles pour l'utilisateur admin
  • Installer le plugin WordPress Limit Login Attempts. Si un robot tente de se connecter un certain nombre de fois sans y arriver (j'ai mis 3 fois en 24h), son IP sera bannie pour la durée que vous souhaitez.
  • Ne pas utiliser le préfixe wp_ dans sa base de données. Il est possible de faire le changement même si vous avez fait cette erreur à l'installation.

Et si jamais je me fais pirater mon blog WordPress quand même, comment le réparer?

  • Scanner son PC avec un antivirus.
  • Scanner sa base de données pour s'assurer qu'aucun code en iframe, noscript ou display ne soit inséré. La requêtes SQL suivante :
SELECT * FROM wp_posts WHERE post_content LIKE '%<iframe%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<noscript%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%display:%'

permet de détecter les entrées potentiellement infectées et les effacer à la main. ATTENTION, certains billets ou plugins peuvent utiliser ces fonctionnalités sans être pour autant malveillants.

  • Sauvegarder sa base de données sur son hébergeur (PHPmyAdmin) ou directement avec le plugin WordPress Database Backup.
  • Exportez le fichier XML contenant tous vos billets, pages statiques et utilisateurs. Pour cela, dans l'interface admin faites Outils > Exporter.
  • Récupérez sur votre FTP l'ensemble des fichiers contenus dans wp-admin. On s'en servira par la suite pour restaurer l'ensemble des images des articles notamment. Les plugins et thèmes, on les récupère par principe, mais il faudra partir du principe qu'ils sont infectés.
  • Tant qu'on est sur le FTP, récupérez wp-config.php, robots.txt et le .htaccess si vous en avez un. Gardez à l'esprit qu'il faudra les ouvrir pour voir si du code malicieux n'y a pas été injecté.
  • Faites une capture d'écran de la page plugins pour savoir quels plugins vous devrez réinstaller après restauration.
  • A ce moment là changez de mot de passe FTP depuis l'interface de votre hébergeur et ne le faites plus JAMAIS retenir à Filezilla, c'est de cette façon que le trojan infecte votre site WordPress ! Je conseille d'ailleurs pour l'instant de changer de client FTP le temps de la manip. J'ai utilisé pour ma part FlashFXP en version d'essai 30 jours.
  • Restaurez maintenant le FTP à une date antérieure (où le site était sain) via l'interface de votre hébergeur (OVH propose par exemple les 2 dernier jour, la semaine précédente ou le mois précédent). Si vous êtes auto-hébergé (ça m'étonnerait si vous lisez ça), j'espère que vous aviez une sauvegarde ! Au pire, si vous n'avez pas de sauvegarde, récupérez la dernière version de WordPress, copiez tous les fichiers et écrasez wp-content/upload avec votre propre dossier (qui contient les images)
  • Pour plus de sûreté, rechanger une ultime fois le mot de passe FTP et fermer votre client FTP.
  • Votre site est de nouveau sur pied.

9 commentaires

  1. Limit Login Attempts donne les adresses IP des robots mais est-il possible de les bannir à jamais plutôt que 24h ?

  2. Oui il me semble qu’on peut les bloquer sans limite mais le souci c’est que ça grossit le fichier qui stocke tout ça et donc crée probablement des ralentissements.

  3. Ah oui. J’ai trouvé la solution (dans le fichier .htaccess) mais je n’avais pas pensé à ça.

    Mais je trouve que ça remet en question l’utilité de « limit login attemps » sur le long terme.

    • Je ne trouve pas vu que si on limite à 2 erreurs et qu’on bannit pour 24h, ca fait que le robot ne peut tester que 730 mots de passe par an avec la même IP. Pas énorme si on a un mot de passe robuste on ne risque absolument rien !

  4. les pirates ne manquent pas d’ingéniosité pour pirater les sites, j’ai constaté plusieurs fois qu’il y avait du code malicieux sur de gros sites qui devraient à priori être sécurisés.
    Les solutions proposées dans ton article pour sécuriser son blog wordpress devraient être ajoutées à la documentation générale.

  5. Nous avions le même soucis et nous avons paramétré le serveur afin qu’il n’accepte les connections ftp qu’a partir de quelques adresses. C’était pour nous le meilleure façon de le sécuriser …

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *