Credit : Illustration backtotheweb.fr
Securiser WordPress : le guide complet anti-hack
WordPress : une cible privilegiee
Testé et approuvé sur nos serveurs IONOS.
WordPress represente plus de 40% du web mondial, ce qui en fait la cible preferee des hackers. La majorite des piratages exploitent des failles connues : plugins non mis a jour, mots de passe faibles, permissions laxistes.
Voici un guide complet pour blinder votre installation sur un serveur IONOS.
Proteger avec .htaccess
Le fichier .htaccess est votre premiere ligne de defense si vous utilisez Apache :
# Proteger wp-config.php
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
# Bloquer l'acces a xmlrpc.php (vecteur de brute-force)
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
# Desactiver le directory listing
Options -Indexes
# Proteger .htaccess lui-meme
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
# Bloquer l'execution PHP dans wp-content/uploads
<Directory "/var/www/monsite/wp-content/uploads">
<Files *.php>
Deny from all
</Files>
</Directory>
Si vous utilisez Nginx :
location = /xmlrpc.php { deny all; }
location = /wp-config.php { deny all; }
location ~* /wp-content/uploads/.*\.php$ { deny all; }
location ~ /\. { deny all; }
Headers de securite HTTP
Ajoutez ces headers dans votre configuration serveur :
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;" always;
Testez vos headers sur securityheaders.com.
Plugins de securite essentiels
# Wordfence : pare-feu applicatif et scanner de malware
wp plugin install wordfence --activate --path=/var/www/monsite
# Limit Login Attempts Reloaded : bloquer le brute-force
wp plugin install limit-login-attempts-reloaded --activate --path=/var/www/monsite
Configurez Wordfence :
- Activez le pare-feu etendu (WAF)
- Planifiez un scan automatique quotidien
- Activez les alertes email pour les connexions suspectes
- Bloquez les pays non pertinents pour votre audience
Authentification a deux facteurs (2FA)
wp plugin install two-factor --activate --path=/var/www/monsite
Activez le 2FA pour tous les comptes administrateurs. Methodes supportees :
- TOTP (Google Authenticator, Authy) : recommande
- Cles de securite U2F (YubiKey) : le plus securise
- Codes de secours : a imprimer et stocker en lieu sur
Permissions des fichiers
Les permissions correctes empechent la modification non autorisee des fichiers :
# Repertoires : 755
find /var/www/monsite -type d -exec chmod 755 {} \;
# Fichiers : 644
find /var/www/monsite -type f -exec chmod 644 {} \;
# wp-config.php : acces restreint
chmod 600 /var/www/monsite/wp-config.php
# Proprietaire : www-data
chown -R www-data:www-data /var/www/monsite
Desactivez l'editeur de fichiers integre dans wp-config.php :
define('DISALLOW_FILE_EDIT', true);
Mesures supplementaires
Changez le prefixe des tables (pour les nouvelles installations) :
$table_prefix = 'wp_a7b3_';
Masquez la version de WordPress :
// Dans functions.php
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
Deplacez wp-config.php un niveau au-dessus du document root :
mv /var/www/monsite/wp-config.php /var/www/wp-config.php
WordPress le detectera automatiquement.
Sauvegardes automatisees
La meilleure securite reste une sauvegarde fiable :
# Script de sauvegarde quotidien
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/wordpress"
mkdir -p $BACKUP_DIR
wp db export $BACKUP_DIR/db-$DATE.sql --path=/var/www/monsite
tar -czf $BACKUP_DIR/files-$DATE.tar.gz -C /var/www monsite/
# Garder seulement les 30 derniers jours
find $BACKUP_DIR -mtime +30 -delete
Appliquez ces mesures methodiquement et votre WordPress sera significativement plus resistant aux attaques.