Sécuriser WordPress après un piratage

Un site nettoyé mais pas durci se fait souvent repirater par la même faille. Voici la checklist de sécurisation à appliquer juste après le nettoyage pour fermer la porte définitivement.

Par WP-Detox 7 min de lecture

Nettoyer un site sans le durcir, c’est refermer une plaie sans désinfecter : le pirate connaît déjà le chemin par lequel il est entré, et rien ne l’empêche de revenir. La plupart des sites repiratés le sont par la même faille, quelques jours ou quelques semaines après un nettoyage bâclé. Pour vraiment sécuriser WordPress après un piratage, le nettoyage n’est que la première moitié du travail. Voici la checklist de durcissement à appliquer dans la foulée, classée par priorité.

Avant tout : assurez-vous que le site est réellement propre. Si vous n’êtes pas certain d’avoir tout retiré, suivez d’abord le guide complet pour nettoyer un WordPress piraté, puis trouvez et supprimez la moindre backdoor. Durcir un site encore infecté ne sert à rien.

Couper la porte d’entrée : accès et identifiants

C’est la priorité absolue. Dans la grande majorité des cas, l’intrusion vient d’un identifiant volé ou d’une extension vulnérable. On commence par là.

Tout mettre à jour, sans exception. Cœur de WordPress, thèmes, extensions. Une version obsolète d’un plugin populaire est la cause numéro un de compromission. Allez dans Tableau de bord > Mises à jour et passez tout en dernière version. Activez ensuite les mises à jour automatiques au moins pour les extensions critiques.

Supprimer ce qui ne sert pas. Chaque extension et chaque thème inactif reste un fichier PHP exécutable sur votre serveur, donc une surface d’attaque. Désinstallez (pas seulement désactivez) tout ce que vous n’utilisez pas. Et surtout : retirez immédiatement les extensions et thèmes nulled (versions premium piratées). Ils contiennent presque toujours du code malveillant. C’est souvent par là que tout a commencé.

Mots de passe forts et uniques partout. Changez les mots de passe de tous les comptes administrateurs, de la base de données, du FTP/SFTP et de l’accès à l’hébergement. Un mot de passe par service, généré aléatoirement, stocké dans un gestionnaire. Un mot de passe réutilisé sur plusieurs sites suffit à compromettre tout l’ensemble.

Activer la double authentification (2FA). Sur tous les comptes admin, sans discussion. Même avec un mot de passe volé, un attaquant ne peut plus se connecter. Des extensions comme WP 2FA, Two-Factor ou le module intégré à un plugin de sécurité font le travail en cinq minutes.

Régénérer les clés de sécurité (salts). Si des identifiants ont fuité, les sessions et cookies volés peuvent rester valides. Régénérer les clés invalide toutes les sessions en cours et force chacun à se reconnecter. Récupérez un nouveau jeu sur le générateur officiel de WordPress, puis remplacez le bloc correspondant dans wp-config.php :

define('AUTH_KEY',         'collez-ici-une-chaine-aleatoire-unique');
define('SECURE_AUTH_KEY',  'collez-ici-une-chaine-aleatoire-unique');
define('LOGGED_IN_KEY',    'collez-ici-une-chaine-aleatoire-unique');
define('NONCE_KEY',        'collez-ici-une-chaine-aleatoire-unique');
define('AUTH_SALT',        'collez-ici-une-chaine-aleatoire-unique');
define('SECURE_AUTH_SALT', 'collez-ici-une-chaine-aleatoire-unique');
define('LOGGED_IN_SALT',   'collez-ici-une-chaine-aleatoire-unique');
define('NONCE_SALT',       'collez-ici-une-chaine-aleatoire-unique');

Appliquer le moindre privilège. Passez en revue la liste des utilisateurs (Comptes > Tous les comptes). Supprimez les comptes inconnus, ceux des anciens prestataires, et rétrogradez tout le monde au rôle minimum nécessaire. Un rédacteur n’a pas besoin d’être administrateur. Moins il y a de comptes à privilèges élevés, moins il y a de cibles.

Réduire la surface : page de connexion et force brute

Une fois les accès assainis, on rend la vie difficile aux robots qui martèlent en permanence les pages de connexion WordPress.

Masquer la page de connexion. Tout le monde sait que l’admin se trouve sur /wp-admin et /wp-login.php. Déplacer cette page vers une URL personnalisée coupe l’essentiel des attaques automatisées. Une extension comme WPS Hide Login fait ça proprement : vous choisissez une adresse du type /mon-acces-prive et les anciennes URL renvoient une 404.

Limiter les tentatives de connexion. Bloquez une adresse IP après quelques échecs consécutifs. C’est le rempart de base contre les attaques par force brute. Limit Login Attempts Reloaded ou le module équivalent de votre plugin de sécurité suffisent. Réglez par exemple un blocage temporaire après 4 ou 5 essais ratés.

