Sécuriser WordPress : Les bases

Dans cet articles, nous allons voir quelques bases pour sécuriser votre site sous WordPress.

La sécurité WordPress en chiffres

  • 41% des sites WordPress ont été hackés à cause d’une faille de sécurité au niveau de la plateforme d’hébergement.
  • 29% ont été piratés à cause d’un problème de sécurité au niveau du thème WordPress utilisé.
  • 22% ont été piratés à cause d’un problème de sécurité au niveau des plugins utilisés.
  • 8% des sites WordPress ont été piratés à cause d’un mot de passe trop faible.

Sécuriser WordPress

Choisir un hébergement sécurisé

Voici quelques critères important pour sélectionner un hébergeur :

  • Compatible WordPress
  • Présence d’un firewall optimisé pour WordPress (WAF : Web Application Firewall)
  • Dernières versions de PHP et MySQL ou MariaDB
  • Présence d’un outil de détection / protection d’intrusion (IDS / IPS Intrusion detection / protection system)
  • Présence de personnel réactif et formé à la sécurité.

Faites une sauvegarde

Avant chaque modification importante, prenez l’habitude de toujours effectuer une sauvegarde.
Cela vous permettra de restaurer facilement votre blog en cas de problème.

Je vous recommande le plugin Updraft Plus qui permet, très simplement, de sauvegarder vos données automatiquement ou de lancer une sauvegarde ponctuelle en un clic.

Au passage, je vous conseille aussi de télécharger votre dernière sauvegarde sous forme de fichier. Ce fichier pourra être utilisé pour restaurer votre blog ou effectuer une migration.

Les mises à jour de WordPress

Comme partout il est important d’effectuer les mises à jour rapidement, afin de disposer des derniers correctifs.

On évite ainsi de laisser de laisser traîner des vulnérabilités inutiles.

Si deux plugins ont la même fonction, préférez celui qui à été mis à jour le plus récemment.
Pensez aussi à désinstaller les plugins dont vous ne vous servez pas.

Automatiser les mises à jour

N’appliquez les MàJ auto que si vous avez la possibilité d’être vraiment réactif en cas de problème. Dans le cas contraire, laissez par défaut et faites vos MàJ manuellement.

Les mises à jour du cœur de WordPress

  1. Connectez vous en FTP afin d’éditer les fichiers de votre site.
  2. Ouvrez le fichier wp-config.php situé à la base (la racine) du site.
  3. Faites Ctrl + F afin de rechercher :
    define( ‘WP_AUTO_UPDATE_CORE’, false );
  4. Écrivez un commentaire au dessus pour le retrouver facilement :
    # MODIF : MàJ wp auto
  5. Passez la valeur à true

Les mises à jour des Thèmes

Toujours dans wp-config.php :

  • Faites Ctrl + F afin de rechercher, puis modifiez :
    Si cette ligne n’est pas présente, ajoutez-la.
add_filter( 'auto_update_theme', '__return_true' );
  • Écrivez un commentaire au dessus pour le retrouver facilement : # MODIF : MàJ theme auto

Au passage, je vous conseille aussi d’installer le plugin Theme Check qui vous permettra de vérifier présence des problèmes dans votre thème .
Vous pouvez le désactiver lorsqu’il ne sert pas.

Les mises à jour des Plugin

Toujours dans wp-config.php :

  • Faites Ctrl + F afin de rechercher, puis modifiez (ou ajoutez) les lignes :
# MODIF : MàJ plugin auto
add_filter( 'auto_update_plugin', '__return_true' );

Désactivés les fonctionnalités risquées

Désactiver l’édition de fichiers

Comme je l’ai expliqué dans cet article, il est préférable de désactiver l’édition de fichiers depuis votre espace d’admin. Car si quelqu’un parvient à y accéder, il pourrait supprimer votre site, ou uploader un shell lui donnant un contrôle quasi-total sur la machine.

Toujours dans wp-config.php :

  • Recherchez et modifiez (ou ajoutez) les lignes :
# Désactiver l'édition de theme et plugin depuis l'espace admin
define ( 'DISALLOW_FILE_EDIT', false );
  • Passez la valeur à true

Désactiver le rapport d’erreur PHP

Ce rapport est susceptible de faire apparaître le chemin vers votre serveur.

  • Recherchez et modifiez (ou ajoutez) les ligne :
