Catégories : WordPress

Comment protéger votre site WordPress des attaques malveillantes ?

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).

Les bonnes pratiques qui suivent sont parfois assez techniques et ne s’adressent pas forcément à des personnes débutantes avec WordPress. Faites attention de bien suivre pas à pas chaque étape des pratiques de sécurité pour ne pas, malencontreusement, nuire à votre WordPress.

 

1. Mettre à jour votre WordPress, vos extensions et thèmes

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.

Rester à jour sur vos versions vous permettra de bénéficier des derniers correctifs contre les failles de sécurités, cela empêchera les hackers de profiter des nouvelles failles pour accéder à votre site web.

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 :

  • Mettre à jour manuellement
  • Ou automatiquement avec une autre extension

 

Mises à jour manuelles

Extensions

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.

Thèmes

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 :

Tout mettre à 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   (sous ordinateur et tablette seulement) pour accéder à l’ensemble des mises à jour disponibles (WordPress, extensions, thèmes, traductions).

Sur cette page vous pourrez mettre à jour en quelques clics seulement, votre version de WordPress et tous les autres composants nécessitant une mise à jour.

Sélectionnez les extensions/thèmes/traductions à mettre à jour et cliquez sur « Mettre à jour les extensions/thèmes/traductions » :

 

Mises à jour automatiques

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 :

  • sélectionner pour chaque mise à jour si vous voulez une mise à jour manuelle,
  • désactiver les mises à jour,
  • rendre les mises à jour automatiques,
  • désactiver les mises à jour automatiques
  • ou choisir au cas par cas pour les extensions, thèmes et traductions.

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

Trouver un expert WordPress

2. Utiliser des identifiants de connexion complexes

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).

Si vous vous trouvez dans ce cas, nous vous conseillons fortement de changer votre identifiants et mot de passe.

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 :

  1. Rendez-vous dans l’onglet « Utilisateurs » et cliquez sur le bouton « Ajouter »

  1. Renseignez les informations du nouvel utilisateur. Pour l’identifiant pour le rendre plus complexe vous pouvez par exemple mettre vos initiales suivies de « admin » puis un chiffre.
Le mot de passe doit apparaître avec une protection « Forte ». Au mieux, gardez celui qui est généré par WordPress, sinon ajoutez des majuscules, minuscules, chiffres et caractères spéciaux à votre mot de passe.

N’oubliez pas de sélectionner « Administrateur » pour le rôle. Puis cliquez sur « Ajouter un utilisateur »

 

  1. Reconnectez-vous avec les identifiants du nouvel utilisateur précédemment créé.
  2. Retournez dans l’onglet « Utilisateur », sélectionnez votre ancien utilisateur administrateur (admin par défaut) et supprimez-le.

 

 

3. Protéger votre système de connexion contre les abus

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.

En plus de potentiellement découvrir un accès avec une bonne combinaison identifiant/mot de passe, les hackers utilisent des ressources sur votre serveur ou hébergement lors de telles attaques.

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 :

  • Changer votre adresse de connexion au panel d’administration
  • Limiter le nombre de tentatives de connexion

Changer l’url de connexion à l’administration

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.

En changeant votre adresse de connexion, vous réduirez déjà considérablement le nombre d’attaques envers votre site web.

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.

Limiter le nombre de tentatives de connexion

É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.

Définissez un nombre de tentatives pour qu’au bout de ce nombre d’essai échoué, l’utilisateur qui tente de se connecter soit bloqué.

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 :

  1. Cliquez sur l’onglet « Paramètres »
  2. Ouvrez le menu « Local Worker » et renseignez un nombre de tentatives autorisées (3 est correct) puis la durée du verrouillage (mettez au minimum 20 minutes).
  3. N’oubliez pas de sauvegarder vos paramètres avec le bouton « Save Settings » en dessous des paramètres.

 

4. Masquer la version de WordPress

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'); ?>" />
Après sauvegarde du fichier, la version de votre WordPress devrait avoir définitivement disparu du code source de la page.

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

Trouver un expert WordPress

 

5. Désactiver les rapports d’erreurs PHP

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);

 

6. Cacher les erreurs de connexion

Lorsqu’un problème survient lors de la connexion, un message d’erreur peut être renvoyé par WordPress directement dans la console du navigateur.

Ce message peut être très explicite sur le problème et mettre potentiellement en avant une faille de sécurité dans votre système de connexion.

É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;"));

 

7. Désactiver l’édition des fichiers

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);

 

8. Utiliser le .htaccess pour restreindre l’accès à votre site

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.

Réalisez une sauvegarde de votre fichier .htaccess avant d’y effectuer de quelconques modifications.

 

Restreindre l’accès à la zone d’administration de WordPress

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>

 

Désactiver l’exécution de PHP dans les répertoires sensibles de votre site

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>

 

Protéger le fichier de configuration de WordPress

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>

 

Cacher les dossiers sensibles

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

 

Protéger le fichier .htaccess

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>

 

9. Modifier le préfixe par défaut de la base de données de WordPress

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.

 

Modification du préfixe sur une nouvelle installation de WordPress

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.

Ne changez pas le préfixe pour un nouveau préfixe trop similaire tel que « wp1_ », essayez de changer le préfixe par un nouveau n’ayant aucun rapport, par exemple « 80hy_ ».

 

Changer le préfixe sur une installation existante de WordPress

Cette situation est plus compliquée car votre base de données existe déjà et contient probablement de nombreuses données. Il va donc falloir réaliser chaque étape avec attention car une mauvaise manipulation sur une base de données existante peut la rendre inutilisable.

1. Modifier le préfixe dans wp-config.php

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.

2. Mettre à jour toutes les tables de la base de données

Une table est une « catégorie » de votre base de données, elle stocke plusieurs données d’un même genre (les commentaires, les utilisateurs, les articles, etc…).

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`;
Si vous avez plus de 12 tables dans votre base de données (onglet « Structure »), vous devrez les ajouter à la suite en suivant la même structure de requête « RENAME table `ancien-prefixe_nom-de-la-table` TO `nouveau-prefixe_nom-de-la-table` ».

Puis cliquez sur le bouton « Exécuter » (sous phpMyAdmin) pour exécuter les requêtes et renommer les tables :

3. Vérifier les tables d’options et de usermeta

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 ».

Après avoir suivi correctement toutes ces étapes vous pouvez essayer de retourner sur votre site pour vérifier le bon fonctionnement de ce dernier. Si tout fonctionne bien, bravo à vous, vous venez de réaliser la modification du préfixe de votre base de données avec succès ?

 

Conclusion

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.

Partager
Tags : Tuto