ITSkillsCenter
WordPress

Tutoriel : Sécuriser WordPress — guide complet anti-hack

8 دقائق للقراءة

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 »

  1. Créez un nouvel utilisateur avec un nom non prédictible
  2. Donnez-lui le rôle Administrateur
  3. Connectez-vous avec ce nouveau compte
  4. 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 :

  1. Installez Wordfence Security depuis Extensions → Ajouter
  2. 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 :

  1. Installez le plugin WP 2FA ou Two-Factor
  2. Activez le 2FA pour tous les administrateurs
  3. 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)
  4. 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.

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 350.000 FCFA
Parlons de Votre Projet
Publicité