Pourquoi durcir votre installation WordPress
WordPress est sécurisé par défaut, mais sa configuration par défaut n'est pas suffisante pour résister aux attaques ciblées. Le hardening (durcissement) consiste à réduire la surface d'attaque en désactivant les fonctionnalités inutiles, en renforçant les contrôles d'accès et en ajoutant des couches de protection.
Cette checklist couvre 20 points essentiels, classés par catégorie. Chaque point est actionnable immédiatement. Utilisez-la comme référence lors de chaque nouveau déploiement WordPress.
Configuration (wp-config.php)
1. Déplacer wp-config.php hors du webroot
WordPress reconnaît automatiquement un wp-config.php placé un niveau au-dessus du répertoire d'installation. En le déplaçant hors du répertoire accessible par le web, vous empêchez tout accès direct en cas de mauvaise configuration du serveur.
2. Désactiver l'éditeur de fichiers intégré
L'éditeur de thème et plugin du back-office permet de modifier du code PHP directement depuis le navigateur. Si un attaquant obtient un accès admin, c'est la première chose qu'il utilisera pour injecter une backdoor.
// wp-config.php
define('DISALLOW_FILE_EDIT', true);
3. Forcer le SSL pour l'administration
// wp-config.php
define('FORCE_SSL_ADMIN', true);
4. Limiter les révisions d'articles
Chaque révision est une entrée en base de données. Limiter les révisions réduit la surface d'attaque SQLi et améliore les performances :
// wp-config.php
define('WP_POST_REVISIONS', 5);
5. Changer le préfixe des tables
Le préfixe par défaut wp_ est connu de tous les outils d'attaque automatisée. Utilisez un préfixe unique lors de l'installation. Sur un site existant, la migration est possible mais délicate (pensez aux options et usermeta qui stockent le préfixe en dur).
Authentification et accès
6. Activer l'authentification à deux facteurs (2FA)
Le 2FA bloque la quasi-totalité des attaques par bruteforce ou credential stuffing, même si le mot de passe est compromis. Utilisez une application TOTP (Google Authenticator, Authy) plutôt que le SMS, vulnérable au SIM swapping.
7. Limiter les tentatives de connexion
Bloquez les adresses IP après 5 tentatives échouées en 10 minutes. Cela stoppe les attaques bruteforce sans gêner les utilisateurs légitimes qui se trompent occasionnellement.
8. Désactiver l'énumération des utilisateurs
Par défaut, WordPress expose les noms d'utilisateur via l'URL /?author=1 et via l'API REST /wp-json/wp/v2/users. Bloquez ces deux vecteurs :
# .htaccess — Bloquer l'énumération par author ID
RewriteCond %{QUERY_STRING} ^author=\d+
RewriteRule .* - [F,L]
Pour l'API REST, utilisez un plugin qui restreint l'accès aux endpoints /users ou ajoutez un filtre PHP :
// functions.php
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
return $endpoints;
});
9. Utiliser des mots de passe robustes et uniques
16 caractères minimum, générés aléatoirement, stockés dans un gestionnaire de mots de passe. Cela s'applique à tous les comptes : WordPress, FTP, base de données, hébergeur, email associé.
10. Restreindre les rôles utilisateur
Appliquez le principe du moindre privilège. Un rédacteur n'a pas besoin du rôle Administrateur. Auditez régulièrement les comptes et supprimez ceux qui ne sont plus utilisés.
Fichiers et permissions
11. Configurer les permissions correctement
- Répertoires :
755(ou750si votre hébergeur le supporte) - Fichiers :
644(ou640) wp-config.php:440ou400
Ne mettez jamais de permissions 777 sur un fichier ou répertoire, quelle que soit la raison invoquée.
12. Protéger wp-includes et wp-admin/includes
# .htaccess dans wp-includes/
<Files *.php>
Order Allow,Deny
Deny from all
</Files>
13. Désactiver l'exécution PHP dans wp-content/uploads
Le répertoire uploads ne devrait jamais contenir de fichiers PHP exécutables. Bloquez-en l'exécution :
# .htaccess dans wp-content/uploads/
<Files "*.php">
Order Allow,Deny
Deny from all
</Files>
14. Supprimer les fichiers par défaut inutiles
readme.html: expose la version de WordPresslicense.txt: information sans utilité en productionwp-admin/install.php: inutile après l'installationwp-config-sample.php: modèle de configuration à supprimer
15. Désactiver le listing des répertoires
# .htaccess
Options -Indexes
Sans cette directive, un attaquant peut lister le contenu de vos répertoires et y découvrir des fichiers sensibles (sauvegardes, logs, fichiers de configuration).
Headers HTTP et transport
16. Activer HSTS (HTTP Strict Transport Security)
HSTS indique aux navigateurs de ne jamais accéder à votre site en HTTP, même si l'utilisateur tape l'URL sans https://. Cela empêche les attaques de type SSL stripping.
# .htaccess
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
17. Ajouter les headers de sécurité essentiels
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "camera=(), microphone=(), geolocation=()"
18. Désactiver XML-RPC
XML-RPC est un protocole obsolète qui permet l'accès à distance à WordPress. Il est exploité pour des attaques bruteforce amplifiées (system.multicall) et des attaques DDoS. Si vous n'utilisez pas Jetpack ou l'application mobile WordPress, désactivez-le :
# .htaccess
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
Monitoring et maintenance
19. Mettre en place une surveillance d'intégrité
Un système de file integrity monitoring vous alerte quand un fichier est modifié, ajouté ou supprimé de manière inattendue. C'est souvent le premier signe d'une compromission. Des plugins comme Wordfence ou Sucuri offrent cette fonctionnalité.
20. Réaliser des audits de sécurité réguliers
Un audit mensuel minimum est recommandé. Il ne s'agit pas simplement de vérifier que le site fonctionne, mais de contrôler activement : les versions installées, les headers de sécurité, les fichiers exposés, les permissions, les vulnérabilités connues et la configuration SSL.
Orilyt automatise ces 20 points (et bien d'autres) en un seul audit. L'outil vérifie 56 critères de sécurité, performance et SEO, et produit un rapport détaillé avec des recommandations priorisées. C'est l'outil idéal pour valider votre checklist de hardening et détecter les régressions au fil du temps.
Comment utiliser cette checklist
Ne cherchez pas à tout faire en une fois. Priorisez par impact :
- Priorité haute (points 1-3, 6-7, 11, 13, 16) : à implémenter immédiatement sur tout site en production
- Priorité moyenne (points 4-5, 8-10, 12, 14-15, 17-18) : à planifier dans la semaine
- Priorité standard (points 19-20) : à mettre en place comme processus récurrent
Documentez chaque modification dans un changelog. En cas de problème, vous pourrez identifier rapidement quel changement a causé la régression. Et surtout, testez chaque modification en staging avant de l'appliquer en production.
La sécurité WordPress n'est pas un projet ponctuel mais un processus continu. Cette checklist est un point de départ solide. Votre vigilance quotidienne fera le reste.
Auditez votre site avec Orilyt
56 tests automatisés pour évaluer la sécurité, la performance et le SEO de votre site WordPress. Rapport détaillé en moins de 60 secondes.
Lancer un audit gratuit