Sécuriser WordPress en 15 points

En 2013 plus d’un site internet sur 5 est fait sous WordPress, ce qui fait de ce CMS une plateforme de choix pour les développeurs de plugin mais aussi cible de choix pour tout un tas de tentatives de piratage ou autre tentative d’intrusion automatisées.

sécuriser WordPress

Le pourquoi ? est assez simple : poser de la publicité, créer des liens vers d’autres sites, télécharger votre contenu… bref gagner de l’argent avec votre site. Le comment ? est moins évident, mais tout aussi varié : trouver vos codes identifiants, passer par un plugin, exploiter une faille non corrigée… Il faut bien comprendre que les attaques de masse ne vous visent pas vous mais appliquent la même méthode à des milliers de sites voire à des millions : même avec un faible taux de réussite, une organisation criminelle peut infecter des milliers de sites en quelques heures. Une organisation criminelle, rien que ça ? Oui, j’imagine mal un hacker seul dans son coin s’amuser à aider à vendre des pilules bleues de contrefaçon juste parce qu’elles ont changé sa vie et qu’il veut en faire profiter le monde.

Revenons à nos moutons. Comment se protéger d’une attaque de masse, qui vise des milliers de sites au profil identique ? Tout simplement en ayant un profil différent.

separateur

Dès l’installation : oubliez vos habitudes

1. N’utilisez pas le nom « admin » pour votre compte administrateur, même si c’est facile à taper et que ça se retient bien. S’il est possible de casser un mot de passe en bruteforce (c’est à dire en essayant toutes les combinaisons jusqu’à trouver le bon mot de passe), il est presque impossible de deviner un couple login / mot de passe par la même méthode.

  • Utilisez un générateur de chaines aléatoires pour générer un login d’au moins 8 caractères, si possible avec au moins un caractère non alpha numérique
  • Si « admin » existe, créez un nouvel administrateur, attribuez-lui toutes les publications d’admin et supprimez admin

2. Créez un utilisateur avec moins de privilèges pour la rédaction d’articles : il est souvent possible de deviner une partie des logins d’un site en étudiant ses auteurs. Si vous ne l’avez pas fait, pensez à créer cet utilisateur et lui attribuer les publications déjà existantes

3. Choisissez un mot de passe complexe et aléatoire : utilisez le même mode de fonctionnement que pour la génération de votre login, à savoir au moins 8 caractères, avec au moins un caractère spécial. Si possible, mélangez aussi les majuscules, les minuscules et les nombres. Bannissez les mots issus du dictionnaire, même si vous pensez être plus malin que les autres en utilisant le leet speak ou tout autre méthode connue de remplacement d’un symbole par un autre

4. Ne nommez pas votre base de données « wordpress » : il suffit d’un plugin mal codé pour permettre une injection de code sql et je vous laisse imaginer l’état de votre site après la commande « DROP TABLE FROM wordpress »

5. N’utilisez pas le préfixe « wp_ » pour nommer vos tables. Dans la même idée que le nom de la base de données, conserver le préfixe « wp_ » vous rend plus vulnérable en cas d’injection sql. Si vos tables utilisent ce préfixe vous pouvez les renommer, à la main en suivant ce tutoriel par exemple, ou bien en utilisant un plugin de sécurité, comme Acunetix WP Security (un article à propos de ce plugin viendra dans les prochains jours).

6. Ajoutez les clés de sécurité au fichier wp-config.php, par exemple en utilisant ce générateur : https://api.wordpress.org/secret-key/1.1/salt/.  ces clés ne servent pas à crypter le mot de passe mais à chiffrer le cookie associé à l’authentification d’un compte utilisateur WordPress (quand vous accédez à l’administration ou si vous avez une section réservée). Ces clés sont disponibles depuis la version 2.6 de WordPress et il n’y a aucun problème à les remplacer ces clés ou à les mettre en place tardivement si on les a oubliées… La seule conséquence d’une modification des clés est une déconnexion des utilisateurs éventuellement connectés à ce moment.

checklist

Après l’installation, la configuration : htaccess

En fonction de ce que permet votre hébergeur, vous pouvez ne pas avoir accès au fichier .htaccess, ce qui n’est pas une catastrophe. Mais si vous pouvez insérer ces quelques lignes, ne vous en privez pas.

