lundi 25 mars 2019

Sécuriser un site WordPress en 2019: check list synthétique

WordPress motorise aujourd’hui près de 33% des sites web dans le monde est plus de 60% des sites utilisant un CMS. Corolaire de cette part de marché dominante, il est aussi très exposé aux attaques de hackers. Dans ce contexte, sécuriser son instance WordPress devient un paramètre important si on ne veut pas voir partir en fumée son travail ou se mettre en difficulté vis-à-vis de vos lecteurs. A ce titre, il est important de rappeler qu’en France, l’Article de la loi Informatique et Libertés du 6 janvier 1978 est assez clair : « Le responsable du traitement est tenu de prendre toutes précautions utiles, au regard de la nature des données et des risques présentés par le traitement, pour préserver la sécurité des données et, notamment, empêcher qu’elles soient déformées, endommagées, ou que des tiers non autorisés y aient accès. »

Check list: comment sécuriser son site WordPress


La littérature sur le sujet est riche et en substance assez consistante. Vous trouverez ci-dessous une compilation des règles à implémenter par ordre d’importance croissante.
  1.  Choisir un hébergeur de qualité 
  2. Faire des mises à jours régulières (Core WordPress, thème, plugins) 
    • Eliminer tous les plugins et les thèmes non utilisés 
    • Utiliser un thème maintenu ou passer son thème au scanner: type https://wordpress.org/plugins/tac/ 
    • Même remarque pour les plugins 
  3. Sécuriser les comptes d’accès et la page de login 
    • Remplacer le compte Admin par défaut par un compte peu explicite.
    • Toujours utiliser des mots de passe complexes associant associant lettres, symboles et chiffres de plus de 8 caractères.
    • Changer l'adresse de votre page de login en utilisant un plugin type WPS Hide Login.
    • Restreindre le nombre d’essais d’authentification pour se prévenir d’attaques dites de « force brute » en limitant le nombre d’essais provenant d’une même adresse IP avant blocage et le temps de blocage après blocage en utilisant un plugin du type WPS Limit Login.
  4. Passer le site en https comme décrit dans l'article en lien, mais c’est valable pour tous les sites désormais. 
  5. Sécuriser l’environnement 
    • Installer un scanner de failles de sécurité qui fournit d’autres services de sécurité (type WAF) type WordFence .
    • Ajouter des clefs de sécurité secrètes. Les clés d’authentification SALT créent un cookie d’identification qui protège votre installation et replacer les codes dans la section ad hoc du fichier de config 
    • Protéger en écriture wp-config.php et .htaccess via Filezilla : config 644 
    • Protéger vos répertoires via .htaccess : 
      • Pour protéger le fichier wp-config, ajouter :
             <Files wp-config.php>
             order allow,deny
             deny from all
             </Files>
      • Pour cacher les répertoires sensibles, ajouter:
             Options All –Indexes
      • Enfin pour protéger le fichier htaccess lui-même:
             <Files.htaccess>
             order allow,deny
             deny from all
             </Files>
  6. Faire des sauvegardes régulières du système: fichiers + base de données en utilisant un plugin de backup type UpDraftPlus  ou quand ils existent les services de votre hébergeur. 
  7. Opérations complémentaires:
    •  Changer le préfixe "wp_" par défaut des tables de la base MySQL comme expliqué ici  ou en utilisant un plugin type Brozzme DB Prefix & Tools Addons.
    • Ne pas utiliser le même mail pour le formulaire de contact et l’administration du site.
    • Masquer la version de votre wordpress afin de ne pas donner d'informations aux hackers. En théorie il y a pas mal de choses à faire et si votre site est à jour (conseil #2), c’est inutile. Ceci dit, une tâche facile consiste à enlever le fichier read.html à la racine.

Références bibliographiques en ligne