# Désactiver le rapport d’erreur PHP
error_reporting(0);
@ini_set('display_errors', 0);
  • Passez la valeur à true

Renforcer vos informations de login

Utiliser un gestionnaire de mots de passe

Vous avez besoin :

  • d’ utiliser des mots de passe longs,
  • d’ utiliser des mots de passe forts (Maj, min, chiffres, caractères spéciaux)
  • de changer fréquemment vos mots de passe .
  • de ne jamais utiliser deux fois le même mot de passe

Pour palier à tout cela, sans risquer d’oublier vos mots de passes, vous DEVEZ utiliser un gestionnaire de mots de passe.

Je vous recommande Keepass qui est libre, gratuit, et dispo sur tous les systèmes.
J’en parle dans cet article.

Vérifier les éventuels Leaks (fuites)

Utiliser des mots de passes forts n’est malheureusement pas suffisant.
Il arrive que les systèmes partenaires que vous utilisez se fassent voler (dumper) leurs bases de données de clients.

Vos informations sont ensuite vendues, partagées, puis accessibles à tout le monde sur le DeepWeb (voir cet article pour plus d’infos)

Pour vérifier si vos adresses e-mail figurent sur ces listes volées, vous pouvez utiliser le service HaveIBeenPawned.

Faites un test de temps en temps et si le résultat est alarmant changez le mot de passe de votre e-mail immédiatement.

Modifier le login par défaut : admin

Si vous n’avez pas personnalisé votre login lors de la création de votre site :

Comme toujours, avant tout changement, FAITES UNE SAUVEGARDE !

  1. Connectez vous à PhpMyAdmin, l’interface de gestion de votre BDD (Base De Données).
  2. Repérez dans quelle table se situe la liste des login (ex : wp-users)
  3. Exécuter la commande SQL suivant, en remplaçant le le nom de la table (wp-users) et le login (login) choisi, par les votre :
UPDATE wp_users SET user_login = 'login' WHERE user_login = 'admin';

Bloquer les accès

Bloquer l’accès à la page d’admin

Installez le plugin WPS Hide Login.
Il permet de remplacer l’emplacement de la page de login par celui que vous souhaitez.
Ex : monblog.fr/admin >>> monblog.fr/kjfdamkjzf

Vous pouvez également rajouter à la place une page Stop ou Accès Interdit.

Exemple :

Bloquer la navigation dans les dossiers

Par défaut, n’importe qui peut accéder au contenu de vos dossiers par défaut (comme wp-content) via un simple navigateur.

Pour empêcher la navigation dans un dossier, créez à l’intérieur, un fichier nommé .htaccess ou s’il est déjà présent, ajoutez y :

## MODIF
# Bloquer la lecture des dossiers  .htaccess
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>

Supprimer le numéro de version

Par défaut, WordPress insère une balise méta dans le code de votre site qui indique la version de WordPress que vous utilisez :

<meta name="generator" content="WordPress 3.9.1">
  • Rendez vous sur votre FTP dans le fichier /wp-includes/functions.php et ajoutez :
    Attention, le fichier functions.php à modifier est celui de votre thème enfant.
    Si vous n’avez pas encore de thème enfant, suivez ce tuto pour en créer un.
# MODIF : supprimer version
remove_action('wp_head', 'wp_generator');
  • Sauvez le fichier et actualiser votre site.
  • Affichez le code source et recherchez (toujours Ctrl + F) : generator
    Si la présence d’une ligne semblable semblable a celle-ci persiste :
<meta name="generator" content="WordPress 3.0.5" />
  • Ouvrez le fichier header.php de votre thème et supprimez la ligne :
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
  • Sauvez le fichier et actualiser votre site.

Le numéro de version ne devrait plus apparaître dans votre code source. Il ne pourra pas être utilisé pour rechercher de le failles présentes.

Installez de plugins

Il existe aussi des plugins chargés d’améliorer votre sécurité, grâce à l’ajout de certaines fonctionnalités (limite de tentatives de login, etc…) comme BulletProof ou WordFence

A vous de tester et voir lesquels vous préférez.

Dans un prochain article, je vous proposerai une liste des meilleurs plugins pour WordPress.

En attendant, retrouvez d’autres tutos WordPress, tutos Dev, et tutos Hacking.

Laisser un commentaire

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