J’avais déjà publié il y a quelques temps un billet assez détaillé vous expliquant comment mieux sécuriser votre installation WordPress et depuis je me suis dit que l’on pouvait encore faire mieux. Nous allons donc nous attacher à améliorer la sécurité des mots de passe WordPress.
Tout d’abord permettez moi de faire le gros lourd mais commencez par n’utiliser qu’un seul mot de passe par site, ensuite générez des mots de passe complexes et enfin mettez en place une double authentification dès que vous en avez la possibilité.
Comment les mots de passe WordPress sont-ils chiffrés ?
Avant d’être stocké dans votre base de donnée votre mot de passe est haché.Ce hash est obtenu par l’intermédiaire d’un framework appelé phpass.
phpass utilise 3 éléments pour hacher votre mot de passe :
- Une fonction de hachage : blowfish, DES ou MD5,
- Un sel (une donnée supplémentaire générée aléatoirement et propre à chaque mot de passe)
- Un nombre d’itérations (la fonction de hachage sera répétée X fois)
WordPress utilise par défaut MD5 comme fonction de hachage (répétée 8192 fois) pour la simple et unique raison qu’elle est supportée par toutes les versions de PHP (depuis PHP 3.0).
Pourquoi faut-il améliorer le chiffrement des mots de passe WordPress ?
Maintenant pour vous donner un ordre d’idée dites vous un GPU Nvidia GTX 1080 Founders Edition est capable de tester:
- 24809,8 MH/s (24809,8 millions de mots de passe par seconde) pour du MD5
- 6857.6 kH/s (6857.6 milliers mots de passe par seconde) pour du phpassMD5Wordpress
- 55195 H/s (55195 mots de passe par seconde) pour du SHA512Crypt (Drupal7)
Comment améliorer le chiffrement des mots de passe WordPress ?
On peut remplacer le chiffrement utilisé par défaut sous WordPress par bcrypt via l’installation d’un plugin. Ce qui implique d’avoir :
- Premièrement un WordPress à jour : bcrypt n’est supporté que depuis la version 4.4. Ce qui est loin d’être grave puisque nous en sommes à la 4.6
- Deuxièmement une version de PHP >= 5.5.0
Quel plugin me permet d’utiliser bcrypt pour chiffrer les mots de passe WordPress ?
J’utilise depuis peu un plugin développé par Roots.io.
Pour l’installer rien de plus simple il vous suffit de récupérer ce fichier ce fichier puis de l’uploder dans le dossier wp-content/mu-plugins/.Pourquoi dans mu-plugins et pas comme un plugin « normal » ? Simplement parce que les mu-plugins (must-use plugin) ne sont pas désactivables dans l’interface d’administration de WordPress ce qui vous évite de les désactiver accidentellement.
Une fois installé, le chiffrement de votre mot de passe sera mis à jour après que vous vous soyez reconnecter sur WordPress. Enfin sachez que si pour une raison X ou Y (mauvaise en tout cas) vous décidiez de supprimer ce plugin, le chiffrement de votre mot de passe ne sera PAS modifié et vous ne rencontrerez aucun problème pour vous identifier.
Sources :
- PHP CMS Out-of-the-Box Security Comparison Chart
- A Closer Look at WordPress Password Hashes
- Nvidia GTX 1080 Hashcat Benchmarks
- Improving your password security
Testé et approuvé.
C’est simple et efficace ^^
Super ! Merci
Faut quand même faire attention.
Qui a testé l’implémentation ? Comment a été faite l’implémentation ? Qui a testé ce truc pour voir s’il y’avait des failles de sécu ?
Les attaques par GPU sont tellement rapides que changé un hash n’aura pas de grand effet malheureusement, faut mieux mettre en place du double auth ou authentification par clef / otp 🙂
Salut Nico,
Si j’ai bien compris, l’auteur ne fait que reprendre les fonctions existantes de WordPress et utilise les librairies incluses par défaut depuis php5.5
Les attaques par GPU sont rapides mais regarde les Benchmarks de Sagitta. La différence nombre d’essais par seconde est abyssale entre phpassMd5 et bcrypt.
Concernant la 2FA je suis tout à fait d’accord avec toi. J’en parle dans mes deux billets 🙂
Un petit fail2ban branché sur le login wordpress rajoute également un bonne protection contre le brute force :-), avec une 2FA en plus ca remonte fortement le niveau nécessaire pour casser la sécurité et au niveau de l’investissement en temps et en puissance ca se relativise beaucoup plus. Comme pour nos maisons, il faut retarder l’intrusion au maximum mais le risque Zero n’existe pas 🙂
Effectivement j’en avais aussi parlé dans l’article « Comment sécuriser WordPress ? » 🙂