Comment sécuriser un site WordPress en 2024 ?


Le piratage de WordPress est un sujet d’inquiétude pour certains éditeurs de sites et si vous avez choisi ce CMS pour votre projet, vous devriez au moins vous poser la question : comment sécuriser un site WordPress en 2024 ?

En effet, si WordPress est une plateforme très populaire pour créer un site, elle est aussi exposée aux risques de hacking car sa structure reste la même pour tout le monde. Que votre site soit gros ou petit, connu ou pas, il comportera des dossiers qui s’appellent “wp-admin”, “wp-content”, “wp-includes”, des plugins, une page d’accès à l’administration, etc. Des similitudes entre sites qu’un pirate peut tenter d’exploiter.

Comme tout risque, on y pense hélas souvent le jour où l’on se fait pirater pour la première fois… Alors, si cela vous est arrivé et que vous souhaitez repartir sur de bonnes bases ou si vous faites partie des (rares) personnes à anticiper les choses, ce guide vous donne de bonnes pratiques pour sécuriser un site WordPress.

Qui peut vouloir pirater mon site WordPress ?

Beaucoup d’éditeurs de sites ou de blogueurs imaginent qu’il faut être très connu et influent pour être victime d’un piratage. On pense aussi parfois que le piratage est causé par des personnes qui souhaitent vous nuire.

En réalité, la plupart des situations de piratage correspondent à des attaques en série, menées à grande échelle. Des individus mal intentionnés vont par exemple cibler tous les sites qui utilisent un plugin particulier qui présente une faille de sécurité et vont essayer d’exploiter cette faille pour s’introduire dans votre site.

Pour quoi faire ? La plupart du temps, le piratage de WordPress a des motivations financières. Une étude de Verizon en 2023 montrait d’ailleurs que 97% des menaces étaient motivées par l’appât du gain : récupérer des informations confidentielles pour les revendre, obtenir un accès à des informations bancaires, chiffrer l’accès aux données puis formuler des demandes de rançon…

Dans d’autres cas plus minoritaires, le piratage a pour but de prendre le contrôle de votre site pour l’utiliser dans des activités illégales : mener des cyberattaques, espionner des entreprises, miner des cryptomonnaies en “volant” les ressources de votre serveur…

Enfin, il peut s’agir d’une volonté de nuire, par plaisir ou par “hacktivisme” (effectuer un acte militant à travers ce piratage) mais cela reste une situation moins fréquente.

Vous l’aurez compris, ce qui compte pour les hackers n’est pas forcément votre identité mais plutôt la valeur de vos données ou la possibilité d’exploiter votre site pour mener des actions illicites.

Pensez toujours à sécuriser votre site, si petit et modeste soit-il à vos yeux !

Piratage de WordPress : apprendre à sécuriser son blog
Comment sécuriser un site WordPress face au risque de piratage ?

Passons maintenant à des conseils pour sécuriser un site WordPress en 2024.

1. Maintenir le site à jour

Je croise encore souvent dans mon métier des éditeurs de sites qui pensent qu’une fois le site créé, on est tranquille ! Ils refusent de prendre un contrat de maintenance avec un webmaster, estiment qu’ils vont se débrouiller… et parfois, cela débouche sur des problèmes : au mieux, des bugs et un site qui ne fonctionne plus comme il le devrait ; au pire, un piratage.

Gardez en tête qu’un site WordPress a besoin d’être mis à jour de manière régulière et réactive, ce qui inclut :

  • Mettre à jour les extensions que vous utilisez afin d’utiliser la dernière version disponible : parfois, les mises à jour des plugins se contentent de réparer des bugs mineurs mais parfois, elles corrigent aussi des failles de sécurité qui ont été signalées par des utilisateurs. Continuer à utiliser un plugin “dépassé”, c’est s’exposer à ce qu’un pirate utilise ces failles ;
  • Mettre à jour WordPress lui-même lorsqu’une nouvelle version sort, qu’il s’agisse d’une version majeure ou d’une mise à jour plus mineure ;
  • Mettre à jour la version de php utilisée (ce qui se fait en général via le site de votre hébergeur) : cela permet d’avoir une version bien suivie qui intègre les évolutions les plus récentes pour contrer les hackers.

