Sécuriser son site wordpress simplement et efficacement

10 minutes
web wordpress

Parce que "mieux vaut prévenir que guérir", il est important préparer son blog WordPress d'une éventuelle attaque.
La sécurité d'un blog WordPress, est vraiment simple à mettre en place pour se protéger.
Les pirates n'ont qu'à bien se tenir !

Un jour en voulant me connecter sur mon tout premier site, je me rend compte d'un drame : la page d'accueil avait complètement été changée.
À la place il y avait ce genre de message :

Un blog wordpress piraté

Autant vous dire que j'étais un peu perdu : que faire ? comment j'ai été piraté ? comment remédier à cette faille pour relancer le site ?
Aux travers de 5 étapes, nous allons voir comment éviter d'être hacké.
Il y a déjà deux prérequis avant de commencer. Vous devez avoir

  • un mot de passe solide
  • un ordinateur est sain

Comme on l'a vue sur l'infographie (ici) concernant la sécurité WordPress, les mises à jours sont une priorité !
Un plugin qui n'est pas à jour, c'est le Saint Graal pour une personne malintentionnée.
Dès que vous voyez une ou plusieurs mise à jour disponible, n'hésitez pas !
J'avoue que cette astuce est facile, et que vous le saviez, mais je vous garde le meilleurs pour la fin !
Chaque lundi, je passe sur tous les sites WordPress dont je suis en charge pour tout mettre à jour.
Donc je te conseille une fréquence d'une fois par semaine !

Notification de mise à jour disponible sur wordpress

Vous l'avez compris, les plugins et les thèmes sont le talon d'Achille de WordPress.
J'ai pour habitude de supprimer le superflu : fichiers, thèmes et plugins.
C'est important, supprimez les thèmes et les plugins que vous n'utilisez pas.
Puis supprimez aussi le fichier "licence.txt" "readme.html" et "wp-config-sample.php" à la racine de WordPress.
D'autant plus que le fichier readme.html contient le numéro de version de WordPress.

Contenu du répertoire wordpress

Sachez également, si vous avez beaucoup de plugins qui tournent en même temps, ça ralenti le site, et augmente le risque de piratage.
Ne téléchargez les plugins et les thèmes que sur des sources sûr, par exemple fr.wordpress.org.
Si un plugin vous fait des sauvegardes (base de donnée, logs, etc...) directement sur le serveur, supprimez les dès que c'est rapatrié chez vous.

Petite mise en bouche, mais le meilleur est pour la fin :D.
Vous pouvez analyser votre installation à la recherche de malwares ( du code ou des fichiers malicieux) avec des plugins, mais je vous le déconseille.
Autant passer par l'extérieur comme les pirates, sachant que l'idéal est d'avoir une liste des derniers fichiers modifiés.
Pour l'analyse de malware vous pouvez passer par les sites suivant :

  • Sucuri site check donne un scan de site à la recherche de malware
  • quttera.com permet de scanner différent type de site (WordPress, Joomla!, Drupal, Magento, etc...)
  • Virus Total ce site a la particularité de scanner un site, ou juste un fichier qu'il soumet à plusieurs antivirus.
    Personnellement, vu que c'est rapide et gratuit j'utilise les 3.

Pour savoir ce qu'un pirate peut avoir comme information sur votre blog, vous pouvez utiliser également WPScan.
Il s'agit d'un script écrit en python permettant d'en savoir plus sur une installation WordPress :

  • version de WordPress
  • le thème utilisé et sa version
  • les plugins utilisés et leur version
  • indique si c'est à jour ou pas
  • si c'est pas à jour, quelle type d'attaque est possible
    Un image vaut mieux que 1000 mots :

Scan wordpress à l'aide du scanner de wpscan

Il s'agit d'un scan WPScan d'un vieux blog WordPress en local disposant d'un plugin dépassé.

