Sécuriser WordPress : guide anti-hack complet
WordPress propulse 43% du web mondial, ce qui en fait la cible n°1 des hackers. Au Sénégal, les sites piratés sont courants car les bonnes pratiques de sécurité sont rarement appliquées. Un site hacké peut afficher du contenu frauduleux, voler les données de vos clients ou être utilisé pour envoyer du spam. Ce guide vous montre comment blinder votre WordPress avec des mesures concrètes et progressives.
1. Les bases : 80% de la sécurité
Mises à jour systématiques
90% des piratages WordPress exploitent des failles connues dans des versions obsolètes :
- WordPress core : mettez à jour dès qu’une nouvelle version sort
- Plugins : mettez à jour chaque semaine
- Thèmes : mettez à jour et supprimez les thèmes inactifs
- PHP : utilisez PHP 8.1 ou plus récent (support sécurité actif)
// Activer les mises à jour automatiques (wp-config.php)
// Mises à jour mineures de WordPress (correctifs de sécurité)
define('WP_AUTO_UPDATE_CORE', 'minor');
// Mises à jour automatiques des plugins (functions.php)
add_filter('auto_update_plugin', '__return_true');
// Mises à jour automatiques des thèmes
add_filter('auto_update_theme', '__return_true');
// Email de notification après mise à jour
add_filter('auto_core_update_send_email', '__return_true');
Mots de passe forts
- Minimum 16 caractères avec majuscules, minuscules, chiffres et symboles
- Différent pour chaque service (WordPress, hébergement, FTP, email)
- Utilisez un gestionnaire de mots de passe (Bitwarden gratuit, ou 1Password)
- Ne jamais utiliser : admin, password, 123456, le nom du site, votre date de naissance
Supprimer le compte « admin »
- Créez un nouvel utilisateur avec un nom non prédictible
- Donnez-lui le rôle Administrateur
- Connectez-vous avec ce nouveau compte
- Supprimez le compte « admin » (attribuez son contenu au nouveau compte)
2. Plugin de sécurité : Wordfence
Wordfence est le plugin de sécurité WordPress le plus complet :
- Installez Wordfence Security depuis Extensions → Ajouter
- Configurez les options essentielles :
Configuration Wordfence recommandée
Firewall :
- Mode : Activé et protégeant
- Protection contre les attaques par force brute : Activée
- Nombre max de tentatives de connexion : 5
- Durée de blocage : 4 heures
- Bloquer après combien d’échecs de mot de passe oublié : 3
Scan :
- Planification : quotidienne
- Vérifier les fichiers core WordPress : Oui
- Vérifier les plugins et thèmes : Oui
- Scanner les fichiers hors de WordPress : Oui
- Scanner pour les malwares : Oui
Alertes email :
- Email quand un administrateur se connecte : Oui
- Email quand un plugin est mis à jour : Oui
- Email quand Wordfence détecte un problème : Oui
Alternatives à Wordfence
| Plugin | Gratuit | Spécificité |
|---|---|---|
| Sucuri Security | Oui (WAF payant) | Monitoring, audit de sécurité, nettoyage de malware |
| iThemes Security | Oui | Interface simple, 2FA, détection de modifications de fichiers |
| All-In-One WP Security | Oui | Score de sécurité visuel, très complet en gratuit |
3. Protéger wp-config.php et .htaccess
# Protéger wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# Protéger .htaccess
<files .htaccess>
order allow,deny
deny from all
</files>
# Désactiver la navigation dans les dossiers
Options -Indexes
# Bloquer l'accès aux fichiers sensibles
<FilesMatch "^(wp-config\.php|readme\.html|license\.txt|xmlrpc\.php)$">
order allow,deny
deny from all
</FilesMatch>
# Bloquer l'exécution PHP dans uploads (empêche les backdoors)
<Directory "/var/www/html/wp-content/uploads">
<Files "*.php">
deny from all
</Files>
</Directory>
Ou en un seul bloc .htaccess
# ===== SÉCURITÉ WORDPRESS =====
# Bloquer xmlrpc.php (utilisé pour les attaques DDoS)
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
# Interdire l'exécution PHP dans wp-content/uploads
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-content/uploads/.*\.php$ - [F]
</IfModule>
# Headers de sécurité
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
# Bloquer les user-agents malveillants courants
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (ahrefs|semrush|dotbot|mj12bot) [NC]
RewriteRule .* - [F,L]
4. Sécuriser wp-config.php
// Clés de sécurité uniques (OBLIGATOIRE)
// Générez-les sur : https://api.wordpress.org/secret-key/1.1/salt/
// Remplacez les lignes existantes dans wp-config.php
define('AUTH_KEY', 'votre-clé-unique-ici');
define('SECURE_AUTH_KEY', 'votre-clé-unique-ici');
define('LOGGED_IN_KEY', 'votre-clé-unique-ici');
define('NONCE_KEY', 'votre-clé-unique-ici');
define('AUTH_SALT', 'votre-clé-unique-ici');
define('SECURE_AUTH_SALT', 'votre-clé-unique-ici');
define('LOGGED_IN_SALT', 'votre-clé-unique-ici');
define('NONCE_SALT', 'votre-clé-unique-ici');
// Désactiver l'éditeur de fichiers dans l'admin
// (empêche un hacker ayant accès admin de modifier les fichiers)
define('DISALLOW_FILE_EDIT', true);
// Forcer SSL pour l'admin
define('FORCE_SSL_ADMIN', true);
// Limiter les révisions (réduit la surface d'attaque)
define('WP_POST_REVISIONS', 5);
// Préfixe de table non-standard
// UNIQUEMENT à l'installation, pas après !
$table_prefix = 'wp_itsc_'; // au lieu de 'wp_'
5. Authentification à deux facteurs (2FA)
Le 2FA ajoute une couche de sécurité même si votre mot de passe est compromis :
- Installez le plugin WP 2FA ou Two-Factor
- Activez le 2FA pour tous les administrateurs
- Méthodes disponibles :
- Google Authenticator / Authy : code à 6 chiffres qui change toutes les 30 secondes
- Email : code envoyé par email à chaque connexion
- Clé de sécurité : clé USB physique (YubiKey)
- Générez des codes de récupération et stockez-les en lieu sûr
6. Protéger la page de connexion
Changer l’URL de connexion
// Plugin : WPS Hide Login (gratuit, léger)
// Change /wp-login.php en une URL personnalisée
// Ex: /connexion-admin ou /mon-acces
// Les bots qui attaquent /wp-login.php ne trouvent plus rien
Limiter les tentatives de connexion
// Wordfence le fait nativement
// Alternative sans plugin de sécurité :
// Plugin "Limit Login Attempts Reloaded"
// Configuration recommandée :
// - Max 5 tentatives avant blocage
// - Blocage de 20 minutes après 5 échecs
// - Blocage de 24 heures après 3 séries d'échecs
// - Email de notification après chaque blocage
Protection .htaccess de wp-login.php
# Autoriser uniquement votre IP (si IP fixe)
<Files wp-login.php>
order deny,allow
deny from all
allow from 123.456.789.0
</Files>
# OU protéger par mot de passe HTTP
# (double authentification : htpasswd + WordPress login)
<Files wp-login.php>
AuthType Basic
AuthName "Zone protégée"
AuthUserFile /home/user/.htpasswd
Require valid-user
</Files>
7. Permissions des fichiers
# Permissions correctes pour WordPress :
# Dossiers : 755 (lecture + exécution pour tous, écriture pour le propriétaire)
find /var/www/html -type d -exec chmod 755 {} \;
# Fichiers : 644 (lecture pour tous, écriture pour le propriétaire)
find /var/www/html -type f -exec chmod 644 {} \;
# wp-config.php : 600 (lecture/écriture uniquement pour le propriétaire)
chmod 600 wp-config.php
# .htaccess : 644
chmod 644 .htaccess
# JAMAIS 777 sur aucun fichier ou dossier !
8. SSL/HTTPS obligatoire
Le SSL chiffre les données entre le navigateur et le serveur. C’est obligatoire pour :
- Protéger les mots de passe et données personnelles
- Le SEO (Google favorise les sites HTTPS)
- La confiance des visiteurs (cadenas vert)
# Forcer HTTPS dans .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Rediriger www vers non-www (ou l'inverse)
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
La plupart des hébergeurs offrent Let’s Encrypt gratuit. Activez-le depuis votre panel d’hébergement.
9. Sauvegardes : votre filet de sécurité
Même avec toutes les protections, un piratage reste possible. Les sauvegardes sont votre assurance :
- Quotidien : sauvegarde de la base de données (UpdraftPlus)
- Hebdomadaire : sauvegarde complète (fichiers + BDD)
- Stockage distant : Google Drive ou Amazon S3 (pas sur le même serveur !)
- Testez la restauration : une sauvegarde non testée ne vaut rien
10. Que faire si votre site est piraté
Étape 1 : Isoler
- Mettez le site en mode maintenance
- Changez immédiatement tous les mots de passe (WordPress, FTP, BDD, hébergement, email)
Étape 2 : Scanner et nettoyer
# Scanner avec Wordfence
# Wordfence → Scan → Lancer un scan complet
# Il identifie les fichiers modifiés et les malwares
# Scanner avec WP-CLI
wp core verify-checksums
# Compare vos fichiers WordPress avec les originaux
# Rechercher des fichiers suspects
find /var/www/html -name "*.php" -newer /var/www/html/wp-config.php -mtime -7
# Liste les fichiers PHP modifiés dans les 7 derniers jours
Étape 3 : Restaurer
- Si vous avez une sauvegarde propre : restaurez-la
- Sinon : nettoyez manuellement chaque fichier identifié par le scan
Étape 4 : Renforcer
// Après nettoyage :
// 1. Regénérez les clés de sécurité (api.wordpress.org/secret-key/1.1/salt/)
// 2. Mettez tout à jour (WordPress, plugins, thèmes)
// 3. Supprimez les plugins et thèmes inutilisés
// 4. Installez Wordfence si pas déjà fait
// 5. Activez le 2FA
// 6. Vérifiez les utilisateurs admin (supprimez les inconnus)
// 7. Scannez à nouveau dans 24h et 72h
11. Checklist sécurité WordPress
- ☐ WordPress, plugins et thèmes à jour
- ☐ PHP version 8.1+ sur le serveur
- ☐ Mots de passe forts (16+ caractères) et uniques
- ☐ Compte « admin » supprimé ou renommé
- ☐ Plugin de sécurité installé (Wordfence recommandé)
- ☐ 2FA activé pour les administrateurs
- ☐ URL de connexion modifiée (WPS Hide Login)
- ☐ SSL/HTTPS actif et forcé
- ☐ Éditeur de fichiers désactivé (DISALLOW_FILE_EDIT)
- ☐ .htaccess durci (xmlrpc bloqué, headers de sécurité)
- ☐ Permissions correctes (755 dossiers, 644 fichiers, 600 wp-config)
- ☐ Clés de sécurité uniques dans wp-config.php
- ☐ Sauvegardes automatiques quotidiennes vers un stockage distant
- ☐ Plugins et thèmes inutilisés supprimés (pas juste désactivés)
- ☐ Scan de sécurité planifié quotidiennement
La sécurité WordPress est un processus continu, pas une action ponctuelle. Appliquez ces mesures progressivement — les bases (mises à jour, mots de passe, Wordfence) couvrent déjà 90% des risques. Puis renforcez avec le .htaccess, le 2FA et les sauvegardes pour une protection complète.