(modifié le 22 juillet 2015 à 1:38)

Après mon précédent billet concernant le cas de l'utilisateur par défaut "admin", j'aborde aujourd'hui le fichier wp-config.php dans ma série "Comment sécuriser un blog WordPress".

securiser-blog-wp-partie2

Quel intérêt à protéger ce fichier ?

Le fichier wp-config.php est situé à la racine de votre blog. Il renferme de nombreux paramètres de configuration mettant directement en jeu la sécurité et le fonctionnement de votre blog.

On y trouve : l'adresse de votre serveur de base de données, le nom d'utilisateur ainsi que le mot de passe associé, vos préfixes de table ainsi que vos clés WordPress permettant de créer un cookie sécurisé lorsque vous vous connectez à en tant qu'administrateur.

L'accès direct à ce fichier ne renvoie heureusement qu'une page blanche (le fichier ne fait que définir des variables). Cependant, pour éviter d'éventuels accès indésirables suite à la découverte de faille dans l'un de vos plugins ou dans le cœur même du moteur WordPress, nous allons protéger son accès.

En pratique

Rien n'est plus efficace qu'un fichier .htaccess pour bloquer l'accès à ce fichier. Vous devrez placer ce fichier à la racine de votre blog.

! Attention ! il est fort probable qu'un fichier .htaccess soit déjà existant. Ouvrez-le simplement et placez-vous avant la ligne "# BEGIN WordPress" pour que WordPress n'écrase pas vos modifications.

Interdire totalement l'accès (erreur 403)

Cette technique fonctionne sur la quasi-totalité des hébergeurs, y compris les plus stricts en matière de sécurité :

# protection wp-config.php
<files wp-config.php>
Order deny,allow
deny from all
</files>

Ce qui aura pour effet d'interdire l'accès à tout le monde à ce fichier sensible en retournant proprement une erreur 403 (fordbidden). WordPress lui ne tiendra pas compte de cette instruction et fonctionnera normalement.

Pour renvoyer le visiteur vers une page particulière suite à cette erreur 403, il vous suffit d'ajouter la directive suivante :

ErrorDocument 403 http://votreblog.fr/votrepage.php

Attention : cette directive renverra toutes les erreurs 403 vers cette page, évitez-donc la page d'accueil comme destination car en cas de bug dans votre code il sera difficile de comprendre l'erreur.

Cacher la présence du fichier (erreur 404)

Si vous souhaitez montrer à l'éventuel pirate que vous êtes plus malin que lui, il vous suffit de masquer l'accès au fichier :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)wp-config(.*)\.php$ [R=404,L]
</IfModule>

Une véritable erreur 404 sera retournée (page not found), de la même façon que si le fichier n'existait pas... de quoi décourager les éventuels pirates qui penseront que votre structure WordPress est entièrement personnalisée et sécurisée.

C'est la page de votre thème /wp-content/themes/votre_theme/404.php qui s'affichera si celle-ci existe.

Masquez le contenu de vos répertoires

Veillez également à utiliser la directive interdisant le "listing" de répertoire. En effet, dans sa configuration par défaut Apache vous affiche le contenu de chaque dossier / sous-dossier ("Index Of").

Vous éviterez par exemple d'attirer les petits curieux susceptibles de vous voler quelques .psd trainant sur votre FTP (même si au fond vous n'aviez qu'a pas en laisser...).

Insérez la directive au tout début de votre fichier .htaccess :

Options All -Indexes

Conclusion

Ce type de manipulation n'est pas rare dans le monde du développement web, tous sites et blogs confondus. Elle permet néanmoins de passer à travers certaines attaques. C'est un pallier de plus quant à la sécurité de votre blog.

Si vous utilisez d'autres méthodes concernant le fichier wp-config.php, n'hésitez pas à m'en faire part.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter