🛡️ Sécuriser son WordPress

🙋 Introduction

WordPress se situe comme un incontournable dans le milieu des CMS (Content Management System ou Système de Gestion de Contenu en français), avec plus de 43% des sites web dans le monde, et plus de 60% des sites avec CMS utilisant WordPress selon wpmarmite. Ces chiffres montre l’importance de ce dernier au niveau mondial, ainsi que l’étendue potentielle de la surface d’attaque.

Dans cet article, nous allons voir comment renforcer efficacement la sécurité de votre instance WordPress à travers des bonnes pratiques simples et concrètes afin d’éviter l’atteinte aux données qu’elle contient.

⚔️ Comprendre les menaces

Attaques courantes

Pour bien se protéger, il est essentiel de comprendre comment est réaliser une attaque, par «  » l’attaquant est-il passé, quelle faiblesse a été exploitée, …
Voici une liste (non exhaustive) des attaques populaires :

  • Brute force (accès utilisateur ou administrateur par exemple)
  • Injection SQL
  • XSS
  • Téléversement de fichier malveillant

Cibles typiques

Afin d’arriver à leurs fins, les attaquants visent en priorité les mêmes cibles, le plus souvent en manipulant les données envoyées à votre instance WordPress de manière à réaliser des actions non prévues initialement (récupération de fichiers de configuration, accès non authentifié, lecture de tables dans la base de données, …).
Pour cela, ils exploitent couramment :

  • Les entrées de formulaire
  • Les plugins installés
  • Les fichiers de configuration accessibles

Impacts

En matière de cybersécurité, nous avons l’habitude d’identifier l’impact d’un attaquant selon la triade CID (Confidentialité, Intégrité et Disponibilité).
Pour imager ces 3 principes clés :

  • Confidentialité : Vol de données (personnelles ou non)
  • Intégrité : Défacement du site (modification de l’aspect du site)
  • Disponibilité : Attaque par déni de service (distribué DDoS ou non DoS)

L’atteinte à un, ou plusieurs, de ces principes, conduit à une perte de confiance en l’organisme attaqué, et se mesure également par une perte financière éventuelle.

🔄 Maintenir à jour régulièrement

Dans ce contexte, il y a en permanence un jeu du chat et de la souris qui se joue entre les développeurs et les attaquants qui cherchent, trouvent et exploitent des failles logicielles.

C’est pour cela qu’il est nécessaire de mettre à jour et ce régulièrement, votre infrastructure (OS, serveur web, WordPress lui-même ainsi que toutes ses extensions et plugins).

L’activation des mises à jour automatiques est un moyen d’être proactif sur la menace, mais n’oubliez pas de vérifier systématiquement la compatibilité de la mise à jour avant application (via wp-cli par exemple).

🔐 Renforcer l’authentification

Toujours choisir des mots de passe forts (alternance de lettres minuscules et majuscules, chiffres et caractères spéciaux), générés avec un outil de préférence pour éviter de tomber sur un mot de passe qui répond au critères précédents mais pour autant faible (par exemple : Password123!).

Utiliser un gestionnaire de mots de passe fiable et reconnu, j’utilise pour ma part KeePass, vous pouvez vous rendre sur le site de l’ANSSI (Agence Nationale de la Sécurité des Systèmes d’Information) qui recommande également certains logiciels.

Ajouter la MFA (Multi Factor Authentication ou Authentification à Plusieurs Facteurs), afin d’augmenter considérablement votre résilience aux attaques « traditionnelles » de type brute-force par exemple.

Modifier les noms d’utilisateurs par défaut (je pense à « admin » par exemple) de manière à complexifier drastiquement les mêmes attaques.

Limiter les tentatives d’authentification erronées, via l’ajout d’un plugin (par exemple Limit Login Attempts Reloaded).

👮 Sécuriser les fichiers et dossiers de configuration

Premier point, et pas des moindres, sécuriser les échanges avec votre instance WordPress en employant un certificat SSL et en naviguant exclusivement en HTTPS. De cette manière les communications ne seront plus en clairs, et même si quelqu’un venait à « écouter » il ne pourrait pas faire grand chose de ce qu’il a récolté.

