(modifié le 15 février 2018 à 18:17)

Aujourd'hui, voyons comment protéger la page d'identification permettant d'accéder au tableau de bord de WordPress.

securiser-blog-wp-partie3

Je vous invite à lire les deux premières parties de cette série de tutoriel si vous les avez raté : partie 1 (l'utilisateur par défaut "admin"), partie 2 (l'accès au fichier wp-config.php).

Pourquoi protéger

Cette page permet à tous les utilisateurs WordPress de se connecter au tableau de bord. Suivant son rôle, le champ d'action de l'utilisateur est plus ou moins limité.

Parmi ces utilisateurs il y a toujours un utilisateur administrateur, disposant de tous les droits sur le blog. Cet utilisateur c'est vous.

Parce que vous n'êtes pas à l'abris des intrusions de personnes indésirables, voici quelques pistes pour sécuriser cet accès.

Limit Login Attempts

L'extension Limit Login Attempts inhibe les tentatives de connexions par technique de force-brute.

Il est possible de bloquer le formulaire d'identification :

limit-login-attempts

"1 attempt remaining" : dernière chance pour entre le bon couple de login/password avant de se faire bannir temporairement.

De nombreux paramètres sont présents dans les options de l'extension :

limit-login-attempts-settings

Il suffit de préciser "after 1 lockout" pour recevoir toutes les notifications par email, pratique (et stressant) si vous êtes en déplacement.

L'extension fonctionne parfaitement sur la version 2.8.4 (bien que 2.7.1 soit indiqué).

Note dév : l'extension utilise la table wp_options avec des attributs commençant par limit_login_*

Login LockDown

Dans les même esprit, Login LockDown protège votre tableau de bord en l'indiquant dès le formulaire d'authentification :

login-lockdown

On retrouve certains paramètres dans les options avec la possibilité de masquer les messages d'erreur ("Mask Login Errors") :

login-lockdown-seetings

Vous pouvez également masquer les erreurs retournées en cas de mauvais login/pass  dans le fichier functions.php de votre thème en insérant le code suivant :

add_filter('login_errors',create_function('$a',"return null;"));

Pensez à activer "Lockout Invalid Usernames" pour éviter que WordPress précise qu'un utilisateur n'existe pas. En effet, cette méthode peut permettre de découvrir quel nom d'utilisateur existe. En activant cette fonctionnalité vous rendez impossible là encore le brut-force.

Note dév : utilise la table wp-lockdowns

Chiffrer l'authentification

Pour chiffrer tout ce qui transite entre vous et votre serveur, l'idéal est d'utiliser un chiffrement SSL. Il permet d'éviter l'interception de données si vous êtes en entreprise, dans un cybercafé, sur un hotspot WiFi, etc. mais consomme beaucoup de ressources système et n'est que rarement proposé par l'hébergeur (payant).

L'extension Semisecure Login Reimagined utilise une clé publique RSA pour chiffrer le login+mot de passe et se sert de la clé publique pour le déchiffrer lors de sa réception. Tout est bien sûr transparent pour vous, seule une petite notification vous informe de la mise en place du plugin :

semisecure

Il faudra que la version PHP de votre serveur ait été compilée avec SSL pour pouvoir l'utiliser.
Dans le cas contraire vous pouvez utiliser le plugin Semisecure Login qui n'utilise pas RSA mais le chiffrement MD5.

Vous pouvez chiffrer l'identifiant, le mot de passe ou les deux :

semisecure-options

Vu la transparence et la fiabilité du chiffrement (RSA) il serait bien dommage de s'en priver ?
Cela n'équivaut pas à via SSL  une authentification HTTPS mais l'algorithme RSA est reconnu comme fiable depuis 25 ans.

Attention toutefois si vous envoyez des fichiers via FTP sur un réseau dont vous n'êtes pas à l'abris d'une écoute, je vous rappel que vos identifiants (mot de passe inclus) transitent en clair. Il est conseillé de créer un compte FTP de façon temporaire pour ce genre de transfert non sûr, ou bien d'encapsuler FTP dans un tunnel SSH (via socks éventuellement).

Un mot de passe jetable

One-Time Password est une extension fonctionnant sur le principe d'un mot de passe unique à chaque connexion, en conformité avec la  RFC2289 du même nom.

Le principe est relativement simple et efficace : le plugin génère une liste de 50 mots de passes qu'il vous faudra imprimer ou garder en lieu sûr.
Comme si chaque mot de passe était une allumette, une fois usagée il est impossible de s'en servir à nouveau.

A chaque connexion sur votre blog il vous sera demandé le mot de passe correspondant à l'identifiant affiché (Seq). Une fois authentifié ce mot de passe ne sera plus utilisable (détruit) détruit et l'identifiant décrémenté.

La première étape consiste à entrer un passphrase qui servira à la génération des X (au choix) mots de passes aléatoires :

one-time_generate

Je vous recommande de choisir SHA1 comme algorithme de chiffrement.

Cliquer sur Generate puis imprimer la liste de mot de passe (ou stockez-là dans un lieu sûr, chiffrée de préférence) :

one-time_password-list

On retrouve 3 colonnes avec :

  1. Seq :  identifiant
  2. Hex : mot de passe en héxadécimal
  3. Words : mot de passe, plus facile à mémoriser car composé de mots anglais

Il vous suffit ensuite d'entrer votre login puis le mot de passe (en hexa ou en mots) depuis votre liste précédemment imprimée en fonction de l'identifiant affiché :

one-time_login

Par mesure de sécurité, vous pouvez toujours vous connecter via votre mot de passe d'origine.

Réservez donc cette solution pour une connexion non sûre dans un cybercafé, chez un ami qui a des virus, sur un hotspot non chiffré ou même sur un PC comportant un keylogger !

Je rappelle que le but de l'extension n'est pas de chiffrer mais simplement de fournir des mots de passes à usage unique (sans taxe carbone rassurez-vous 😉 ).

PHP >= 5.0.0 ainsi que WordPress >= 2.8 sont des pré-requis.

Personnaliser l'adresse de connexion

Il vous suffit d'utiliser le plugin Stealth Login pour personnaliser l'adresse d'accès du tableau de bord, de connexion et de déconnexion.

Au lieu de vous rendre sur http://site.fr/wp-admin vous irez sur http://site.fr/admin par exemple :

stealth-login

Le plugin ajoute simplement quelques lignes de rewrite dans votre fichier .htaccess. Vous pouvez donc tout à fait désactiver voir supprimer le plugin une fois vos adresses configurées.

Attention : cela ne désactive pas l'accès via via l'URL /wp-admin mais crée simplement d'autres URL personnalisées

Conclusion

Chacun de ces plugins permet d'ajouter un pallier de sécurité quant à la sécurité de votre blog WordPress. Ils ne sont pas infaillibles mais c'est toujours mieux que de ne rien avoir.

Ne les installez/activez pas tous à la fois, certains jouant le même rôle vous risqueriez d'avoir pas mal de conflits puisqu'ils ne sont pas fait pour fonctionner en même temps.

Attention tout de même à garder ces plugin à jour, car en cas de faille ils pourraient bien jouer le rôle inverse que de vous protéger.

http://wordpress.org/extend/plugins/semisecure-login-reimagined/

Auteur : Mr Xhark

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