Comment sécuriser son site WordPress en 12 étapes

n site Depuis quelques temps mes différents sites sont régulièrement victimes d’attaques afin de prendre le contrôle de mes comptes admin. Pour l’instant je croise les doigts je n’ai pas subi de préjudices trop graves, mais autant partager avec vous quelques astuces pour sécuriser vous aussi votre blog. Je ne suis clairement pas un expert du sujet, donc n’hésitez pas à compléter cet article via les commentaires !

De plus en plus de personnes ont décidé d’ouvrir leurs propres portails informatiques. Que cela soit pour partager leurs idées sur un sujet ou encore pour se lancer dans l’e-commerce, la plupart d’eux ont choisi de créer un site WordPress. Ce moteur de blog est actuellement le CMS le plus employé au monde.

Comment sécuriser son site WordPress en 12 étapes

Les raisons de la popularité de WordPress

WordPress était à ses débuts un outil pour créer des sites  d’internet basiques. Ce logiciel en Open Source a ensuite été amélioré au fil des années pour devenir un CMS performant mais surtout simple d’utilisation. La communauté de développeurs qui se consacre à son amélioration veut proposer un utilitaire accessible à tous pour la conception d’une plateforme web. Aujourd’hui, tout le monde peut utiliser WordPress pour être présent sur l’internet.

Les utilisateurs n’auront pas à écrire une ligne de code pour obtenir un portail répondant à leurs besoins. L’outil met à la disposition des particuliers une infinité de modèles de sites qu’ils peuvent personnaliser à souhait. Ils peuvent créer un blog, une boutique en ligne ou encore un site professionnel. WordPress propose même une solution d’hébergement gratuite. Néanmoins, cela limitera les options d’administration de la plateforme par la suite.

Les risques de piratage pour un site WordPress

En 2015, 25 % des sites mis en ligne avaient été créés et gérés avec WordPress. Aujourd’hui, Ce CMS est le plus employé au monde. Il a réussi à attiser la curiosité des hackers. De nombreux pirates informatiques s’amusent à détourner l’accès  aux  sites WordPress. Dans ce contexte, les particuliers qui envisagent de créer leurs portails avec ce moteur de blog doivent prendre certaines précautions. Dans le but d’éviter les risques de piratage, faire appel à des professionnels est conseillé.

Ils mettront tout en œuvre pour renforcer la sécurité WordPress. Outre d’ajouter des plug-ins utiles, ils useront de certaines techniques pour détecter la moindre tentative d’intrusion. L’administrateur n’aura alors plus à surveiller la disponibilité de son site constamment. Les gérants pourront ainsi se consacrer à leurs activités. Ils peuvent entre autres se concentrer sur une stratégie digitale efficace pour augmenter le trafic. Les prestataires peuvent aussi leur suggérer les meilleures approches dans ce domaine.

Mettez à jour votre installation et vos plugins

On ne vous le dira jamais assez, mettez tout à jour dès qu’une nouvelle version de WordPress ou de vos plugins est disponible.
Ces mises à jour résolvent souvent des failles de sécurité…

Masquez votre compte administrateur

Lors de l’installation de votre site ne choisissez ni admin comme nom de compte ni votre prénom ou votre nom de famille. Ces comptes sont les premiers qui seront testé par les hackers !
S’il est trop tard pour cela vous pouvez changer le nom de votre compte via phpMyAdmin ou par l’intermédiaire de plugins mais je vous conseille plutôt de :

  • créer un nouvel utilisateur admin
  • supprimer votre premier compte admin
  • et transférer vos articles sur ce nouveau compte

Rassurez-vous ces options sont très bien expliquées lors de la suppression d’un compte.

Pourquoi faire cela ?
Tout simplement parce qu’il est possible de découvrir assez facilement le login de votre premier utilisateur (ici l’admin) en détournant l’utilisation la chaîne author=1.

Seulement il ne faut pas s’arrêter là car votre login admin peut encore être retrouvé en analysant … vos commentaires !
En effet WordPress va rajouter automatiquement une classe comment-author-votrelogin à chacun de vos commentaires… Ballot non ?

Pour éviter cela il vous suffit d’intégrer le petit hack suivant dans le fichier functions.php de votre thème :

function remove_comment_author_class( $classes ) {
foreach( $classes as $key => $class ) {
if(strstr($class, "comment-author-")) {
unset( $classes[$key]
);
}
}
return $classes;
}
add_filter( 'comment_class',  'remove_comment_author_class' );

Ce n’est pas fini ! Car votre login apparait aussi dans la balise qui se trouve dans votre flux RSS.

Manque de bol il n’existe pas de hack pour l’enlever proprement…
Vous allez donc devoir procéder en 3 étapes :

  • Copier le fichier /wp-includes/feed-rss2.php dans le répertoire de votre thème
  • Editez-le et remplacez la balise  par ce que vous voulez
    Exemple :
  • Rajoutez le code suivant dans votre fichier functions.php :

function create_my_custom_feed() {
load_template( TEMPLATEPATH . '/feed-rss2.php');
}
add_feed('rss2', 'create_my_custom_feed');

Et voilà !
Bonne chance pour trouver votre login de connexion maintenant 😉

Cryptez mieux votre mot de passe

C’est évident mais je le rappelle quand même : n’utilisez pas votre login, votre prénom ou tout mot de passe qui serait facile à deviner.
Idéalement mettez-y des caractères spéciaux des chiffres, des majuscules, des minuscules, etc.

Par défaut les mots de passe WordPress sont encryptés en MD5, et donc « relativement » faciles à cracker.