Verrouiller les fichiers

Le pirate qui obtient un point d’entrée cherche ensuite à écrire et exécuter du code. On lui retire cette possibilité.

Désactiver l’éditeur de fichiers du tableau de bord. Par défaut, un administrateur peut modifier le code des thèmes et extensions directement depuis l’interface. Si un compte admin est compromis, c’est une porte ouverte pour injecter une backdoor en un clic. Ajoutez ceci dans wp-config.php :

define('DISALLOW_FILE_EDIT', true);

Régler les droits de fichiers correctement. Des permissions trop ouvertes permettent à un processus malveillant d’écrire là où il ne devrait pas. La règle classique :

# Dossiers : 755
find . -type d -exec chmod 755 {} \;

# Fichiers : 644
find . -type f -exec chmod 644 {} \;

# wp-config.php : 600 (ou 640 si l'hébergement le demande)
chmod 600 wp-config.php

wp-config.php contient les identifiants de la base de données ; il mérite le verrouillage le plus strict que votre hébergement accepte.

Empêcher l’exécution de PHP dans les uploads. Le dossier wp-content/uploads ne doit contenir que des médias, jamais de code exécutable. Une backdoor déposée là est inoffensive si le serveur refuse d’exécuter le PHP qui s’y trouve. Créez un fichier .htaccess dans wp-content/uploads/ (serveurs Apache) :

<Files *.php>
    deny from all
</Files>

Sur Nginx, l’équivalent se règle dans la configuration du serveur en refusant l’exécution PHP sous ce chemin. Cette mesure neutralise une grande partie des backdoors, même celles qu’on aurait ratées au nettoyage.

Surveiller et pouvoir revenir en arrière

Le durcissement réduit le risque, il ne le supprime pas. Il faut détecter vite et pouvoir restaurer.

Installer un plugin de sécurité réputé. Wordfence, Sucuri Security ou Solid Security apportent un pare-feu applicatif (WAF), un scan régulier des fichiers et des alertes en cas de modification suspecte. Un seul suffit, n’en empilez pas. Lancez un scan complet juste après l’installation pour valider que le site est sain.

Mettre en place des sauvegardes automatiques et externalisées. Une sauvegarde stockée sur le même serveur que le site disparaît avec lui en cas de réinfection grave. Configurez des sauvegardes régulières (fichiers + base) envoyées vers un stockage externe : Google Drive, Dropbox, Amazon S3. UpdraftPlus ou la solution de votre hébergeur conviennent. Vérifiez de temps en temps qu’une restauration fonctionne réellement, une sauvegarde jamais testée n’en est pas une.

La routine d’entretien mensuel

Le durcissement n’est pas un événement, c’est une habitude. Un quart d’heure par mois suffit à garder un site sain :

  • Appliquer les mises à jour en attente (cœur, thèmes, extensions).
  • Lancer un scan complet avec votre plugin de sécurité.
  • Vérifier la liste des comptes utilisateurs et supprimer ceux qui n’ont plus lieu d’être.
  • Contrôler qu’une sauvegarde récente existe et est bien externalisée.
  • Jeter un œil aux journaux de connexion pour repérer toute tentative anormale.

Si votre site avait été signalé par Google, surveillez aussi sa réputation dans la Search Console le temps que tout rentre dans l’ordre. La marche à suivre est détaillée ici : enlever l’avertissement de Google.

FAQ

Faut-il vraiment changer les clés salts à chaque incident ? Oui, dès qu’il y a soupçon d’identifiants ou de sessions volés. C’est une manipulation de trente secondes qui déconnecte tout le monde et invalide les cookies détournés. Aucune raison de s’en priver.

Un plugin de sécurité remplace-t-il le durcissement manuel ? Non. Un plugin de sécurité ajoute un pare-feu et de la surveillance, mais il ne corrige pas un mot de passe faible, une extension nulled ni des permissions de fichiers trop ouvertes. Les deux sont complémentaires.

Mon site a déjà été nettoyé par un prestataire. Dois-je quand même durcir ? Si le durcissement n’était pas inclus, oui, et vite. Un nettoyage qui ne ferme pas la faille d’entrée laisse le site exposé exactement comme avant.

Chez WP-Detox, on ne se contente jamais de retirer le malware : on durcit le site dans la même intervention et on vous indique précisément la faille qui a servi d’entrée, pour qu’elle ne resserve pas. Le scan est gratuit, le nettoyage prend environ 30 minutes, c’est 149 € tout compris, avec une garantie anti-réinfection de 30 jours et un remboursement si l’opération échoue. Si vous préférez ne pas dérouler cette checklist seul, on s’en charge.

À lire ensuite