WP vs hackers: 5 protections hyper simples
Durant l’hiver 2020, je me suis fait hacker mon blog. J’ai perdu pas mal de temps et d’énergie pour rien. Grâce à cela, je me suis penché sur la sécurité de mon blog et sur les brèches. J’ai trouvé 5 protections hyper simples à mettre en place. Je pense, et j’espère, que je n’aurai plus de problème à ce niveau là.
Retour sur février 2020. Pour une raison qui me paraît bizarre, mon blog est down. En fait, c’est surtout que l’adresse est détournée vers un autre site que je ne connais absolument pas. C’est relativement courant et il « suffit » de suivre le guide sur le forum WP pour réparer. Comme ce n’est pas vers du porn, je postpose la maintenance au lendemain, surlendemain… Et en grand procrastinateur, je ne m’en occupe pas vraiment. Seulement après une semaine, mon backup a disparu et en fait… je n’ai plus de blog.
Qui aurait cru qu’un blog plutôt confidentiel comme le mien se fasse attaquer? Certainement pas moi. Pourtant, il ne faut pas oublier les petits malins qui utilisent des attaques aveugles juste pour tester ou s’amuser. Comme beaucoup de monde, 34% des sites web1, j’utilise WordPress. À l’instar de la majorité des virus qui s’attaquent à Windows, les bots s’attaquent aux sites WP. Si seulement j’avais mis en place les 5 protections hypers simples…
Pour moi, c’était juste embêtant dans le sens où j’ai perdu les 4 ou 5 derniers billets. De plus, j’étais au Japon et j’avais décidé de tenir mes lecteurs au courant de mes aventures. Bref, blog down, Nico est feignant… Il répare le tout durant l’inter-saison. Tout va pour le mieux dans le meilleur des mondes. Surtout, j’ai appris de mes erreurs. C’est tout simple de se protéger de ces attaques. Certaines choses sont évidentes, mais je ne l’avais pas fait2.
HTTPS
On nous parle souvent de sécurité au point qu’on se dit que c’est bon, l’hébergeur prend en charge… Et bien non, pas nécessairement. J’étais chez un hébergeur très compétitif en Tchéquie, wedos, mais il aurait fallu que je change de formule pour avoir un site en HTTPS3. Le procrastinateur avait encore pris le dessus et je ne l’avais pas fait. J’en profite pour regarder les offres ailleurs. Je me rends compte que LWS, chez qui j’ai acheté mon nom de domaine en .be, a cette option de base dans sa formule LWS perso et qu’il suffit de l’activer. C’est la même chose chez OVH.
Une fois que vous avez obtenu le certificat chez votre hébergeur, il suffit de revenir dans votre panneau de contrôle WordPress et ajouter https devant votre nom de site.
Être à jour
Ici, cela peut paraître con, parce que c’est évident que le core WP ainsi que les extensions doivent être à jour. J’ai d’ailleurs automatisé cela. C’est simple et efficace. J’utilise un thème connu colormag et les plugins habituels, tels que Akismet ou Jetpack. Il manquait pourtant des mises-à-jour: le PHP4 ainsi que de ma base de données MySQL. Je ne pense pas que l’attaque soit arrivée de là, mais autant faire attention à tout.
Contrer les faiblesses WordPress
Comme dit un peu plus haut, WP est très populaire dû à sa facilité. Bien que la sécurité soit prioritaire, il y a deux grosses faiblesses à éliminer immédiatement
admin
L’utilisateur « de base » est l’administrateur et se présente sous admin. Il faut changer directement. En fait, si vous ne changez pas, le log par défaut est « admin », donc il suffit de corrompre votre mot de passe pour avoir accès à votre site. Pour changer cela, vous allez dans le menu utilisateurs, créer un nouveau à qui vous donnez les droits administrateur, puis vous effacez l’admin par défaut.
préfixe table MySQL
Bien que le sous-titre puisse paraître un peu compliqué, c’est très simple. Votre base de données va recevoir divers dossiers de la part de Worpdress. Par défaut, ils ont tous cette forme:
WP_commentmeta WP_comments WP_options etc.
WP doit être renommé en un autre préfixe quelconque. La manipulation pour changer cela est extrêmement aisée. Vous allez dans votre panneau PHPMyAdmin, puis dans base de données en ensuite vous activez Tout cocher dans structure et enfin dans le menu déroulant avec la sélection vous trouverez remplacer le préfixe à la table. Vous prenez un préfixe de votre choix et c’est réglé.
Grâce à ces deux manips, une attaque traditionnelle sur WP sera déjouée sans effort.
Captcha
L’idée m’a été suggérée par LWS. Parfois cela me gêne, mais je l’ai gardée: un captcha sur ma page de login. L’extension Login No Captcha reCAPTCHA est parfaite pour cela. Lorsque vous voulez vous connecter à votre site, vous devez prouver que vous n’êtes pas un robot. J’avoue que parfois cela me semble exagéré, mais au bout du compte, cela me convient.
Cloudflare
À notre niveau de blogueur Cloudflare est un service de sécurité sur le web qui empêche les attaques brutes. Wikipedia donne plus d’informations et ma description est clairement simpliste. Cependant, la version gratuite permet de se faire rediriger via leurs serveurs qui scrutent les attaques. Il suffit de créer un compte puis de changer les paramètres DNS. Je vais vulgariser: le Domaine Name System sert à retrouver votre site web via son adresse. Au lieu d’avoir votre fournisseur qui s’en occupe, vous demandez à Cloudfare de s’en occuper pour lui. En même temps, il scrute ceux qui cherchent votre adresse.
C’est comme si la poste demandait à sécuritas de délivrer votre courrier. Alors que les gardes sécurisent votre domicile, que personne ne peut s’en approcher, vous êtes quand même livré lorsque vous commandez une pizza.
Nicolas Boucher (qui rigole bien de cette métaphore à la con. Que les puristes s’insurgent!)
Je pense sincèrement qu’avec ces quelques astuces, la plupart des attaques seront déjouées, mais vous pouvez continuer à sécuriser grâce aux conseils hardening wordpress. J’ai vraiment perdu beaucoup de temps à cause d’une attaque relativement simple alors je pense que ces quelques manipulations sont bienvenues. Aussi, n’oubliez pas votre backup.
- les chiffres viennent de kinsta.com [↩]
- c’est en voyant le site du LSO que l’idée de ce billet m’est venue, car il y avait les mêmes erreurs [↩]
- L’intérêt principal du HTTPS est de garantir la sécurité de vos utilisateurs ainsi que des données que vous échangez, plus d’infos ici [↩]
- un langage conçu pour les applications web [↩]