Votre site WordPress et sa sécurité

img-securite-1200x800

Vous avez ou allez avoir un site… vous souhaitez qu’il soit possible de la mettre à jour sans logiciel professionnel, WordPress est l’outil convivial par excellence. Sa facilité d’utilisation, sa modularité tant en extensions (plugins) qu’en interfaces graphiques (thèmes) lui valent d’être un des gestionnaires de contenu (CMS) préféré des webmasters…

Sa popularité en fait un outil que bon nombre de hackers aiment exploiter. Si vous souhaitez comprendre le pourquoi de ces envies de piratages, voici un article intéressant (même s’il est de 2014, il reste d’actualité).

Premiers pas : installation

Tout commence lors de l’installation de WordPress… Il faut toujours éviter de préfixer les tables SQL avec wp_.

Ensuite, une des dernières étapes de l’installation est la création du premier membres du site, l’administrateur.
Il est important de ne pas l’appeler admin ou administrateur ou encore administrator.
De même, le mot de passe de cet utilisateur doit être composé d’au moins 8 caractères… ayant pour combinaison des lettres majuscules, minuscules et chiffres.
Si vous avez des doutes, vous pouvez utiliser un générateur de mots de passe aléatoires.

Au niveau paramétrage de votre tableau de bord, ne pas autoriser les pings sur les pages et articles :
les sites WordPress ont l’option pingback activée, cela peut être utilisé pour une attaque DDOS contre d’autres sites.
Si vous souhaitez désactiver cela : Réglages => Général => Réglages par défaut des articles (pingbacks and trackbacks).

Changer le nom d’affichage des membres… Par défaut l’identifiant de connexion est affiché pour l’auteur d’un article. Il convient d’ajouter un pseudonyme et de l’utiliser pour l’affichage (Modifier mon profil => Ajouter un pseudonyme => Nom à afficher publiquement).

Si vous ne comptez pas avoir des membres inscrits à votre site, ou les inscrire par vous-même, désactivez la fonction…

Du côté serveur web

Pour les étapes suivantes, vous devrez utiliser un (logiciel) client FTP, du genre FileZilla.

Par défaut, WordPress permet l’édition de certain fichiers en ligne. Il est important de désactiver cette fonction ; pour se faire, ajouter une ligne dans le fichier wp-config.php

define( 'DISALLOW_FILE_EDIT', true );

La personnalisation du fichier .htaccess en créant des règles de protection sur le serveur (Apache) hébergeant le site. C’est l’un des éléments important de la sécurisation de votre site internet.

Le fichier wp-config.php contient, entre autres, les informations de connexion à la base de données. Il est donc impératif qu’il ne puisse être lu ou modifié. De même pour le fichier .htaccess. Les 3 autres fichiers ajoutés, sont pour éviter de détecter que le site est motorisé par WordPress.

Le protocole XMLRPC est utilisé par WordPress, il permet d’exécuter toute une série de fonctions à distance.
Créer / Modifier un article ou un catégorie ou une page ou un tag ou un commentaire. Si vous n’utilisez pas cette fonctionnalité, il est important de la rendre inutilisable.

Pour info, une injection SQL consiste à modifier une requête en injectant des morceaux de code non filtrés, généralement par le biais d’un formulaire. Pour plus de détails

## Protection des fichiers sensibles
<files wp-config.php>
    Order allow,deny
    deny from all
</files>

<files .htaccess>
    Order allow,deny
    deny from all
</Files>

<files readme.html>
    Order allow,deny
    deny from all
</files>

<files license.txt>
    Order allow,deny
    deny from all
</files>

<files error_log>
    Order allow,deny
    deny from all
</files>

## Désactiver le parcours sur le serveur hébergeant votre site
Options All -Indexes

## Désactiver l'utilisation de l'API XMLRPC
<Files xmlrpc.php>
    order deny,allow
    deny from all
</Files>

## Protection contre les injections SQL
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Lorsque l’édition des fichiers .htaccess et wp-config.php est terminée, votre client FTP vous permet de modifier les droits (CHMOD) sur ces fichiers… La valeur 400 est une combinaison fiable : seul le propriétaire peut lire (pas modifier ou exécuter) ces fichiers. Le groupe n’a alors aucune possibilité, tout comme « le public ».

Quelques fonctions importantes

Nous allons maintenant ajouter quelques fonctions au fichier functions.php du thème actif (attention, si vous changez de thème il faudra mettre à jour le fichier correspondant).

La fonction suivante redirige la page d’un auteur vers la page d’accueil du site.

// Masque les utilisateurs
add_action('template_redirect', 'bwp_template_redirect');
function bwp_template_redirect()
{
if (is_author())
{
wp_redirect( home_url() ); exit;
}
}

Certaines informations présentes dans le code source des pages générées par WordPress indique quel en est le générateur… il convient de les retirer.

// Retire du code source les infos WordPress des en-tête et flux
function complete_version_removal() {
return '';
}
add_filter('the_generator', 'complete_version_removal');

Quelques plugins pour sécuriser

L’ajout de plugins permet d’améliorer encore la sécurité…

Un gratuit très intéressant : Login LockDown (lorsque des tentatives de connexion sont repérées, et qu’elles échouent (après 5 fois par exemple), l’adresse IP essayant de se connecter est bannie pour 1 heure ou plus)…

Payant : « Hide my WP » (bloque de nombreuses tentatives de piratage, et modifie le code source des pages. Il est alors impossible de savoir que le site est motorisé par le très populaire gestionnaire de contenu…

Pour garder un œil sur les failles de sécurité des plugins que vous utilisez : Plugin Security Scanner

Un peu de rigueur

Il est important de maintenir WordPress à jour, ainsi que les plugins que vous avez installés. Surtout, ceux dont vous n’avez pas l’utilité doivent être désactivés. Ou mieux, complètement désinstallés.

Faire des sauvegardes régulières de votre site vous permet, en cas de piratage, de le restaurer rapidement. Et éventuellement, de le migrer vers un autre hébergeur.

La qualité de l’hébergement de sites est un critère non négligeable…

La machine qui vous permet d’administrer votre site doit aussi être à jour au niveau sécurité.

En conclusion

Cet article a pour vocation de vous aider à sécuriser à minima votre installation. Les fonctions et les possibilités de WordPress sont difficilement quantifiables.

Il est bien sûr possible d’utiliser d’autres plugins ou méthodes pour éviter que votre site se retrouve inaccessible ou dégradé à cause de malveillances.

Image : Yuri Samoilov

Cela vous a plus ? Partagez autour de vous

Envie d’un autre article ?

Laisser un commentaire

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