Un site WordPress est une cible facile pour les hackers si celui-ci n’a pas eu d’améliorations de sécurité (aucun plugin, aucun réglage ou aucune modification de code). Les sites WordPress sont les sites favoris des pirates et sont les plus piratés. Il est donc important de mettre en place des bonnes pratiques de sécurité sur votre site web dès sa construction et au plus tôt si celui-ci est déjà lancé.
Nous vous avions déjà présenté sur Codeur Mag quelques actions de sécurité à réaliser sur votre WordPress pour le sécuriser.
Dans ce tutoriel, nous allons voir comment renforcer au maximum votre site pour éviter de potentielles intrusions et vols de données (ou pire).
Sommaire :
De nouvelles failles sont découvertes quotidiennement dans les versions actuelles de WordPress, de vos extensions ou de vos thèmes. Ces vulnérabilités apparaissent à la suite de modifications réalisées par les développeurs lors de mises à jour de fonctionnalités ou sont d’anciennes failles jusqu’à présent non découvertes ou non corrigées.
Lorsqu’une faille est détectée par les développeurs eux-mêmes ou leurs utilisateurs, ils corrigent cette vulnérabilité au plus vite et publient une nouvelle version de WordPress, de l’extension ou du thème en question.
Même si on a l’impression que seul WordPress compte, il faut aussi penser que vos extensions ont parfois accès à votre base de données et votre thème à vos fichiers. Ne mettre à jour que WordPress serait laisser une porte ouverte aux pirates vers l’accès à votre base de données et vos fichiers.
Pour mettre à jour vos extensions, thèmes et WordPress vous avez deux solutions :
La mise à jour manuelle de vos extensions se passe dans l’onglet « Extensions » de votre menu de gauche de votre panel d’administration. Ici sont listées toutes vos extensions installées. Lorsqu’une extension nécessite une mise à jour, un bandeau de prévention apparaît sous cette extension, comme ceci :
Cliquez simplement sur « mettre à jour maintenant » pour lancer la mise à jour et l’installer automatiquement.
Rendez-vous dans l’onglet « Apparence > Thèmes » du menu latéral et cliquez sur « Mettre à jour maintenant » qui apparait dans un bandeau, cette fois-ci au-dessus du thème qui doit être mis à jour :
Si vous souhaitez gérer toutes vos mises à jour d’un seul coup, vous pouvez vous rendre dans l’onglet « Tableau de bord > Mises à jour » ou bien en cliquant sur l’icône
Sélectionnez les extensions/thèmes/traductions à mettre à jour et cliquez sur « Mettre à jour les extensions/thèmes/traductions » :
Si vous ne souhaitez pas vous préoccuper de la mise à jour de votre site vous pouvez installer une extension pour cela. Vous pourrez installer des extensions telles que :
Prenons comme exemple l’extension « Easy Updates Manager ». Après son installation et son activation, rendez-vous dans « Tableau de bord > Options des mises à jour » pour configurer le plugin.
Dans l’onglet « Général » vous pourrez :
Dans notre cas nous souhaitons activer les mises à jour automatiques, vous pourrez donc cliquer sur « Activer les mises à jour automatiques » :
Trouvez le meilleur prestataire WordPress sur Codeur.com
Vos premiers devis en 15 minutes
Gratuit et sans obligation
Déjà plus de 75 000 clients
Avoir un identifiant par défaut (admin) et un mot de passe sans complexité (pas de chiffres, pas de majuscules, pas de caractères spéciaux) est le meilleur moyen pour se faire pirater si vous n’avez pas de protection sur votre système de connexion (authentification à 2 étapes, CAPTCHA ou limitation des tentatives).
Pour cela vous allez devoir créer un nouvel utilisateur administrateur étant donné que l’on ne peut pas modifier l’identifiant d’un utilisateur sur WordPress. Suivez les étapes suivantes :
N’oubliez pas de sélectionner « Administrateur » pour le rôle. Puis cliquez sur « Ajouter un utilisateur »
Pour réussir à entrer dans votre panel d’administration, l’une des méthodes que peuvent employer les hackers est la méthode dite de force brute. Cette méthode consiste à répéter des tentatives de connexion avec des identifiants par défaut et aléatoires.
Par exemple, ils vont utiliser des chaînes de textes générés aléatoirement pour vos identifiants et mots de passe ou bien utiliser les identifiants et mots de passe les plus souvent utilisés par les utilisateurs comme « admin » par défaut pour l’identifiant et « password », « 123456 », « password123 » (etc..) pour les mots de passe qui, malgré leurs simplicités, sont toujours utilisés par certaines personnes.
Pour vous prévenir de ces attaques vous pouvez déjà mettre en place l’authentification à 2 étapes et l’utilisation d’identifiants plus complexes comme vu précédemment, mais pour aller plus loin il existe 2 autres bonnes pratiques à mettre en place :
Par défaut l’adresse pour vous connecter à votre panel d’administration sera mondomaine.fr/wp-admin. Le problème avec cette url est qu’elle est commune à tous les sites WordPress lors de leur création ce qui en fait qu’elle est connue de tous les hackers.
Des robots sont même programmés pour aller frapper aléatoirement des sites WordPress avec cette url (/wp-admin) pour essayer les identifiants les plus communs et tenter de trouver un accès à un compte administrateur.
Pour ce faire, la méthode la plus simple est d’utiliser une extension, telle que WPS Hide login, qui va vous permettre en quelques réglages seulement de modifier votre url de connexion.
Après installation de WPS Hide Login, rendez-vous dans « Réglages » puis « WPS Hide Login ». Vous aurez 2 champs saisissables. Celui qui nous intéresse est « URL de connexion ». Remplacez le login par défaut par une nouvel adresse qui ne soit pas trop commune tel que « connexion », « wp-login », « my-login ».
L’objectif est d’avoir une adresse de connexion simple à retenir pour vous mais compliqué pour les potentiels robots et hackers.
Étant donné que l’attaque de force brute consiste en la répétition de plusieurs essais de connexion, l’un des moyens les plus efficace et simple à mettre en place est la limitation du nombre de tentatives de connexion.
Les meilleures extensions pour cette fonctionnalité seront :
Prenons comme exemple l’extension Limit Login Attempts Reloaded. Après son installation et activation, rendez-vous dans « Réglages » puis « Limit Login Attempts » et suivez les étapes suivantes :
Chaque version de WordPress contient des failles de sécurité qui lui sont propres et d’autres communes à plusieurs versions. Cacher la version de votre site WordPress rendra la tâche plus difficile aux hackers de profiter des failles de sécurité d’une version précise.
En effet, ne connaissant pas votre version de WordPress, ils ne pourront pas profiter des failles connues d’une version en particulier.
Par exemple, si vous utilisez la dernière version de WordPress les failles connues de cette version sont les failles B, D et E alors que si vous utilisez une ancienne version de WordPress (ce qui n’est pas bien) les failles connues sont les failles A, B et C.
Les failles D et E ne sont pas encore apparues sur l’ancienne version alors que les failles A et C ont été corrigées sur la dernière version de WordPress. Il ne resterait potentiellement qu’une faille de connue par les hackers (la B) ce qui réduit considérablement le nombre de failles auxquelles ils peuvent s’attaquer (du moins sans perte de temps).
Pour masquer la version de WordPress, il vous suffit d’ajouter dans le fichier functions.php le code suivant :
remove_action("wp_head", "wp_generator");
Vous pouvez accéder au fichier functions.php soit par un client FTP soit dans votre panel d’administration dans le menu « Apparence > Éditeur de thème ».
Rechargez la page de votre site et vérifier que la version a bien été supprimé du code source de la page. Pour cela faites un clic droit sur votre site puis « Afficher le code source de la page » (sous Google Chrome) et ensuite effectuer une recherche sur le mot « generator » avec la manipulation CTRL + F sous Windows ou Cmd + F sous Mac OS.
Si la recherche trouve une ligne ressemblant à cela :
<meta name="generator" content="WordPress 5.4.2" />
alors la version de WordPress est toujours présente sur votre site. L’alternative sera donc de supprimer directement dans le fichier header.php la ligne de code suivante :
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
Trouvez le meilleur prestataire WordPress sur Codeur.com
Vos premiers devis en 15 minutes
Gratuit et sans obligation
Déjà plus de 75 000 clients
En tant que développeur, ces rapports peuvent vous être utile pour vous assurer le bon fonctionnement de votre site. Néanmoins, lorsque le travail du développeur est terminé, vous devriez désactivez ces rapports au plus vite car montrer les erreurs de son site à tous est une erreur énorme à ne pas commettre.
Selon votre hébergeur web, vous pourrez désactiver directement les rapports d’erreurs PHP directement via votre panneau de contrôle.
Cependant, si cela n’est pas proposé par votre hébergeur, vous pouvez les désactiver manuellement en ajoutant dans le fichier wp-config.php les lignes de code suivantes :
error_reporting(0); @ini_set(‘display_errors’, 0);
Lorsqu’un problème survient lors de la connexion, un message d’erreur peut être renvoyé par WordPress directement dans la console du navigateur.
Étant donné qu’il reste nécessaire d’afficher si une erreur se produit, vous allez cacher les messages précis des erreurs par un message « général » plutôt que de supprimer complètement les messages d’erreurs de connexion.
Pour cela, rendez-vous dans le fichier functions.php grâce à un client FTP ou directement dans le menu « Apparence > Éditeur de thème » de votre panel d’administration et ajoutez la ligne suivante :
add_filter('login_errors',create_function('$a', "return null;"));
Si vous ne souhaitez pas vous retrouver avec des fichiers corrompus ou modifiées par de potentiels pirates il existe une solution qui est de désactiver l’éditeur de fichiers et donc l’édition de fichiers à travers WordPress.
Il suffit d’ajouter la ligne de code suivante dans le fichier functions.php accessible par une connexion FTP ou directement dans l’éditeur de thème de WordPress :
define('DISALLOW_FILE_EDIT',true);
La navigation à travers votre site par les liens s’y trouvant serait catastrophique si vous n’avez pas de règles correctes dans un fichier nommé .htaccess. Ce même fichier qui permet à vos liens de fonctionner correctement peut aussi être utilisé pour améliorer la sécurité de votre WordPress.
Grâce à ce fichier, en y ajoutant quelques lignes de codes nous allons pouvoir restreindre l’accès de PHP à des dossiers spécifiques.
Sécurisez votre administration de WordPress en y laissant l’accès à certaines adresses IP seulement.
Ajoutez le code suivant dans le fichier .htaccess en remplaçant les XX.XX.XX.XXX par votre adresse IP et toutes celles qui doivent avoir un accès à la zone administrateur :
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all allow from xx.xx.xx.xxx allow from xx.xx.xx.xxx </LIMIT>
L’un des moyens aux hackers pour accéder ou corrompre votre site est d’y télécharger, à travers l’ajout de fichiers multimédias, des scripts leur permettant de leur donner un accès à votre site.
Vous pouvez corriger cette faille en bloquant l’exécution de script PHP dans le dossier des téléchargements de WordPress.
Dans le dossier « /wp-content/uploads/ », qui est par défaut le dossier où se télécharge les fichiers, créez un fichier .htaccess s’il n’existe pas déjà et ajoutez-y cette règle pour bloquer l’exécution de fichiers PHP :
<files *.php> deny from all </files>
Lorsqu’on parle des paramètres de base de WordPress on pense au fichier wp-config.php. Ce fichier est sensible et très important car est le cœur de la configuration de votre site.
Il sera donc plus que nécessaire de protéger cette cible de choix des pirates en écrivant de nouvelles règles dans le fichier .htaccess.
Ces quelques lignes, protégerons totalement votre fichier de configuration et sont donc indispensables dans le fichier .htaccess :
<files wp-config.php> order allow,deny deny from all </files>
Certains répertoires de votre site WordPress sont sensibles et il est intéressant de les cacher. Pour cela, rendez-vous dans le .htaccess de votre site et ajoutez-y la règle suivante :
Options All -Indexes
Dernier point crucial : la protection du fichier .htaccess. Malgré les règles apportées précédemment dans le fichier .htaccess, votre site peut garder quelques vulnérabilités si le fichier régissant les règles n’est pas lui-même protégé.
Il va sans dire que le protéger est donc plus qu’important. Rien de plus simple : comme auparavant, ouvrez votre fichier .htaccess et ajoutez la règle suivante pour le protéger :
<Files .htaccess> order allow,deny deny from all </Files>
Par défaut, lorsque la base de données de WordPress se créée elle aura pour préfixe « wp_ ». Comme pour toutes les configurations par défaut de WordPress ceci est un avantage pour les pirates qui sauront quoi attaquer.
Pour éviter des attaques sur votre base de données (telles que les injections SQL) il va être nécessaire de modifier ce préfixe. Selon votre situation la modification sera plus ou moins simple.
Au lancement de WordPress, plusieurs étapes de configurations vous seront proposées. Dans l’une d’entre elles vous aurez un champ « Préfixe des tables » ayant par défaut la valeur « wp_ ». C’est ce champ là que vous devrez modifier pour changer le préfixe de votre base de données.
La première étape, qui est la plus simple, est de commencer par modifier le préfixe des tables dans le fichier wp-config.php de votre WordPress.
Par défaut le préfixe de table sera « wp_ » (si ce n’est pas le cas c’est que votre préfixe de table a déjà été modifié, vous n’avez alors pas besoin de le modifier à nouveau) :
Modifiez la valeur de « $table_prefix » par celle de votre nouveau préfixe, par exemple :
Sauvegardez le fichier wp-config.php et passez à l’étape 2.
Il va donc falloir mettre à jour le nom de ces tables avec le nouveau préfixe que vous venez de définir.
Dans une base de données classique sous WordPress, vous aurez 12 tables. Vous pouvez les renommer grâce à des requêtes SQL pour aller plus vite.
Pour cela, rendez-vous dans votre base de données avec phpMyAdmin (par exemple) et rendez-vous dans une console pour y exécuter des requêtes SQL (dans notre exemple nous utiliserons phpMyAdmin).
Copiez et collez les requêtes suivantes en remplaçant le préfixe « 80hy_ » par votre nouveau préfixe :
RENAME table `wp_commentmeta` TO `80hy_commentmeta`; RENAME table `wp_comments` TO `80hy_comments`; RENAME table `wp_links` TO `80hy_links`; RENAME table `wp_options` TO `80hy_options`; RENAME table `wp_postmeta` TO `80hy_postmeta`; RENAME table `wp_posts` TO `80hy_posts`; RENAME table `wp_terms` TO `80hy_terms`; RENAME table `wp_termmeta` TO `80hy_termmeta`; RENAME table `wp_term_relationships` TO `80hy_term_relationships`; RENAME table `wp_term_taxonomy` TO `80hy_term_taxonomy`; RENAME table `wp_usermeta` TO `80hy_usermeta`; RENAME table `wp_users` TO `80hy_users`;
Puis cliquez sur le bouton « Exécuter » (sous phpMyAdmin) pour exécuter les requêtes et renommer les tables :
Certaines valeurs devront être mises à jour si elles existent dans votre base de données.
Pour vérifier qu’elles existent vous devrez exécuter des requêtes pour rechercher ces valeurs dans les tables « wp_options » et « wp_usermeta » (préfixe à changer avec votre nouveau préfixe).
Retournez dans la console SQL et copiez, collez et exécutez dans un premier temps la requête SQL :
SELECT * FROM `nouveau-prefixe_options` WHERE `option_name` LIKE '%wp_%';
Si des résultats s’affichent, modifiez dans la colonne « option_name » toutes les valeurs ayant un préfixe « wp_ » par la même valeur avec votre nouveau préfixe à la place.
Maintenant, effectuez les mêmes actions pour la table « usermeta » en exécutez la requête SQL suivante :
SELECT * FROM ` nouveau-prefixe_usermeta` WHERE `meta_key` LIKE '%wp_%'
Les valeurs à modifier se trouveront cette fois-ci dans la colonne « meta_key ».
Assurez-vous également que votre certificat SSL est bien activé et que votre WordPress est en HTTPS ! Sinon, suivez ce tutoriel.
Sécuriser son site WordPress est indispensable pour votre entreprise. Si vous avez suivi et mis en pratique tous les conseils de ce guide alors votre site web aura une sécurité accrue et sera plus difficile à pirater.
Cependant, si vous n’arrivez pas à réaliser certaines des étapes de ces bonnes pratiques, n’hésitez pas à poster une annonce gratuite sur Codeur.com pour trouver rapidement l’aide d’un développeur WordPress freelance qui pourra vous aider.