📝 WordPress

WordPress : sécuriser son installation

Checklist complète pour durcir un site WordPress : comptes, 2FA, XML-RPC, protection de wp-config, permissions, plugins de sécurité et audit.

intermédiaire ⏱ 20 min Mise à jour : 2026-04-23

Un site WordPress qui n'est ni maintenu ni durci finit presque toujours compromis : 90 % des piratages viennent d'un plugin obsolète, d'un mot de passe faible ou d'une faille XML-RPC. Cette checklist couvre les actions à mener, dans l'ordre, pour passer d'une installation par défaut à une installation que les bots automatisés laissent tranquille.

Côté Datacampus
Nous scannons nos serveurs pour détecter les malwares courants (webshells, cryptomineurs, backdoors) et nous bloquons les IPs qui brute-forcent en masse. Cela ne dispense pas de sécuriser votre application : un plugin vulnérable exécuté avec les droits de votre site passe sous nos radars.

1. Tenir à jour

La règle numéro un. Chaque jour passé sans mise à jour d'un plugin connu vulnérable est un jour de risque.

  • Core WordPress : activez les mises à jour mineures automatiques (déjà actives par défaut depuis WP 3.7).
  • Plugins et thèmes : activez les maj auto pour ceux que vous ne modifiez jamais. Les autres, audit manuel hebdomadaire.
  • PHP : visez la dernière version supportée (PHP 8.3 ou 8.4 en avril 2026). Pour upgrader côté serveur, ouvrez un ticket.

Voir le guide dédié : mises à jour et maintenance.

2. Comptes et authentification

Identifiants non-devinables

Supprimez tout compte admin, administrator, webmaster, ou portant le nom du domaine. Les bots tentent ces logins en premier.

# Lister les utilisateurs admin
wp user list --role=administrator --fields=ID,user_login,user_email

# Créer un nouveau compte admin
wp user create pierre-admin pierre@exemple.fr --role=administrator --send-email

# Supprimer l'ancien compte admin en réattribuant ses contenus
wp user delete admin --reassign=2

Mots de passe

  • Minimum 16 caractères, générés aléatoirement (gestionnaire de mots de passe : Bitwarden, 1Password, KeePass).
  • Jamais le même mot de passe sur deux sites.
  • Interdisez les mots de passe faibles à vos clients/rédacteurs via le plugin Password Policy Manager ou l'option native de WordPress.

Double authentification (2FA)

Plugin officiel recommandé : Two Factor (wordpress.org/plugins/two-factor), maintenu par l'équipe core. Activez au moins pour les comptes administrateur et éditeur.

Méthodes recommandées : TOTP (Google Authenticator, Aegis, Authy) ou clé WebAuthn/FIDO2.

Limiter les tentatives de connexion

Installez Limit Login Attempts Reloaded. Paramétrage typique : 4 tentatives, lockout 20 min, lockout long 24 h après 4 lockouts.

3. Bloquer XML-RPC

Le fichier xmlrpc.php sert à l'application mobile officielle et à quelques plugins (Jetpack). Si vous ne l'utilisez pas, désactivez-le : c'est un vecteur massif de brute-force distribué.

Méthode 1 — Plugin

Installez Disable XML-RPC. C'est tout.

Méthode 2 — .htaccess

# Dans /var/www/vhosts/mon-domaine.fr/httpdocs/.htaccess
<Files xmlrpc.php>
    Require all denied
</Files>

4. Masquer la version WordPress

Par défaut, WordPress affiche sa version dans une balise <meta name="generator"> et dans l'URL des fichiers CSS/JS. Utile aux scanners automatiques pour repérer les versions vulnérables.

Dans le functions.php de votre thème enfant (jamais dans le thème parent, écrasé à la maj) :

// Supprime meta generator
remove_action('wp_head', 'wp_generator');

// Supprime la version des URL d'assets
add_filter('style_loader_src', function($src) {
    return remove_query_arg('ver', $src);
});
add_filter('script_loader_src', function($src) {
    return remove_query_arg('ver', $src);
});