Modifier le préfixe des tables dans le fichier wp-config.php afin d’éviter de faciliter le travail de recherche et d’énumération d’un éventuel attaquant.

Désactiver l’édition de fichiers depuis le tableau de bord.

Restreindre l’accès à certains fichiers sensibles (.htaccess, wp-config.php).

🎭 Gérer les permissions et rôles des utilisateurs

De manière générale, penser à appliquer le principe du moindre privilège, c’est à dire autoriser pour chaque utilisateur ou service le niveau d’accès (ou les permissions) minimum requis pour accomplir ses tâches. Cela évite des autorisations trop permissives sur un compte peu utilisé par exemple, dont la compromission pourrait passer sous les radars, mais ferait de gros dégâts.

Penser à contrôler les différents comptes et services et penser à désactiver voire supprimer les inactifs.

Utiliser un plugin de gestion des rôles si besoin (Members ou User Role Editor pour ne citer qu’eux).

🛠️ Installer des outils de sécurité

En fonction de votre type d’hébergement, vous pouvez opter dans un premier temps pour des solutions logicielles impactant l’infrastructure même hébergeant votre instance. Utiliser un firewall, un WAF (Web Application Firewall) et tout autre solution de protection est vivement recommandée pour assurer sa sécurité.

Installer des plugins spécifiques afin de protéger votre WordPress tels que :

  • Wordfence Security
  • Sucuri Security

💾 Réaliser des sauvegardes régulières

Une mise en place de sauvegardes régulières associée à un plan de restauration sont la clé d’une reprise rapide et efficace en cas de perturbation de fonctionnement, et fait partie intégrante du BCP (Business Continuity Plan ou Plan de Continuité d’Activité) pour une entreprise par exemple.

Pour cela, on peut se baser sur les plugins suivants :

  • UpdraftPlus
  • BlogVault Backup & Staging
  • Jetpack VaultPress Backup

Attention à bien réaliser un test de restauration régulièrement pour ne pas se retrouver avec un backup inutilisable.

👀 Surveiller votre instance

Une surveillance continue permet de voir en temp réel (ou presque), une défaillance quelconque.
Pour cela, bien penser à consulter les logs ainsi que l’historique des connexions en priorité.

Ajouter des notifications, par email notamment, en cas de comportement suspect (activité malveillante, modification de fichiers, …).

Quelques plugins sur lesquels vous pouvez vous reposer:

  • WP Activity Log
  • Sucuri Security

🏠 Choisir un hébergement sécurisé

Le choix de l’hébergeur est crucial, car vous pouvez avoir « blindé » votre serveur web et votre instance WordPress, si l’hébergeur est une passoire vous ne serez aucunement à l’abri.

Se baser sur les services proposés, comme par exemple :

  • Firewall
  • Mécanismes anti DDoS
  • Sauvegardes automatiques

Penser à bien séparer vos environnements (test d’un côté et production de l’autre), ce cloisonnement assure une évolution continue facilité et des risques de perturbations minimisés lors du passage en prod.

Vérifier les permissions des fichiers et dossiers hébergés.

🏁 Conclusion

La sécurisation de son instance WordPress est un chemin vertueux certes, mais également semé d’embûches. Ne pas partir tête baissée et dans toutes les directions afin d’éviter les erreurs (de configuration, d’installation, d’incompatibilités, …).

Bien garder en tête que la sécurité ce n’est pas simplement installer un utilitaire, mais également une surveillance constante, des recherches, du debug, et surtout un état d’esprit amenant à s’approprier les concepts « sains« , et ce, à tous les niveaux.

Attention à ne pas « abuser » des différents plugins, ils sont une source très utile afin d’améliorer son instance, que ce soit esthétique ou fonctionnel, mais chaque plugin ajouter étend également la surface d’attaque de votre WordPress en cas de faille présente non patchée.

Laisser un commentaire

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