7. Protégez le fichier wp-config.php, il contient tout le paramétrage de votre site (hors plugins) et notamment les codes d’accès à votre base de données.

<Files wp-config.php>
  order allow,deny
  deny from all
</Files>
Protégez wp-config.php avec .htaccess

8. Cachez vos répertoires, c’est à dire empêchez aux internautes d’accéder à la liste des fichiers (et donc des dossiers) qu’ils contiennent : moins ils auront d’informations, moins vous serez vulnérable.

Options All -Indexes
Cachez vos répertoires avec .htaccess

9.Protégez le fichier .htaccess lui-même, parce que charité bien ordonnée commence par soi-même.

<Files .htaccess>
    order allow,deny 
    deny from all 
</Files>
Protégez .htaccess grâce à lui-même

Cachez (un peu) votre version de WordPress

Tout le monde n’est pas d’accord avec ça (http://kovshenin.com/2013/dont-hide-the-fact-that-youre-using-wordpress/ par exemple) mais comme ça ne prend pas vraiment longtemps, pourquoi ne pas le faire ?

10. Effacez le fichier readme.html à la racine de votre site

11. Supprimez la balise « generator » du site (<meta name= »generator » content= »WordPress x.y.z » />) en ajoutant cette ligne au fichier functions.php du theme :

remove_action("wp_head", "wp_generator");
Suprrimer la meta generator de WordPress

12. Masquez les erreurs de connexion : Le message retourné par WordPress en cas de problème de connexion est explicite, ajouter cette ligne au fichier functions.php du thème permet d’afficher un message d’erreur banalisé :

add_filter('login_errors',create_function('$erreur', "return 'Erreur de connexion';"));
Banaliser les erreurs de connexion de WordPress

13. Supprimez la balise « generator » du flux rss. Ce flux peut être une véritable mine d’informations à propos de votre site, ajoutez les 2 lignes ci-dessous au fichier functions.php pour faire disparaître la balise « generator » de votre flux rss (cette astuce provient de geekpress)

add_filter('get_the_generator_rss2', '__return_false');
add_filter('get_the_generator_atom', '__return_false');
Supprimez la meta generator de votre flux rss

Deux plugins indispensables pour la sécurité de WordPress

14. Limitez le nombre de tentatives de connexions : grâce à Limit Login Attempts vous pouvez vous protéger des attaques par force brute en banissant temporairement une adresse IP après un certain nombre de tentatives de connexion infructueuses.

15. Assurez vous de ne pas installer de thème malicieux : le plugin Theme Authenticity Checker (TAC) permet de scanner un thème installé afin de vérifier qu’il ne contient pas de code malicieux, si vous êtes friand de thèmes gratuits vous devez absolument utiliser cette extension.

separateur

Et en cas de problème ?

Vous aurez bien pris la peine de sauvegarder votre site, que ce soit directement en utilisant le duo ftp / MySql (ou quelque soit votre SGBD) ce qui à mon avis est la solution la plus efficace si vous pouvez la mettre en oeuvre, ou grâce à un plugin de plus qui s’en chargera à votre place.

Personnellement j’utilise BackWPup sur une grande partie des sites que je mets en place. Cette fois encore vous aurez bientôt droit à un tutoriel complet mais ce que vous devez savoir à ce jour c’est que cette extension vous permettra de programmer des sauvegardes régulières qui pourront être transférées sur le serveur de votre choix.

Si vous avez bien sauvegardé régulièrement votre site, même en cas de piratage vous pourrez le remettre en route assez rapidement.

Coffre fort

Cette liste est loin d’être exhaustive et je vous invite d’ailleurs chaleureusement à la compléter en commentaires mais c’est pour moi la checklist de départ dont je coche les items avant de publier un site (comme vous l’avez déjà compris si vous me lisez régulièrement, Responsive Mind me sert en partie de laboratoire de test et sa configuration est moins structurée).

J’insiste sur le fait qu’il y a des centaines de façons de pirater un site internet et que la grande majorité des actions décrites ici ne tiendront pas longtemps face à une attaque ciblée, mais elles devraient vous protéger d’une bonne partie des attaques à grande échelle qui peuvent faire de gros dégâts, tout simplement parce qu’on a laissé la porte grande ouverte.


Sources :

Crédit clipart 1: http://openclipart.org/detail/35311/tango-preferences-system-network-proxy-by-warszawianka
Crédit clipart 2: http://openclipart.org/detail/169719/checklist-by-dako
Crédit clipart 3: http://openclipart.org/detail/169128/simple-electronic-safety-vault-by-eternaltyro

13 réponses

  1. […] Suivez cette checklist de 15 étapes pour sécuriser votre site WordPress et tenter de vous protéger des attaques de masse qui visent périodiquement ce CMS.  […]

  2. […] En 2013 plus d’un site internet sur 5 est fait sous WordPress, ce qui fait de ce CMS une plateforme de choix pour les développeurs de plugin mais aussi cible de choix pour tout un tas de tentatives de piratage Lire la suite →…  […]

  3. […] Comment protéger son site WordPress des attaques à grande échelle ? Découvrez sur Responsive-Mind.fr 15 astuces simples à mettre en place pour se mettre (un peu) à l'abris  […]

  4. Stef dit :

    Bonjour.
    Première visite et première impression : très bon article d’un webmaster qui a l’air de bien connaître le sujet.
    Pour ma part, je ne suis pas un grand spécialiste et même si je connaissais quelques points, j’en ai appris quelques uns, par exemple, les modifs du fichier functions.php
    Juste une question par rapport au point numéro 2 : attribuer les publications à un utilisateur fictif : suis-je en train de me tromper en croyant qu’il y a un lien entre l’utilisateur qui signe l’article et son profil Google+ (et donc mon author Rank) ? Je demande car il se peut que j’ai mal compris et fais une confusion entre plusieurs infos (je découvre seulement depuis peu les secrets et subtilités de Gogol+)
    Dans tous les cas, merci pour cet article.
    Amicalement.

  5. Renaud M.G. dit :

    Merci je suis flatté du compliment.
    Pour clarifier l’utilisation de l’utilisateur fictif, sur ce blog l’utilisateur qui signe les articles (donc moi) est bien lié à mon profil Google+, mais je ne suis pas administrateur du site. De la même façon le compte administrateur n’a jamais rien publié et n’est pas lié à un profil Google+. Ca oblige à se connecter en tant qu’administrateur pour effectuer les mises à jour, mais après 15 ans de Linux j’ai l’habitude 🙂

  6. […] Comment protéger son site WordPress des attaques à grande échelle ? Découvrez sur Responsive-Mind.fr 15 astuces simples pour sécuriser WordPress (un peu)  […]

  7. je vous recommande d utiliser l extension Wp better security pour protéger efficacement et facilement votre site Worpress .

  8. […] they admire. Planned Versions. Sécuriser son site web des attaques des pirates et hackers. Sécuriser WordPress en 15 points. En 2013 plus d’un site internet sur 5 est fait sous WordPress, ce qui fait de ce CMS une […]

  9. […] Sécuriser WordPress en 15 points. En 2013 plus d’un site internet sur 5 est fait sous WordPress, ce qui fait de ce CMS une plateforme de choix pour les développeurs de plugin mais aussi cible de choix pour tout un tas de tentatives de piratage ou autre tentative d’intrusion automatisées. […]

  10. Bonjour
    Merci pour ce tuto très complet
    Les sites worpress hébergé chez OVH rencontre un problème de compatibilité avec l extension de sécurité Acumix …
    je vous recommande d utiliser soit Itheme sécurité soit Wordfence afin de sécuriser facilement votre site WordPress.

  11. […] Dans l’article précédent, je vous avais parlé des changements qui allaient survenir sur WP Themes Pro. Veille WP. WP Marmite – Les bonnes recettes WordPress. WordPress et Référencement. WordPress. Wp codes. Sécuriser WordPress en 15 points. […]

  12. […] pas de sauvegarder le fichier modifié. Félicitations ! Sécuriser WordPress en 15 points. En 2013 plus d’un site internet sur 5 est fait sous WordPress, ce qui fait de ce CMS une […]

Laisser un commentaire

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