On peut attendre un jour ou deux pour installer les mises à jour afin de voir si certains utilisateurs signalent un problème mais mieux vaut les faire rapidement. Dans le cas de php, des tests peuvent être nécessaires pour vérifier que tous les plugins prennent bien en charge la dernière version en date.

2. Faire évoluer le pool de plugins utilisés si nécessaire

Au fil des années, certaines extensions WordPress peuvent devenir obsolètes : elles ne sont plus “suivies” par leur créateur donc plus mises à jour, on identifie des failles de sécurité mais aucune correction n’est apportée, etc.

Le répertoire des extensions WordPress affiche cette mise en garde sur les extensions susceptibles d’être concernées : “Cette extension n’a pas été testée avec plus de trois mises à jour majeures de WordPress. Elle peut ne plus être maintenue ou supportée et peut avoir des problèmes de compatibilité lorsqu’elle est utilisée avec des versions de WordPress plus récentes”.

Message sur un plugin non testé
Message sur un plugin non testé

Je vous conseille donc, de temps en temps, de faire le tour des extensions que vous utilisez en allant sur le répertoire des plugins et en vérifiant qu’elles sont toujours proposées et mises à jour.

3. Supprimez les extensions inutilisées

Il peut arriver que l’on désactive temporairement un plugin pour faire des tests mais cela doit rester temporaire. Mieux vaut supprimer les extensions que vous n’utilisez pas.

4. Optez pour un nom d’utilisateur personnalisé

Évitez le banal “admin” comme nom d’utilisateur pour l’administrateur de votre site et privilégiez un nom personnalisé.

La manière la plus simple d’effectuer ce changement est d’aller dans le menu “Utilisateurs” de WordPress puis “Ajouter”. Créez votre nouvel identifiant personnalisé, par exemple “SusAuxPirates”, un mot de passe compliqué, et donnez-lui le rôle d’administrateur, comme sur cet exemple :

Créer un nouvel utilisateur WordPress

Ensuite, reconnectez-vous à WordPress avec ce nouvel identifiant. Allez dans le menu Utilisateurs > Tous les utilisateurs. Cochez votre ancien compte “admin” puis choisissez “Supprimer”.

Attention : sur la page de suppression, on vous demande “Que faire du contenu ayant cet utilisateur pour propriétaire ?”, pensez à choisir “Attribuer tout le contenu à : SusAuxPirates”. Sinon, tous les articles écrits avec votre ancien compte seront supprimés de votre site… alors que si vous les attribuez au nouvel utilisateur, ils seront rattachés au nouveau compte.

Il existe d’autres moyens de connaître l’identifiant du compte administrateur mais ils impliquent souvent de regarder manuellement le code du site WordPress, ce qui arrive rarement lors des situations courantes de piratage.

Guide pour sécuriser son site WordPress

5. Optez pour un mot de passe très complexe

L’attaque par force brute reste en 2024 l’une des formes de piratage de WordPress les plus courantes : le pirate utilise un logiciel pour tester différents mots de passe de manière automatique. Pour vous donner une idée, un ordinateur personnel peut tester jusqu’à quelques millions de mots de passe par seconde avec ce type d’attaque… On croit parfois être à l’abri mais regardez ces chiffres. Il faut…

  • 3 secondes pour deviner un mot de passe de 9 caractères en minuscules, même si les lettres ne veulent rien dire, comme “aoegjsnfk”.
  • 24 minutes pour deviner un mot de passe de 9 caractères mélangeant majuscules et minuscules, comme “JpzmEcZAd”.
  • 2h pour trouver un mot de passe de 9 caractères avec nombres, majuscules et minuscules, comme “2Ufed78Lm”.
  • 6h pour trouver un mot de passe de 9 caractères avec nombres, majuscules, minuscules et symboles, comme “5Iu#?Sa?m”.

En revanche, il faudrait…

  • 1 million d’années pour deviner un mot de passe de 14 caractères mélangeant majuscules, minuscules, chiffres et symboles.
  • 17 000 ans pour trouver un mot de passe de 14 caractères mélangeant majuscules et minuscules.

Vous l’aurez compris, optez pour un mot de passe long et complexe.

De l’extérieur, une attaque par force brute peut être totalement invisible. Pour la voir, il faut aller dans les logs de son site : les logs sont des fichiers qui enregistrent en temps réel TOUT ce qui se passe sur votre site. Quelles pages sont consultées, quels fichiers sont téléchargés, etc.

La plupart du temps, on ne va pas lire les logs car ils sont plutôt indigestes. Cependant, quand on suspecte un problème sur son site, les logs peuvent aider à comprendre l’origine du dysfonctionnement. Pendant une attaque par force brute, voici à quoi les logs ressemblent :

Piratage de WordPress : attaque par force brute

La même adresse IP (ici, 198.144.36.230), c’est-à-dire le même ordinateur, essaie de manière répétée d’accéder au fichier wp-login.php qui permet de se connecter à l’administration du blog. Si votre mot de passe est très complexe, il sera presque impossible de le deviner avec ce type d’attaque. Vous pouvez définir un nouveau mot de passe en allant dans la rubrique Utilisateurs > Votre profil de votre site WordPress.

6. Cachez la version de vos plugins et de votre site WordPress

Les pirates ciblent souvent les sites qui n’ont pas fait les dernières mises à jour. Or, le numéro de version d’un plugin apparaît dans le code de vos pages, n’importe qui peut donc le consulter. Si nous le cachons, nous compliquerons donc la tâche de toute personne essayant de vous attaquer par ce biais !

Facile : supprimer le fichier “readme.html”

Connectez-vous sur le FTP de votre site et supprimez le fichier “readme.html”. Il n’est pas nécessaire au fonctionnement de votre site et contient le numéro de version de WordPress.

Moins facile : modifier le fichier functions.php de votre thème

Le fichier functions.php d’un thème WordPress contrôle beaucoup de choses : les options de personnalisation par exemple. Il se trouve dans le dossier wp-content > themes > votretheme > functions.php. Nous allons le modifier et ajouter du code à l’intérieur. Notez qu’il est préférable d’effectuer ces personnalisations sur un thème enfant et non sur le thème principal du site, car elles risquent d’être effacées si vous le mettez à jour.

Si le fichier se termine par la balise ?>, mettez votre code avant cette balise. Si le fichier ne se termine pas par cette balise, copiez simplement votre code au niveau de la dernière ligne. Il ne faut laisser aucune ligne blanche à la fin du fichier functions.php : si vous constatez qu’après la balise ?> il y a une ligne vide, sans code, effacez-la.

Ajoutez ce code :

