La très grande majorité des sites WordPress compromis le sont par une faille déjà corrigée depuis des mois, ou par un mot de passe faible. Sécuriser un WordPress tient donc moins à des réglages exotiques qu’à quelques habitudes tenues dans la durée.
La mesure la plus efficace, de loin
Maintenir WordPress, les extensions et les thèmes à jour. Aucune des autres mesures de cette page ne compense un site laissé sans mise à jour.
Les commandes ci-dessous s’exécutent avec WP-CLI, disponible sur votre hébergement via l’accès SSH (voir l’article dédié à wp-cli). Tout ce qui est décrit ici se fait aussi depuis l’administration WordPress.
- Mettre à jour, systématiquement
wp core update
wp plugin update --all
wp theme update --all
Pour ne plus avoir à y penser, activez les mises à jour automatiques :
wp plugin auto-updates enable --all
wp theme auto-updates enable --all
Gardez également une version de PHP supportée : une version en fin de vie ne reçoit plus de correctifs de sécurité. Le choix se fait depuis votre console de gestion.
- Verrouiller les accès
- Pas de compte nommé
admin. C’est le premier identifiant testé par les robots. Créez un compte administrateur au nom différent, puis supprimez l’ancien en réattribuant son contenu.
- Un mot de passe long et unique par compte, jamais réutilisé ailleurs.
- L’authentification à deux facteurs sur tous les comptes administrateurs.
- La limitation des tentatives de connexion, pour couper court aux attaques par force brute.
Passez en revue qui possède les droits d’administration :
wp user list --role=administrator
Après le départ d’un prestataire ou le moindre doute, réinitialisez les mots de passe et invalidez toutes les sessions ouvertes :
wp user reset-password <utilisateur>
wp config shuffle-salts
shuffle-salts régénère les clés de sécurité : tous les utilisateurs sont déconnectés, y compris quelqu’un qui aurait volé une session.
- Réduire la surface d’attaque
Chaque extension et chaque thème est du code exécutable de plus. Un thème inactif reste présent sur le disque et peut être vulnérable.
- Supprimez — et pas seulement désactivez — tout ce que vous n’utilisez pas.
- Écartez les extensions qui ne sont plus maintenues par leur auteur.
- Installez uniquement depuis le dépôt officiel ou l’éditeur, jamais depuis une archive trouvée au hasard.
wp plugin delete <extension>
wp theme delete <theme>
Désactiver l’éditeur de fichiers
Par défaut, un compte administrateur peut modifier le code des thèmes et des extensions depuis le navigateur. C’est exactement ce dont un attaquant a besoin après avoir volé un mot de passe.
wp config set DISALLOW_FILE_EDIT true --raw
- Forcer HTTPS
Un identifiant transmis en clair peut être intercepté. Activez un certificat (voir Mettre en place un certificat SSL), puis forcez l’administration en HTTPS :
wp config set FORCE_SSL_ADMIN true --raw
- Sauvegarder — et savoir restaurer
Une sauvegarde n’a de valeur que si vous savez vous en servir. Votre hébergement conserve des points de restauration : voir Comment restaurer des données. Testez la procédure une fois, à froid, plutôt que le jour de l’incident.
- Contrôler de temps en temps
Quelques minutes par trimestre suffisent à détecter une anomalie.
| Vérification |
Commande |
| Fichiers du cœur modifiés |
wp core verify-checksums |
| Extensions modifiées |
wp plugin verify-checksums --all |
| Administrateurs inconnus |
wp user list --role=administrator |
| Tâches planifiées suspectes |
wp cron event list |
wp plugin verify-checksums ne couvre que les extensions publiées sur WordPress.org : les extensions premium ou sur mesure doivent être contrôlées autrement.
Votre site est déjà compromis ?
Ne vous contentez pas d’appliquer les mesures ci-dessus : une mise à jour n’enlève pas une porte dérobée. Suivez la procédure de nettoyage décrite dans Nettoyage après un piratage.
Besoin d’aide ?
Ouvrez un ticket auprès de notre support en précisant le domaine concerné et ce que vous avez déjà mis en place.