Maintenance & Sécurité WordPress Sécurité HTTPS

Sécuriser son site WordPress : les 10 étapes essentielles

WordPress représente 43% du web et est la cible n°1 des hackers. Voici les 10 étapes concrètes pour sécuriser votre site WordPress dès aujourd'hui.

Benjamin Schweitzer Benjamin Schweitzer
Mardi 18 février 2025
5 min de lecture
Sécuriser son site WordPress : les 10 étapes essentielles

Securiser WordPress en 2025 : le guide complet

WordPress propulse 43% du web mondial. C'est aussi la cible numero 1 des attaques automatisees. Les bots scannent en permanence a la recherche de sites vulnerables, plugins obsoletes, mots de passe faibles.

La bonne nouvelle : 95% des piratages WordPress sont evitables avec des mesures simples.

Pourquoi WordPress est cible

Avec plus de 800 millions de sites sous WordPress, les attaquants ecrivent des outils qui :

  • Scannent des millions d'IPs a la recherche de /wp-login.php
  • Testent des listes de 100 000 mots de passe communs
  • Cherchent les versions obsoletes de plugins dans /wp-content/plugins/
  • Exploitent des CVE publiees sur les plugins populaires
Statistiques 2024 :
  • 97% des attaques WordPress sont automatisees
  • 39% exploitent un plugin vulnerable
  • 8% exploitent le theme
  • Seulement 7% visent WordPress lui-meme

Etape 1 : Securiser l'acces wp-admin

Changer l'URL de connexion

Par defaut, n'importe qui accede a /wp-login.php. Masquez-la :

// Via le plugin "WPS Hide Login"
// Ou protection par IP dans .htaccess
<Files "wp-login.php">
    Order Deny,Allow
    Deny from all
    Allow from 82.45.XXX.XXX  # Votre IP fixe
</Files>

Authentification a deux facteurs (2FA)

Activez le 2FA sur tous les comptes admin. Plugins recommandes :

  • WP 2FA : simple, supporte Authy/Google Authenticator
  • Wordfence : inclut le 2FA avec son pare-feu

Supprimer le compte "admin" par defaut

# Via WP-CLI
wp user create monvrainom contact@monsite.fr --role=administrator
wp user delete admin --reassign=<new_user_id>

Etape 2 : Mises a jour - la regle des 72 heures

Quand une CVE est publiee pour un plugin, les bots commencent a l'exploiter en 24-72h.

// wp-config.php : mises a jour automatiques du core
define('WP_AUTO_UPDATE_CORE', 'minor');

// Pour les plugins et themes
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');

Attention : les MAJ automatiques de plugins peuvent casser votre site. Testez d'abord en staging, ou utilisez ManageWP avec snapshot pre-MAJ.

Verifier les vulnerabilites connues

# WP-Scan (open source)
gem install wpscan
wpscan --url https://votresite.fr --enumerate p,t,u \
  --api-token VOTRE_TOKEN_GRATUIT

Etape 3 : Securiser wp-config.php

// Deplacer wp-config.php un niveau au-dessus du dossier public
// WordPress le trouvera automatiquement

// Cles de securite uniques (generer sur l'API WordPress)
define('AUTH_KEY',         'cle-unique-aleatoire-1');
define('SECURE_AUTH_KEY',  'cle-unique-aleatoire-2');
define('LOGGED_IN_KEY',    'cle-unique-aleatoire-3');
// ...

// Securite supplementaire
define('DISALLOW_FILE_EDIT', true);  // Desactive l'editeur de fichiers
define('DISALLOW_FILE_MODS', true);  // Desactive install plugins/themes
define('WP_DEBUG', false);           // JAMAIS debug en production

# .htaccess : protections essentielles
<Files wp-config.php>
    order allow,deny
    deny from all
</Files>

<Files xmlrpc.php>
    order deny,allow
    deny from all
</Files>

Options -Indexes

Etape 4 : Pare-feu applicatif (WAF)

Wordfence - la reference gratuite

