Sécuriser son site WordPress

Sécuriser votre WordPressLes attaques massives de sites WordPress qui se sont produites ces derniers temps (voir un article sur clubic.com) m’ont donné envie de regarder de plus près comment limiter les risques. Avant de voir les plugins existants concernant la sécurité, regardons ce que l’on peut faire directement au niveau de l’installation ou de la configuration.

1. Ne pas utiliser le pseudo Admin. La grande majorité des attaques sera de type « brute force », un petit malin va tenter une multitude de couple pseudo/mot-de-passe jusqu’à arriver à se connecter. Si vous utiliser le pseudo Admin, son travail n’en sera que plus simple.

2. Ne pas utiliser le préfix wp_. La structure des tables est publique mais si vous personnalisez le préfixe (via le fichier wp_config.php), vous compliquerez la vie du hacker.

3. Bloquer la navigation des dossiers. Par défaut, après une installation classique de WordPress, tous les dossiers sont accessibles, certains sont protégés par un fichier index.php ou index.html qui empêchera le listing du contenu du fichier, mais ce n’est pas forcément le cas pour tous les plugins que vous installerez. Pour éviter cela, ajoutez la directive suivante dans un fichier .htaccess ou dans votre configuration apache.

Options All -Indexes

4. Générer des clés d’authentification. Lors de la création du fichier wp-config.php, ne négligez pas l’étape concernant les clés d’authentification. D’autant que WordPress vous fournit une api pour les générer et que vous n’aurez qu’à les copier / coller.

5. Mettre à jour votre WordPress. Losqu’une faille de sécurité est détectée dans WordPress il est fort probable qu’elle sera corrigée dans la version suivante. Garder votre WordPress à jour, ainsi que les extensions que vous utilisez, c’est aussi corriger les problèmes de sécurité. Ceci implique également de privilégier les plugins mis à jour régulièrement par rapport à ceux qui n’ont pas évolué depuis longtemps.

6. Masquer la version utilisée. Les failles de sécurité connues sont corrigées et n’affectent donc que certaines versions : connaître la version c’est donc connaître les failles qui vont pouvoir être exploitées. La première chose à faire pour masquer la version est de supprimer le fichier readme.html qui est à la racine de votre site et qui affiche le numéro de version. Ensuite si vous affichez le code source de votre site vous verrez surement la ligne suivante :

<meta name="generator" content="WordPress 3.5.1" />

Pour supprimer cette ligne, la manipulation va dépendre du thème que vous utilisez : soit la ligne sera à supprimer du fichier header.php de votre thème, soit si vous ne l’y voyez pas, il vous faudra éditer le fichier functions.php de votre thème et ajouter la ligne suivante :

remove_action('wp_head', 'wp_generator');

7. Désactiver l’édition des thèmes, plugins depuis l’admin. Fonctionnalité rarement utilisée par un utilisateur final, la possibilité d’éditer le code des thèmes ou plugins directement depuis l’interface d’admin (via le menu Exensions -> Éditeur) peut être très dangereuse si une personne mal intentionnée parvient à se connecter à votre site. Pour la désactiver, ajoutez la ligne suivante à votre fichier wp-config.php

define('DISALLOW_FILE_EDIT',true);

8. Interdire l’ajout de plugins aux utilisateurs. Si comme moi vous installez les plugins manuellement en les copiant directement dans le répertoire wp-content/plugins, ou si vous n’installez que rarement de nouveaux plugins, vous pouvez interdire l’installation de nouveaux plugins en ajoutant la ligne suivante dans le fichier wp-config.php :

define('DISALLOW_FILE_MODS',true);

La modification du point 7 empêchera un hacker de modifier un de vos plugins et celle du point 8 l’empêchera d’installer sa propre extension.

9. Interdire l’accès au fichier wp-config.php. Comme vous l’avez remarqué, le fichier wp-config.php contient des informations critiques sur votre site. Le dernier conseil de cette série est donc de restreindre l’accès à ce fichier, via un fichier .htaccess ou la configuration Apache en ajoutant les lignes suivantes :

<Files "wp-config.php">
        Order allow,deny
        Deny from all
</Files>

Votre site WordPress est maintenant un peu moins vulnérable, mais n’oubliez pas le vieil adage: « Hacker vaillant, rien d’impossible ». Pensez à sauvegarder régulièrement votre base de données et votre site pour pouvoir le restaurer rapidement s’il venait à être modifié.

About the Author: Guillaume Luchet

Guillaume Luchet est Directeur de la R&D et Lead Développeur chez Bilendi Technology, entrepreneur et développeur freelance.