remove_action("wp_head", "wp_generator"); 
function supprimer_versions( $src ) {
if ( strpos( $src, 'ver=" . get_bloginfo( "version' ) ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'supprimer_versions',999);
add_filter( 'script_loader_src', 'supprimer_versions',999);

La première ligne permet de supprimer un morceau de code qui apparaît sur tous les sites WordPress avec le numéro de version :
<meta name="generator" content="WordPress 6.4" />

Les lignes suivantes permettent de masquer les numéros de version des fichiers CSS et JS, si toutefois ils existent.

Retrouvez sur No Tuxedo des conseils plus détaillés pour modifier le fichier functions.php.

7. Masquez l’administration de WordPress (wp-admin)

Quand vous vous connectez à votre site, vous entrez en général l’adresse nomdemonsite.com/wp-admin/ (ou /wp-login/). Il est possible de faire en sorte que cette page renvoie une erreur pour le visiteur lambda… et de créer une “page secrète” qui vous servira de page de connexion.

Comprendre la stratégie

Imaginez la situation suivante : vous devez récupérer un papier TRÈS important dans une administration… et on vous ordonne d’aller le chercher au bureau 777. Évidemment, il y a 2h de file d’attente pour y accéder. Mais ô magie, vous recevez soudain un SMS qui vous dit “Tu peux aussi aller chercher le papier au bureau 501”. Miracle, il n’y a personne !

Nous allons faire la même chose :

  • Le fichier wp-login.php, c’est le bureau 777 : tout le monde sait que c’est par là qu’on se connecte à WordPress.
  • Nous allons créer un message qui va dire à votre site “non non, on peut aussi se connecter à WordPress à un autre endroit, grâce au fichier topsecret.php !”
  • Nous allons créer le fichier topsecret.php, qui est le fameux “bureau 501”.

Un seul pré-requis pour que cette méthode fonctionne : votre hébergeur Internet doit vous permettre d’utiliser “mod_rewrite” (consultez la FAQ de l’hébergeur ou posez la question au support technique).

Etape 1 : indiquer l’emplacement du fichier mystère

Quand vous vous connectez sur le FTP de votre site, vous allez en principe voir un fichier qui s’appelle “.htaccess”.

  • S’il n’est pas déjà là, il vous suffira de le créer avec le Bloc-Notes de Windows par exemple ou une application similaire (Notepad++, etc). Il faudra ensuite le mettre en ligne à la racine de votre blog, c’est-à-dire au même endroit que les fichiers qui s’appellent “wp-activate.php”, “wp-blog-header.php”, etc. Le point avant le nom du fichier est important. De même, c’est un fichier qui n’a pas d’extension.
  • Si le .htaccess existe déjà, faites un clic droit dessus puis cliquez sur “Afficher/Editer” ou similaire (l’intitulé peut varier selon le logiciel que vous utilisez).
    Modifier htaccess

A la fin de ce fichier, entrez le code suivant :

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*cookie\-admin\-blog=494198580.*$ [NC]
RewriteRule wp-login.php - [F]
</ifmodule>

Enregistrez ensuite ce fichier .htaccess pour qu’il remplace le précédent.

Etape 2 : créer le fichier mystère

Avec le Bloc-Notes de Windows ou une application similaire (Notepad++ pour Windows, Fraise pour Mac, etc), créez un nouveau fichier… et copiez-y ce code :

<?php
setcookie("cookie-admin-blog", 494198580);
header('Location: wp-login.php');
?>

Enregistrez le fichier sous un nom que vous seul connaîtrez. Il doit se terminer par l’extension “.php”. Par exemple, “topsecret.php”. Ensuite, mettez ce fichier sur le FTP au même endroit que le fichier .htaccess.

Désormais, pour vous connecter à votre blog, il suffira d’aller à l’adresse nomdemonblog.com/topsecret.php ! Toute personne extérieure essayant de se connecter à votre administration de manière classique aura un message d’erreur.

Guide pour sécuriser son site WordPress

8. Ajoutez quelques protections contre le cross-site scripting et le sniffing

Sur un site hébergé sur un serveur Apache, vous pouvez également ajouter ce code au fichier .htaccess :

# INSTRUCTIONS SECURITE BLOG

<IfModule mod_headers.c>
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block" 
</IfModule>

Options All -Indexes

<files wp-config.php>
order allow,deny
deny from all
</files>

Header set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; style-src 'self'; img-src 'self'; media-src 'none'; frame-src 'none'; font-src 'self'; connect-src 'self'"

Il permet de protéger votre site contre d’autres formes d’attaques et comportements potentiellement problématiques :

  • On modifie les en-têtes Set-Cookie pour ajouter les attributs HttpOnly et Secure. HttpOnly empêche l’accès aux cookies via JavaScript, ce qui réduit le risque de vol de cookies par des scripts malveillants (comme les attaques XSS). Secure indique que les cookies ne doivent être envoyés que via des connexions sécurisées (HTTPS).
  • On empêche les navigateurs de réaliser une détection automatique du type MIME, ce qui peut prévenir certains types d’attaques, comme les attaques par injection de contenu.
  • On active une protection contre les attaques cross-site scripting proposée par certains navigateurs.
  • On empêche d’afficher le contenu des répertoires sur le serveur.
  • On interdit l’accès au fichier wp-config.php à tous les utilisateurs.
  • On ajoute une politique de sécurité pour contrôler les ressources que le navigateur est autorisé à charger pour une page donnée. Cela aide à prévenir les attaques type Cross-Site Scripting (XSS) et les injections de données.

9. Vérifiez les permissions des fichiers sur votre serveur

Vous pouvez modifier les permissions (chmod) des fichiers les plus sensibles, comme wp-config.php. Sur WinSCP par exemple, il faut faire un clic droit sur le fichier puis choisir “Propriétés” et cocher uniquement les cases “R” (“lecture seule”), comme ceci :

Permissions du fichier
Permissions du fichier

Ça empêchera toute modification extérieure du fichier, à moins de remettre les permissions sur W (“écriture”) et/ou X (“exécution”).

10. Installez un plugin de sécurité WordPress

Pour bien sécuriser WordPress en 2024, il est utile d’installer un plugin dédié à la sécurité, qui va surveiller votre site en temps réel pour détecter et bloquer les comportements suspects.

Il existe un plugin très réputé, Hide My WP. Pour un budget raisonnable, il offre à la fois des fonctionnalités de surveillance et de détection des attaques mais aussi un puissant antispam et surtout, il permet de cacher totalement le fait que vous utilisiez WordPress.

Ce plugin est tellement performant que lorsque vous testez le site avec un outil comme Wappalyzer, qui détecte le CMS utilisé sur un site, Wappalyzer est incapable d’indiquer que le site est fait avec WordPress.

Il existe aussi 2 plugins de référence, très complets :

  • Wordfence Security – Ce plugin surveille votre site en temps réel. Il peut vous signaler les modifications des fichiers de votre administration, détecter le code suspect, bloquer automatiquement les tentatives de connexion répétées à votre administration ou les spammeurs, permettre une double authentification avec votre mobile. Il permet également de réaliser un scan complet de son site WordPress pour détecter un éventuel piratage.
  • Solid Security (anciennement iThemes Security) – Ce plugin est une bonne alternative à Wordfence. Il permet également de surveiller un site pour détecter les modifications suspectes et bloquer les tentatives d’intrusion, de changer l’adresse des pages de connexion (login, admin) et de renommer le compte administrateur.

J’ai rédigé un tutoriel complet pour paramétrer le plugin Wordfence, je vous conseille de le lire pour bien effectuer les réglages de l’extension.

11. Activez la double authentification (2FA)

La double authentification (ou “Two-Factor Authentication” = 2FA) exige comme son nom l’indique d’utiliser deux méthodes différentes pour accéder à un site, par exemple entrer son mot de passe ET confirmer la connexion avec un code reçu par SMS. C’est en 2024 un excellent moyen de se prémunir contre les vols de mots de passe en disposant d’une couche de sécurité supplémentaire.

L’option est proposée par la plupart des plugins de sécurité comme Wordfence et peut aussi être activée via des plugins dédiés comme WP 2FA.

Informatique

12. Ajoutez un pare-feu applicatif (WAF) à WordPress

Un pare-feu applicatif (ou “WAF” pour “Web Application Firewall”) est un système qui protège un serveur contre certaines attaques informatiques, en surveillant le trafic entre une application web et Internet et en bloquant ce qui lui paraît malveillant.

Wordfence propose un WAF, tout comme d’autres plugins et services comme Sucuri, Ninja Firewall ou encore Cloudflare.

13. Changez le préfixe de table par défaut dans la base de données

Les données clés de WordPress sont stockées dans une base de données et organisées dans des tables, chaque table stockant un type d’information (les articles, les commentaires, les paramètres, les profils d’utilisateurs, etc).

Par défaut, le nom des tables commence par wp_. Je vous conseille de modifier ce préfixe par défaut dès l’installation de votre site. Si vous le faites a posteriori, il faudra penser à modifier la ligne “$table_prefix = ‘wp_’;” du fichier wp-config.php sur votre serveur mais aussi à modifier dans la base de données l’ensemble des références aux anciens préfixes par défaut.

14. Vérifiez le certificat SSL de votre site

C’est sans doute une évidence quand on veut sécuriser un site WordPress en 2024 mais il est primordial que votre site soit accessible en HTTPS, ce qui permet aux données d’être chiffrées pendant qu’elles transitent entre Internet et votre serveur. Il est donc important de vérifier qu’un certificat SSL valide est bien en place sur votre site, que le trafic est bien redirigé dans son intégralité vers la version HTTPS des pages.

15. Faites régulièrement des sauvegardes de votre site

Il s’agit plus d’une mesure de protection de vos contenus que d’une mesure de prévention du piratage à proprement parler… mais il est primordial d’effectuer des sauvegardes régulières de votre site.

En effet, la plupart du temps, au-delà des éventuels préjudices en termes de vol de données, un piratage vous fait surtout perdre des semaines voire des mois de travail en rendant votre site inaccessible. On peut nettoyer un site piraté mais il est parfois impossible de restaurer son contenu si on ne dispose pas d’une sauvegarde “saine”.

La sauvegarde doit porter sur deux aspects :

  • La base de données : c’est dans cette base de données que sont stockés les commentaires, le texte de vos articles, vos réglages personnalisés, etc.
  • Les fichiers : ce sont par exemple les photos que vous avez mises en ligne, les fichiers de votre thème, etc.

En général, on sauvegarde les fichiers et la base de données à des fréquences différentes.

  • La base de données s’enrichit à chaque nouvelle publication d’article ou de commentaires et elle est très rapide à sauvegarder, vous pouvez donc le faire souvent (une fois par semaine voire plus par exemple si vous publiez souvent).
  • Le transfert de fichiers est plus long : vous pouvez donc le faire moins fréquemment (1 ou 2 fois par mois par exemple).

Vous avez plusieurs méthodes à votre disposition pour effectuer une sauvegarde mais la plus simple consiste à l’automatiser à l’aide d’un plugin de backup comme UpdraftPlus : il gère à la fois les sauvegardes de fichiers et celles de la base de données, est régulièrement mis à jour et très bien noté par ses utilisateurs. Vous pouvez retrouver sur No Tuxedo un tutoriel pour installer et paramétrer UpdraftPlus.

Certains hébergeurs proposent une sauvegarde automatique des fichiers et de la base de données à intervalle régulier. Ça n’empêche pas de faire soi-même des sauvegardes de temps en temps mais c’est un gage de tranquillité d’esprit.

Si votre hébergeur le propose, il est généralement possible de restaurer cette sauvegarde en un clic depuis l’administration de votre compte. Souvent, plusieurs jeux de sauvegarde sont conservés, de telle sorte que si la dernière sauvegarde en date correspond à une version piratée du site, vous pouvez choisir une sauvegarde antérieure qui est saine. Bien entendu, si elle a été piratée, c’est que cette version saine devait présenter des failles, il sera donc indispensable de la sécuriser très rapidement.

Guide pour sécuriser son site WordPress

Faire le bilan pour bien sécuriser son site WordPress en 2024

Ce guide devrait vous permettre de donner à votre site WordPress une protection de base relativement efficace contre la majorité des situations de piratage en 2024.

La sécurité informatique passe aussi par de bonnes pratiques auxquelles on ne pense pas toujours : par exemple, si vous êtes amené à donner accès à l’administration de votre site à des tierces personnes, mieux vaut créer un compte utilisateur séparé distinct de celui que vous utilisez au quotidien et lui donner des droits appropriés. Vous pouvez aussi publier vos articles depuis un compte ayant le rôle “Editeur” au lieu de les publier via un compte “Administrateur”.

De même, pensez à choisir un mot de passe bien sécurisé pour le FTP de votre site. Un pirate peut aussi s’introduire par là (oui, ces créatures sont pleines de ressources !).

Sachez enfin qu’il existe des outils et solutions propres à WordPress pour auditer la sécurité d’un site, par exemple WPScan. Dans le cas d’un site d’entreprise d’une certaine taille ou dans un secteur sensible, mieux vaut faire appel à un professionnel de la cybersécurité pour mener des “pen tests” (tests de pénétration, qui consistent à essayer de repérer les failles d’un système pour les exploiter). Vous mettrez ainsi toutes les chances de votre côté de bien gérer cet aspect essentiel d’un projet web.



Source link