5. Désactiver l'éditeur de fichiers

Par défaut, un administrateur peut éditer le code des plugins et du thème depuis l'interface. C'est un chemin royal pour un attaquant qui a volé un mot de passe admin.

Dans wp-config.php, avant la ligne /* That's all, stop editing! */ :

define('DISALLOW_FILE_EDIT', true);

Pour aller plus loin et interdire aussi l'installation de plugins/thèmes via l'admin (utile sur un site figé en production) :

define('DISALLOW_FILE_MODS', true);

6. Protéger wp-config.php

Ce fichier contient vos identifiants de base de données et vos clés secrètes. Il doit être illisible depuis le web.

Permissions Unix

# Depuis SSH
cd /var/www/vhosts/mon-domaine.fr/httpdocs
chmod 600 wp-config.php
ls -la wp-config.php
# -rw------- 1 monuser psacln 3521 Apr 23 10:15 wp-config.php

Blocage .htaccess

<Files wp-config.php>
    Require all denied
</Files>

Permissions générales recommandées

  • Dossiers : 750 (ou 755 si la config Apache le demande).
  • Fichiers : 640 (ou 644).
  • wp-config.php : 600.
  • wp-content/uploads : 750.

Voir le guide permissions Linux.

7. Désactiver l'indexation des dossiers

Sans directive, Apache liste le contenu d'un dossier dépourvu d'index.php. Votre wp-content/uploads devient alors explorable. Ajoutez en tête du .htaccess racine :

Options -Indexes

8. Plugin de sécurité global

Un plugin couvre la plupart des points ci-dessus d'un coup, plus un pare-feu applicatif (WAF) et un scanner de fichiers. Deux choix solides :

  • Wordfence Security — WAF, scan de malware, 2FA, blocage IP. Version gratuite très complète.
  • Solid Security (ex-iThemes Security) — plus léger, politique de mots de passe, détection de changement de fichier.

Ne cumulez jamais deux plugins de sécurité, ils se marchent dessus.

9. Audit régulier des plugins

Ritualisez (une fois par mois) :

  1. Liste des plugins actifs : wp plugin list --status=active.
  2. Supprimez ceux qui ne servent plus (désactiver ne suffit pas, le code reste sur le serveur et peut être vulnérable).
  3. Vérifiez la date de dernière mise à jour de chaque plugin sur WordPress.org. Plus de 2 ans sans maj = à remplacer.
  4. Vérifiez les alertes de sécurité : Patchstack ou WPVulnerability.

10. Sauvegardes applicatives

Nous faisons des sauvegardes serveur quotidiennes et les conservons selon le SLA de votre offre. C'est une assurance-vie de dernier recours — restaurer tout un site depuis un snapshot serveur prend du temps.

Pour un redémarrage rapide en cas de plugin cassé ou de maj foireuse, ajoutez une sauvegarde applicative côté WordPress : UpdraftPlus, BackWPup ou Duplicator, stockées hors serveur (S3 compatible, Nextcloud, Google Drive).

⚠️
Piège classique : laisser un compte « temporaire » de dev
L'agence crée un compte dev-agence le temps d'un chantier, et personne ne le supprime à la livraison. Six mois plus tard, le mot de passe a fuité sur une base volée, et le site est compromis. Audit mensuel des comptes admin et éditeur : si vous ne reconnaissez pas, vous supprimez.

Checklist rapide

  • Core, plugins, thèmes, PHP à jour.
  • Pas de compte admin. Tous les admins en 2FA.
  • XML-RPC bloqué (sauf cas explicite).
  • Limit Login Attempts installé.
  • DISALLOW_FILE_EDIT activé.
  • wp-config.php en chmod 600 et bloqué par .htaccess.
  • Options -Indexes dans le .htaccess racine.
  • Un plugin de sécurité global (pas deux).
  • Sauvegarde applicative hors serveur.

Pour aller plus loin

Besoin d'aide ?

Cette documentation ne couvre pas votre cas ? Notre support humain est là.