Enfin une partie chouette me direz-vous !!!
Il y a tout un tas de procédures (chiantes) pour sécuriser son WordPress, comme éditer le fichier htaccess, changer le préfixe des tables de la base de données, sécuriser l'espace de login, etc...
Mais j'ai trouvé un plugin super qui fait tout ça pour moi, qui ne propose pas tous les 5 minutes de prendre un compte premium, et avec une traduction française (ou en partie en tout cas).
Ce plugin c'est .... All In One WP Security & Firewall. Installez le vous verrez !!!
Je ne suis pas missionné pour parler de ce plugin, je l'ai juste découvert, et je l'ai adopté, alors je partage !
Bon il lui manque tout de même deux ou trois fonctions que j'ai décrite précédemment.

Si vous l'installez, je vous conseille de faire une sauvegarde de votre base de donnée, du fichier .htaccess, et du fichier wp-config.php avant de commencer.
Pour ceux que ça intéresse, voici rapidement ce que j'ai activé dans le plugin :

  • Paramètre > WP Version Info : supprime la balise méta générator dans le code source. En regardant le code source de la page, il est donc possible pour tout le monde de voir la version de WordPress que vous utilisez
  • Compte utilisateur > Nom d'utilisateur WP : vérifie que le nom d'utilisateur n'est pas «admin»
  • Compte utilisateur > Nom affiché : vérifie que le nom affiché n'est pas le nom d'utilisateur et donc l'identifiant de connexion.
  • Compte utilisateur > Mot de passe : mon mot de passe est super fort, il faut 3718234074674426000 année pour le cracker. Et vous ?
  • Connexion > Verrouillage de connexion : si l'utilisateur échoue 3 fois lors de sa connexion, il est bloqué pendant 5 minutes.
  • Connexion > Forcer la déconnexion : déconnecte l'utilisateur connecté au bout de 60 secondes
  • Enregistrement de l'utilisateur > Approbation manuelle : si un utilisateur s'inscrit, je dois approuver son inscription
  • Enregistrement de l'utilisateur > Captcha d'inscription : un captcha sur le formulaire d'inscription, permet d'éviter la création d'un trop grand nombre d'utilisateurs, et de saturer la base de donnée
  • Sécurité BdD > Préfixe de BdD : en cas d'injection SQL, le pirate cherchera le nom des tables. Avec un préfixe différent la tache devient très compliqué. L'avantage ici c'est que le plugin permet de changer le préfixe de toutes les tables. Je conseille de sauvegarder sa base de donnée avant par mesure de sécurité.
  • Sécurité BdD > Sauvegarde de BdD : sauvegarde la base de donnée sur le serveur et envoie une version par email. Il est possible de lancer cette opération à intervalle régulier
  • Sécurité des fichiers > Autorisations du fichier : regarde les droits des fichiers et dossiers principaux, et propose de mettre les droits adéquats
  • Sécurité des fichiers > Édition de fichier PHP : par défaut il est possible dans WordPress de modifier des fichiers PHP (thèmes, ou plugins). Pour un pirate, c'est du pain bénit
  • Sécurité des fichiers > Accès aux fichiers WP : empêche l'accès aux fichiers que j'ai conseillé de supprimé plus haut (readme.html, license.txt, wp-config-sample.php).
  • Pare-feu > Règles de base du pare-feu > Paramètres de base du pare-feu : cette fonctionnalité permet de protéger le fichier htaccess et wp-config.php, désactiver la signature serveur, limiter la taille des fichiers envoyés. Tout ça via le fichier htaccess (donc avant d'accéder au site, ce qui limite la charge).
  • Pare-feu > Règles de base du pare-feu > WordPress XMLRPC & Pingback Vulnerability Protection : si vous n'utiliser pas le XMLRPC, ni le pingback, autant le désactiver
  • Pare-feu > Règles de base du pare-feu > Block Access to Debug Log File : bloque l'accès au fichier de debug de la partie logging : wp-content/debug.log
  • Pare-feu > Règles supplémentaires du pare-feu > Liste du Répertoire des matières : par défaut, le serveur web hébergeant les sites autorise à l'utilisateur de lister le contenu des répertoires (souvent connu sous le nom de "Index Of"). Cette option l'en empêche
  • Pare-feu > Règles supplémentaires du pare-feu > Trace et Pistage : la méthode HTTP Trace peut être utiliser avec une faille XSS pour voler des cookies de session (XST). Cette option désactive la méthode HTTP Trace.
  • Pare-feu > Règles supplémentaires du pare-feu > Publication commentaire Proxy : empêche la publication d'un commentaire si l'utilisateur est derrière un proxy. J'avoue que là je sais pas trop comment ça marche, ni si c'est vraiment utile.
  • Pare-feu > Règles supplémentaires du pare-feu > Chaînes Query incorrectes : utilise le fichier htaccess pour filtrer les requêtes et empêcher les XSS
  • Pare-feu > Règles supplémentaires du pare-feu > Filtre avancé de chaînes de caractères : un peu la même chose qu'avant, mais sans passer par le fichier htaccess
  • Pare-feu > 6G Blacklist Firewall Rules > 6G Blacklist/Firewall Settings : ici j'ai tout coché, il s'agit de filtres supplémentaires appliqués sur les entrées utilisateurs
  • Pare-feu > Prévenir des Hotlinks : le hotlink c'est le fait d'afficher sur un site une image provenant de votre site
  • Brute Force > Renommer la page de connexion : très utile, car les robots des pirates cherchent "wp-login.php" très souvent
  • Brute Force > Captcha de Connexion > Réglage du Captcha du formulaire de connexion : active le captcha sur la page de connexion
  • Brute Force > Captcha de Connexion > Personnalisation des réglages du Captcha de formulaire de connexion : active le captcha sur le formulaire de connexion. Ce formulaire peut être appelé à différent endroit.
  • Brute Force > Captcha de Connexion > Mot de passe des paramètres de formulaire Captcha perdu : la traduction a un peu merdé ici. C'est l'activation du captcha sur le formulaire du mot de passe perdu. Ça empêche d'envoyer trop de mail et être blacklisté
  • Prévention du SPAM > Commentaires SPAM > Ajouter un Captcha au formulaire de commentaires : active le captcha pour le formulaire de commentaire
  • Prévention du SPAM > Commentaires SPAM > Bloquer les commentaires de spambots : comme son nom l'indique
  • Divers > Cadres : empêche un site d'avoir une iframe vers votre site
  • Divers > Users Enumeration : empêche l'utilisation du paramètre "/?author=1" pour lister les utilisateurs

Ce super plugin permet aussi de visualiser les derniers fichiers modifiés, les logs de login, les logs serveur, de mettre le site en maintenance, etc...
Bref, il a beaucoup d'atouts je trouve.

"Espérer le meilleur et se préparer au pire, c'est la règle."
Fernando Pessoa

Comme rien n'est infaillible, il faut tout de même se préparer au pire, au cas où...
Le pire, c'est perdre l'accès à l'administration, être défacé (comme ce que j'ai décris plus haut), être averti par son hébergeur que quelque chose ne tourne pas rond, etc...
Il est important de préparer plusieurs choses :

  • sauvegardes des fichier et de la de base de donnée (par exemple avec le plugin backwpup)
  • des logs côté serveur (si vous êtes sur un mutualisé, voir avec votre hébergeur)
  • des logs de login et d'erreurs de connexion (comme avec All In One WP Security & Firewall)
  • croiser les doigts
    Avec ça, pourrez remettre votre blog sur pied, et analyser d'où vient le soucis pour le corriger.
    La marche à suivre sera pour un autre article si vous le demandez.

Maintenant, vous êtes prêt pour résister à de nombreuses attaques, c'est une très bonne base.
Je vous souhaite toutefois de ne pas subir la furie de pirates passant par là, car même les plus blindés se font pirater.

Si cet article vous a aidé, n'hésitez pas à le partager, pour qu'il aide un maximum de personnes.
Vous pouvez aussi me faire un retour via les commentaires et/ou le formulaire de contact.

Le lien du scan Sucuri : https://sitecheck.sucuri.net/
Le site pour le scan Quttera : https://quttera.com/
Le site du très connu VirusTotal : https://www.virustotal.com/
le site officiel de WPScan : https://wpscan.org/
la super extension All In One WP Security & Firewall : https://fr.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
le plugin de sauvegarde de fichier de de base de donnée : https://fr.wordpress.org/plugins/backwpup/

Comment rendre WordPress plus résistant : https://codex.wordpress.org/Hardening_WordPress

Blog Comments powered by Disqus.

Article précédent Article suivant