wp plugin install wordfence --activate

Configuration recommandee :

  • Mode pare-feu : Actif
  • Protection brute force : 500 tentatives/24h puis blocage 4h
  • Scan automatique : quotidien

Cloudflare - WAF en amont

Mettre votre site derriere Cloudflare (gratuit) offre une protection supplementaire.

Regles Cloudflare utiles :

# Bloquer les acces suspects a wp-login.php
(http.request.uri.path eq "/wp-login.php" and
 ip.geoip.country in {"CN" "RU" "KP" "NG"})
=> Block

Etape 5 : Sauvegardes - le filet de securite ultime

Strategie 3-2-1

  • 3 copies de vos donnees
  • 2 supports differents (local + cloud)
  • 1 copie hors site
#!/bin/bash
# Script de backup automatique
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR="/var/backups/wordpress"

# Exporter la base de donnees
wp --path=/var/www/html db export "$BACKUP_DIR/db_${DATE}.sql"
gzip "$BACKUP_DIR/db_${DATE}.sql"

# Archiver les fichiers
tar --exclude='wp-content/cache' \
    -czf "$BACKUP_DIR/files_${DATE}.tar.gz" \
    /var/www/html/

# Envoyer vers Backblaze B2
rclone copy "$BACKUP_DIR" b2:mon-bucket/wordpress/ \
  --include "*${DATE}*"

# Garder 30 jours en local
find "$BACKUP_DIR" -mtime +30 -delete

Plugins de backup recommandes

PluginGratuitStockage externe
UpdraftPlusOuiS3, Dropbox, GDrive
BackWPupOuiS3, FTP
All-in-One WP MigrationOuiExport manuel

Etape 6 : Surveillance et detection

Verifier l'integrite des fichiers core

# WP-CLI verifie les checksums des fichiers WordPress
wp core verify-checksums
# Success: WordPress installation verifies against checksums.
# Si un fichier core est modifie, il sera signale ici

Notifications de connexion admin

// Notifier par email lors d'une connexion admin
add_action('wp_login', function($user_login, $user) {
    if (in_array('administrator', $user->roles)) {
        $message  = "Connexion admin par {$user_login}\n";
        $message .= "IP : " . $_SERVER['REMOTE_ADDR'] . "\n";
        $message .= "Date : " . current_time('Y-m-d H:i:s');
        wp_mail(get_option('admin_email'), "Connexion admin", $message);
    }
}, 10, 2);

Checklist de securite WordPress complete

Acces
[x] URL wp-login.php masquee ou protegee par IP
[x] 2FA active sur tous les comptes admin
[x] Aucun compte avec le username "admin"
[x] Mot de passe 16+ caracteres aleatoires
[x] Connexions limitees (max 5 tentatives)

Mises a jour
[x] Core WordPress a jour
[x] Tous les plugins actifs a jour
[x] Tous les themes a jour
[x] Plugins/themes inutilises supprimes

Configuration
[x] wp-config.php hors webroot ou protege
[x] Cles de securite uniques
[x] WP_DEBUG = false en production
[x] DISALLOW_FILE_EDIT = true
[x] xmlrpc.php desactive
[x] Indexation des repertoires desactivee

Pare-feu
[x] Wordfence ou equivalent installe et configure
[x] Cloudflare ou WAF en amont (recommande)

Sauvegardes
[x] Sauvegardes automatiques quotidiennes
[x] Copie hors site (S3, Backblaze, Dropbox)
[x] Test de restauration effectue (1x/trimestre)

Surveillance
[x] Notifications de connexion admin
[x] Scan de malwares hebdomadaire
[x] Monitoring uptime

La securite n'est pas un etat, c'est un processus continu. Revisez votre configuration tous les trimestres, surtout apres l'ajout de nouveaux plugins ou une mise a jour majeure.


Pour aller plus loin : WordPress Security Guide

Cet article vous a plu ?

Donnez-lui une note, ça m'aide vraiment !

Partager l'article