Semisecure Login Reimagined remplace ce cryptage par un la combinaison plus solide d’une clé publique et d’une clé privée d’encryption.

Télécharger le plugin : Semisecure Login Reimagined

Limitez les tentatives de connexion infructueuses

User Locker permet de limiter le nombre de tentatives de connexion avant de bloquer un compte.

Dès qu’un compte est bloqué, il ne peut être débloqué qu’en faisant une demande de nouveau mot de passe !
Les attaques en force brute sont donc impossibles 🙂

Télécharger le plugin : User Locker

Rajoutez une clef supplémentaire à votre installation WordPress

Lors de votre installation WordPress il y a fort à parier que vous n’avez pas changé votre clef secrète, utilisée notamment pour encrypter vos connexions à votre base de données SQL .
Qu’à cela ne tienne, ça se corrige facilement !

Cliquez sur ce lien : Génération d’une clef privée WordPress

Copiez les 4 lignes qui devraient ressembler à cela :

define('AUTH_KEY',        '[tCP...');
define('SECURE_AUTH_KEY', 'fEwx...');
define('LOGGED_IN_KEY',   'p8Ky...');
define('NONCE_KEY',       '7Kl*...');

Et collez les dans votre fichier wp-config.php

Masquez votre version de WordPress

Il existe des plug-ins mais autant rajouter ces quelques lignes dans votre fichier functions.php :

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action('wp_head', 'wp_dlmp_l10n_style' );
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

Oui je sais … je ne masque pas que la version mais le reste ne sert à rien non plus 😉

Supprimez également le fichier readme.html qui se trouve à la racine de votre installation et qui contient … le numéro de votre version WP installée.

Protégez vos répertoires

Un des soucis de WordPress c’est que le CMS est open-source et très connu.
Par conséquent n’importe qui peut le télécharger et découvrir en 5 minutes l’architecture de votre site, et parfois ses failles…

Pour une raison que je ne comprends pas la plupart des répertoires ne sont pas protégés en lecture.

Dans le répertoire racine de votre blog se trouve le fichier .htaccess qui définit certaines règles de sécurité ainsi que les règles d’URL rewriting.

Rajoutez au début du fichier les ligne suivantes :

order allow,deny
deny from all
satisfy all

order allow,deny
deny from all

Options -Indexes
ServerSignature Off

Les 2 premiers blocs limitent les accès à vos fichiers .htaccess et wp-config.php (où se trouvent EN CLAIR vos login/password de connexion à votre Base de données).

Les 2 dernières lignes protègent en lecture les répertoires et masquent la signature de votre serveur Apache.

Pour rajouter une protection à vos différents répertoires en lecture, créez ensuite un fichier vide nommé index.php, et copiez le dans les répertoires suivants :

  • /wp-content/
  • /wp-content/plugins/
  • /wp-content/uploads/

Modifiez le préfixe de vos bases de données

Par défaut les bases de données WordPress sont préfixées de wp_ Vous pouvez changer ce réglage lors de votre première installation mais la plupart des gens ne sachant pas de quoi il retourne valident le réglage tel quel.

Par conséquent les hackers qui tentent de vous pirater par injection SQL savent déjà par quelles noms de bases commencer !

Vous pouvez modifier ça à la main via quelques lignes de SQL, mais autant faire simple, installez WP Security Scan qui se charge de ça tout seul comme un grand.

Supprimez des plug-ins

Les plug-ins sont parfois truffés de failles de sécurité.
Pour vous en convaincre, allez faire un tour chez le spécialiste du sujet, j’ai nommé Julio Potier le webmaster de Boite a Web.
Donc autant que possible limitez le nombre de plug-ins installés et dès que vous en désactivez un SUPPRIMEZ LE !
Car même inactifs certains plug-ins mal codés peuvent fragiliser votre installation …

Masquez le nom de votre thème

Tout comme les plug-ins, certains thèmes présentent des failles de sécurité.
Histoire de brouiller les pistes :

/*
Theme Name: mon-thème 1.0
Theme URI: http://adresse-de-mon-theme
Description: ah bah ...
Version: 1.0
Author: Moiiiii
Author URI: http://adresse-de-l-auteur
*/

Seul petit inconvénient : vous devrez faire d’éventuelles mises à jour de ce thème « à la main ».

Installez Cloudflare

Bon là on passe à un autre sujet … Je n’aborderai pas ici la question des performances (minification à la volée, semi-CDN, chargement JS asychrone, etc.) que propose Cloudflare, ni même son intégration au  projet Honey Pot qui permet d’arrêter les spammeurs (I loooooooove Cloudflare).

Mais je vous dirais juste ceci : en passant par Cloudflare comme CDN gratuit vous affichez au spammers et hackers les DNS de Cloudlfare, et vous serez donc protégés des attaques DDoS ainsi que de certaines injections SQL malicieuses 🙂

Pour installer Cloudflare rendez-vous ici :  https://www.cloudflare.com

Histoire de faire ceinture et bretelle j’ai également installé le plug-in  Bad Behavior même si je pense que ça devient pour le coup complètement inutile (vos avis sont les bienvenus d’ailleurs).

Verifiez que vous êtes bien protégés

Installez le plug-in WP Security Scan, suivez les indications proposées, puis supprimez le plug-in 🙂

Vous pouvez aller encore un cran plus loin en installant 6Scan SecurityBulletProof Security ou AskApache Password Protect mais mal utilisés ces plug-ins ont vite fait de mettre la grouille dans votre install… donc prenez vos précautions !

Et vous ? Vous ajouteriez quoi comme mesure efficace de sécurité ?