Plugin WordPress pour bloquer les tentatives d’intrusion (et les spams de commentaires?)

Si comme moi, vous avez un site qui tourne sous WordPress, vous avez probablement des dizaines de tentatives d’intrusion par jour.

Pendant un temps, j’ai utilisé le plugin All in one WordPress Security. Il bloque les adresses IP après 3 tentatives de login infructueuses, et vous envoie une notification. C’est très bien mais je l’ai trouvé un peu trop lourd pour ce que je cherchais à faire, à savoir sécuriser ma page de login.

Ne trouvant pas de solution simple pour masquer cette putain de page, j’ai décidé d’écrire mon propre plugin qui fait le boulot. C’était l’occasion d’apprendre à développer des plugins WordPress, hé bien ce n’est pas si compliqué que ça en a l’air! Accessoirement, il bloque aussi les appels XML-RPC. Et comme side effect non prévu et très intéressant, les spams de commentaires… Je ne sais pas pourquoi, mais c’est ce que je constate chez moi en tout cas 🙂

Pour la petite histoire, j’ai tenté de le vendre via la plateforme codecanyon (je ne mets pas le lien, c’est volontaire car à mon humble avis ce sont des raclures). Pour ça, j’ai packagé mon petit bouzin, j’ai documenté le code à mort et je leur ai envoyé pour qu’ils l’analysent et le publient.

Deux semaines plus tard, j’ai reçu un email me disant que mon plugin a été refusé. Pourquoi? Parce que. Merci les gars pour la précision des explications, et allez vous faire empapaouter.

Alors tant pis pour la vente, je l’ai mis sous GPL2 et je l’ai publié sur Github.

Mais il marche comment ton plugin?

Le principe est très simple. Normalement, quand on veut s’authentifier sur un site WordPress, on tombe sur la page wp-login.php et on a accès au formulaire login/mot de passe.

Hé bien une fois que ce plugin est activé, il faut juste ajouter un paramètre de votre choix dans l’URL pour que la page de login soit visible. Par exemple, wp-login.php&dirty=marmotte

C’est tout. Vous pouvez essayer chez moi si vous voulez.

Vous pouvez aussi essayer d’envoyer des requêtes POST directement sur wp-login.php, même si le login/mot de passe est correct, si la clé n’est pas là ça ne passera pas;)

Et donc, je disais plus haut que ce plugin vous permet aussi de désactiver le XML-RPC, qui est un web service permettant d’effectuer des opérations sur WordPress depuis des applications tierces. C’est un vecteur important d’attaques brute force, et il est activé par défaut alors que la plupart du temps il n’est pas utile.

Et les spams de commentaires?

Alors ça, c’est le point imprévu de ce plugin.

Je soupçonne que les spambots se basent sur la présence d’une page wp-login.php pour savoir si on est sur wordpress, et à partir de là, ils savent comment poster un commentaire de façon automatique.

Ici, comme il n’y a plus de wp-admin.php standard, ils ne sauraient pas comment envoyer un commentaire. Enfin c’est mon analyse, je ne sais pas si elle est correcte… Toujours est-il que sur mon blog, j’ai zéro spam détecté par akismet, et rien en file d’attente. C’est plutôt cool du coup. N’hésitez pas à me faire un petit retour si ce n’est pas le cas chez vous, et dans ce cas je corrigerai cet article.

Voici l’archive du plugin à installer dans WordPress :
wp-login-door.zip

wp-login-door sur GitHub

Et si ce plugin vous plait, pourquoi pas faire un petit don?

A bientôt!





Du nouveau dans l’chalet

Salut à vous!

Z’avez vu? Ça change hein!
Mais ceci n’est pas qu’un changement de thème. J’ai pris la décision de migrer mon blog sur un WordPress tout neuf.

Cette petite lubie vient d’une réflexion que j’ai eue avec moi-même: je me suis dit que ce serait bien d’internationaliser le bazar et d’être lu par un public international… Rho le mec, quelle ambition!

Alors pour avoir un site WordPress multilingue, il y a plusieurs possibilités avec des plugins, mais pour avoir déjà tenté la chose dans le passé, c’était un beau bordel à gérer, et pas d’une stabilité à toute épreuve. En plus de ça, les deux langues étaient dans le même post avec un séparateur, donc en gros si à l’avenir tu veux changer de plugin multilingue, tu l’as dans l’os.

L’autre solution est de créer deux sites. Ou plutôt, de mettre en place une instance de WordPress multisites. C’est la décision que j’ai prise, et comme ça, je peux en plus découvrir des fonctionnalités insoupçonnées de WordPress dans ce domaine!

C’est pas mal ce système de multisite, parce qu’on peut déployer des plugins et faire des maintenances sur tous les sites en une seule manip. Et puisqu’on parle de plugins, reconstruire un site tout propre va me permettre de faire un peu le tri dans ce que j’utilise, et conserver uniquement l’essentiel.

Donc j’ai installé un WordPress tout neuf en parallèle, activé le multisite, et créé deux sites: un pour le français, et un pour l’anglais (http://dirtymarmotte.net/en)

Côté français, j’ai importé l’existant et je me suis assuré que les urls seraient exactement les mêmes (ça c’est pour le référencement, car ce serait bête d’avoir tous mes liens morts!). Bon, il y a des images qui ont sauté, et que je suis en train de corriger… C’est bien chiant d’ailleurs.

Côté anglais, je vais reprendre les articles de 2015-2016 et les traduire. Je verrai par la suite pour traduire les années d’avant… Ca va me faire un peu de boulot, mais je pense que le jeu en vaut la chandelle, et mes articles pourraient intéresser des lecteurs par-delà les limites de la francophonie… Mais qu’est-ce que c’est que cette phrase?? Au secours!

Bref, pour vous cela ne changera rien, à part la tronche du blog, que je retoucherai peut-être avec le temps. Les articles seront toujours aussi mal rasés, et sentiront toujours aussi bon le garage (où il fait 5°C cet hiver), l’atelier et le plastique fondu!