[WordPress] Sécuriser son site WordPress

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.

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

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

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

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

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

6. Contrôler de temps en temps

Quelques minutes par trimestre suffisent à détecter une anomalie.

VérificationCommande
Fichiers du cœur modifiéswp core verify-checksums
Extensions modifiéeswp plugin verify-checksums --all
Administrateurs inconnuswp user list --role=administrator
Tâches planifiées suspecteswp 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.