Comment sécuriser votre site WordPress

Plusieurs niveaux de sécurisation de WordPress sont possibles. Cet article propose une série de point de sécurité rapide à mettre en œuvre pour un premier niveau de sécurisation.

Lors de l’installation

  • Préfixer les tables de votre base de données (autrement qu’avec wp_)
  • Changer les identifiants de connexion au back-office en bannissant les termes comme « admin », « votre nom », « votre entreprise », …
  • Choisir un mot de passe complexe (en utilisant par exemple un générateur de mot de passe)
  • Supprimer le fichier readme.html de la racine du site
  • Passer votre site en HTTPS
  • Forcer le HTTPS sur le back-office :
    [pastacode lang= »php » manual= »define%20(%20’FORCE_SSL_ADMIN’%20%2C%20true%20)%3B%20″ message= »wp-config.php » highlight= » » provider= »manual »/]
  • Masquer la version de Worpress, désactiver l’éditeur de fichiers et masquer les erreurs lors de la connexion :
    [pastacode lang= »php » manual= »remove_action(%20’wp_head’%2C%20’wp_generator’%20)%3B%0Adefine(%20’DISALLOW_FILE_EDIT’%2C%20true%20)%3B%0Aadd_filter(%0A%09’login_errors’%2C%20function(%20%24error%20)%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A)%3B%0A » message= »functions.php » highlight= » » provider= »manual »/]
  • Veiller aux droits d’accès des fichiers :
    • Tous les fichiers sont en 644 et les dossiers en 755
    • wp-config.php en 640
    • sitemap.xml en 666
    • Aucun fichier ou dossier en 777

Sécurisation depuis le fichier .htaccess

Pour aller plus loin dans la sécurisation de votre site WordPress avec le fichier .htaccess, je vous invite à consulter le guide ultime du fichier .htaccess sur WpMarmite.

#Interdit l'affichage d'un repertoire sans index : 
Options -Indexes

# Forcer l'affichage en HTTPS
<IfModule mod_rewrite.c>
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^ https://mon-site.com%{REQUEST_URI} [R=301,L]
</IfModule>

#Protéger le fichier htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>

# Protéger le fichier wp-config
<Files wp-config.php>
order allow,deny
deny from all
</Files>

# Désactiver le hotlinking de vos images
# Source : https://wpmarmite.com/htaccess-wordpress/
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mon-site.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://fakeimg.pl/400x200/?text=Pas_touche_aux_images [NC,R,L]

# Protections diverses (XSS, clickjacking et MIME-Type sniffing)
# Source : https://wpmarmite.com/htaccess-wordpress/
<ifModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options: "nosniff”
</ifModule>

# Éviter le spam de commentaires
# Source : https://wpmarmite.com/htaccess-wordpress/
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.monsite.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

# Eviter que l'on découvre l'identifiant d'un auteur
# Source : https://wpmarmite.com/htaccess-wordpress/
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
</IfModule>
.htaccess
# Bloque les accès directs aux fichiers PHP
# Source : https://wpmarmite.com/htaccess-wordpress/
<Files wp-tinymce.php>
allow from all
</Files>
<FilesMatch "\.(?i:php)$">
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
<Files wp-tinymce.php>
Allow from all
</Files>
<Files ms-files.php>
Allow from all
</Files>
.htaccess dans wp_includes
# Bloque les accès directs aux fichiers PHP
# Source https://wpmarmite.com/htaccess-wordpress/
<FilesMatch "\.(?i:php)$">
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
.htaccess dans wp-content/uploads

Sécurisation avec des plugins :

  • Déplacer la page de Login avec WPS Hide Login
  • Restreindre le nombre d’essai d’identification avec Login Lockdown
  • Scanner le thème utilisé avec Theme Authenticity Checker (TAC)  (puis vérifier dans Apparences > TAC. Désactiver le plugin ensuite si tout est OK)
  • Utiliser au quotidien un plugin tel que Wordfence qui scanne le contenu du site et alerte en cas de fichier modifié sur le serveur ou de mise à jour à effectuer (et bien plus encore)

Et ensuite…

  • Faites des sauvegardes régulières
  • Faites les mises à jour de WordPress et des plugins (optez pour les mises à jour automatique)
  • N’utilisez que des plugins de confiance
  • Supprimer les plugins désactivés
  • Veillez à utiliser votre site à partir d’un poste de travail propre (passé à l’antivirus)
  • Utilisez une connexion SFTP pour vous connecter à votre serveur

Si cet article "Comment sécuriser votre site WordPress" vous a aidé, si vous avez des questions ou des améliorations à proposer, n'hésitez pas à me laisser un commentaire en bas de page !
Charlie Stram,
Développeur web freelance

Vous aimerez aussi...

2 réponses

  1. 22 mai 2018

    […] Vous avez mis en place un protocole de sécurité (voir Comment sécuriser son site WordPress) […]

  2. 27 mai 2018

    […] Comment sécuriser votre site WordPress […]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *