Cet article est une réponse à celui de Yoast sur https://yoast.com/wordpress-security/ (anglais).
Yoast est une entreprise SEO dans l’écosystème WordPress depuis 10 ans maintenant. Ce sont des pros sans aucun doute, mais pour des sujets SEO et pas pour la sécurité.
Après ma lecture sur cet article en particulier, je me devais d’y faire une réponse et corriger leurs erreurs. Certains points sont bons, mais d’autres sont tellement mauvais qu’ils pourraient rendre un site vulnérable à des attaques et se faire pirater, vraiment.
Donner des conseils de sécurité sans savoir pourquoi est une des pires idées. Je fais de la plomberie mais ça ne me viendrais pas à l’idée de créer sur ce blog un article donnant des conseils pour autant. Ces mauvais points trainent déjà sur Internet depuis des années, mais avec un peu de chance Google ne nous donnera plus ces résultats en premier, non ?
Faux à cause de ce nouvel article de Yoast, désolé :/
1. N’utilisez pas ‘admin’ en nom d’utilisateur
Yoast dit “Si vous travaillez sur un ancien site qui a déjà un compte ‘admin’, il est peut-être temps de supprimer ce compte et transférer son contenu ou accès sur un compte avec un nom plus sécurisé !”.
Ok alors disons que j’ai un site, comme un e-commerce, ou n’importe quel autre qui a les inscriptions ouvertes. Tout le monde peut devenir un simple membre.
Si j’écoute le conseil de Yoast, je dois supprimer le compte “admin“. Et après ?
N’importe qui peut (re-créer le compte “admin” puisqu’il est dispo ? Et mettre le mot de passe “123” ? Juste pour rigoler ?
Wow, ce n’est pas du tout sécurisé. N’importe quel tentative d’un script basique d’un pirate pourra s’y connecter.
La véritable chose à faire, ne supprimez pas le compte “admin” si vous avez les inscriptions ouvertes, à la place, rétrogradez son rôle sur “Aucun rôle sur ce site“.
Si vous n’avez pas les inscriptions ouvertes, vous pouvez supprimer, ok.
Démo de 2011 avec IFTTT
#ifttt c'est #secure ? http://img842.imageshack.us/img842/2586/iftttadmin.jpg << à voir 😉
— Julio Potier Ⓦ (@JulioPotier) March 23, 2011
L’image n’est plus disponible (2011) mais le nom du fichier parle tout seul. J’avais créé le compte “admin” chez ifttt.com car ils ne l’avaient pas sécurisé, ils m’ont contacté pour me demander de changer. Vous pouvez aussi interdire la création de ce nom d’utilisateur.
Merci à SecuPress, il sécurisera votre compte “admin” et bloquera la création de ces noms nativement.
2. Utilisez un mot de passe complexe
La complexité est pour les cerveaux humains. Pour un ordinateur ou un script, un caractère est un caractère. Si vous pensez que “*” ou “!” est plus sécurisé que “a” or “b”, ne vous trompez pas, ce n’est que votre cerveau qui vous trompe.
Un bon mot de passe est un mot de passe long.
Bon point, 1Password et LastPass sont de bons logiciels pour faire cette tâche.
3. Ajoutez une authentification à 2 facteurs (2FA)
Bien entendu, une 2FA est bien plus recommandée qu’un “bon mot de passe”. Dans SecuPress nous utilisons une 2FA “PasswordLess” (sans mot de passe), vous recevez un mail quand vous voulez vous connecter, avec seulement votre nom d’utilisateur, le mot de passe est mort !
4. Utilisez les principes du moindre privilège
Encore un bon point, et ça aurait pu être mis en pratique sur le rôle de “admin” au lieu de le supprimer.
5. Cacher le wp-config.php et .htaccess
L’article dit :
“Pour plus de sécurité WordPress, vous aurez besoin d’ajouter ceci dans votre fichier .htaccess pour protéger le wp-config.php:”
Ok, mais, quel plus de sécurité, quelle protection cela ajoute à mon site, à mon fichier ?
Cela reste (encore) non expliqué. Pourquoi ? Car ils ne savent pas pourquoi ils le font !
Aussi, cela ne cache rien, et même si ça le faisait, cacher n’est pas sécuriser…
Allez, voyons le code maintenant.
[pastacode lang=”apacheconf” manual=”%3CFiles%20wp-config.php%3E%0Aorder%20allow%2Cdeny%20%0Adeny%20from%20all%0A%3C%2FFiles%3E” message=”” highlight=”” provider=”manual”/]
Sans ce code, qu’arrive-t-il à votre fichier wp-config.php
si on y accède sur votre site ? Page blanche.
Pourquoi ? Car c’est une page PHP, sans rien à afficher. Vous ne pouvez pas lire son contenu juste en accédant à son URL, jamais.
Alors que fait ce code ? Il retourne une erreur HTTP 403 au lieu d’un HTTP OK 200. Quelle différence pour notre sécurité ? Aucune. Dans les 2 cas, vous ne pouvez pas accéder au contenu du fichier.
Ce n’est ni caché, ni plus sécurisé.
Peut-être pensez-vous aux possibles vulnérablitiés qui pourraient cibler ce fichier pour le lire, c’est ça ? Comme l’ancienne faille de Revolution Slider de aout 2014 où un simple paramètre dans l’URL pouvait lire le contenu de ce fichier de config.
Eh bien, cette astuce ne protège pas ce genre d’exploit car la protection est faite côté Apache (serveur) et les exploits comme celui-ci le font côté WordPress. Le PHP aura toujours accès à ce fichier (ou votre WordPress est mort.)
TL;DR : Vous n’avez pas à protéger ces fichiers car cela n’ajoute aucune couche de sécurité supplémentaire, encore une fois, votre cerveau vous trompe.
6. Utilisez les clés de sécurité de WordPress pour l’authentification
Vous savez quoi ? Vous pouvez les supprimer, WordPress en créera de nouvelles dans votre base de données avec la même sécurité.
Si vous avez peur de laisser vos clés dans ce fichiers, supprimez les. Si vous avez peur de les laisser en base de données en cas de faille injection SQL, laissez les. Si vous avez peur des 2 à la fois, installez SecuPress, il crée un fichier spécial qui génère des clés illisibles humainement. De rien.
7. Désactivez l’édition de fichiers
Evidemment vous le devez ! Utiliser du HTTP pour éditer un fichier c’est un NOGO pour moi. Le FTP (sftp, ftps) ou SSH est la bonne façon d’accéder à des fichiers, pas HTTP !
HT(TP) signifie “Hyper Texte” et F(TP) signifie “Fichier”, c’est dit.
8. Cachez votre page de connexion et limitez les tentatives
Oui mais souvenez-vous qu’un humain pourrait toujours la trouver quand même. Si votre site à les inscriptions ouvertes, la page sera connue, pouvant tout de même laisser accès à des exploits.
Alors souvenez-vous ici que nous protégeons la page de connexion des mauvais robots, des zombies, des scripts automatisés, mais pas des humains.
Limiter les tentatives de connexion est pour moi obligatoire MAIS ne comptez pas sur l’IP, elle peut être usurpée laissant alors une infinité de tentatives possibles. Vous vous souvenez du patch Patch Wordfence 5.2.5 security ? Nous oui.
À la place, comptez sur le fait que l’utilisateur existe et utilisez ses meta données pour traquer les essais. C’est que ce fait SecuPress et cela fonctionne à merveille !
9. Soyez sélectif avec XML-RPC
Oui bon, si vous ne savez pas si vous en avez besoin, je suis sûr à 99% que vous pouvez le désactiver. XML-RPC date de 2005, 10 ans après, la REST API a été ajoutée à WordPress, donc depuis 5 ans maintenant, oui, vous pouvez désactiver.
Si vous ne savez pas comment, SecuPress peut le faire pour vous, 1 case à cocher, terminé.
10. Hébergement & WordPress sécurité
Bien sûr qu’un hébergeur est important, ils font la fonctionnalité la plus souvent oubliée ! Mon préféré est o2switch.fr, ils sont vraiment pro et le meilleur support du monde (c’est trop souvent ma faute…).
11. Tenez vous à jour
Oui, faites le maintenant.
12. Ajoutez des couches de sécurité
Il est dit “Il convient également de considérer que de nombreux systèmes de distribution de contenu incluent désormais une fonctionnalité de pare-feu“. Oui mais ne comptez pas que sur Cloudflare pour protéger le site lui même, ce n’est pas la même couche de sécurité, c’est pourquoi vous avez besoin d’une extension de sécurité WordPress ET d’un CDS comme Cloudflare et/ou un WAF comme celui de Sucuri.
13. Les meilleurs plugins & thèmes
L’article dit “Nous vous recommandons de ne pas oublier de tester les différents thèmes ou plugins, surtout si vous n’utilisez pas de serveur de test.” J’ai fait un rêve où tout le monde pouvait contrôler le code de toutes leurs extensions et thèmes installés, mais bon, tout ne monde ne peut pas faire ça. Si vous pouvez vous le permettre, faite le. Sinon, voyez avec la communauté, les vidéos, les blogs à propos de ce produit en particulier.
14. N’oubliez pas les journaux
Les journaux ne sécurisent rien en soit, mais ils sont importants afin de garder un oeil facilement sur ce qui arrive sur nos sites.
SecuPress a ses propres journaux, MAIS j’avoue préférer ceux de WP Activity Log aussi 😉
***********
Voilà, c’est corrigé. Je comprends que ça soit difficile de parler de sécurité et de comprendre le tout, mais dans ce cas, il est parfois mieux de s’abstenir plutôt que de diffuser de mauvais conseils, surtout quand on est un grand influenceur.
Aussi, si vous cherchez encore une extension de sécurité WordPress, je ne peux que recommander d’utiliser SecuPress Pro bien entendu, voyez les fonctionnalités.
Si vous avez besoin d’un audit sur un thème ou une extension, demandez-moi. Et enfin si vous cherchez à vous former à la sécurité WordPress, visitez LearnWPSecurity.com.