Putain mon WordPress s'est fait trouer
wordpress, ça m’oppresse
Est-ce que tu as déjà vu un WordPress abandonné dans un coin, se faire trouer les fesses ? Non ?
Pourtant, chaque année, pendant la période des vacances, des WordPress sont abandonnés sur les aires d’autoroutes de l’information.
Dans ces wordpress on y trouve du PHP copier-coller et codé avec l’attribut fessier, des versions du framework anciennes et vulnérables, jamais patchées, ce qui en fait naturellement une très bonne réserve à bot net ou des relais à phishing.
pourquoi ?
Bien souvent, il s’agit de site vitrine. On pose sa marque, on raconte deux trois infos commerciales, un email un logo, un numéro de SIRET, ton compte onlyfans. Et on traine du PHP et une base de données pour trois photos de vacances, un peu de texte, deux trois JavaScript pour mettre de la neige dans ton navigateur. Naturellement on laisse trainer tout ça avec des versions de retard de wordpress et des vulnérabilités connues publiquement.
Et en fonction de l’intérêt stratégique de ton nom de domaine, si tu es un gros malin et que tu laisses un phpmyadmin disponible publiquement, tu es une cible. Et si en plus, il te manque quelques neurones et que tu as laissé le mot de passe MySQL par défaut, tu dis ciao les données.
Bien sûr, tu n’as pas prévu de backup ¯\_(ツ)_/¯.
tu te retrouves avec quelques modifications surprises, genre ton Wordpress qui mine de la crypto (scoop c’est pas dans ton wallet que ça rentre)
Alors on fait quoi ? On s’la donne ?
Tu vas me dire, c’est beau la provoque, mais tu proposes quoi au lieu d’attaquer Wordpress gratuitement, sans donner de solutions ?
C’est juste un site vitrine, donc pourquoi tu traines un langage backend et une base de données pour un truc aussi simple ? Finalement c’est (presque) logique de le laisser vivoter dans son coin sans y toucher alors pourquoi on s’emmerde ?
Voici quelques idées pour remplacer ton wordpress, que ce soit en solution d’urgence (genre urgence cocktail molotov sur ton datacenter), pour gagner en sécurité et en performance, ou juste remplacer ton bouzin et t’a pas les sous ou les équipes pour te refaire un truc.
pas de code, pas de palais (mais tu peux faire un site vitrine vite fait)
Tu ne sais pas coder, tu ne sais pas administrer, tu as peut-être payé une blinde ton truc, il est irréparable … bref c’est la merde
Utilise une solution no code pour reconstruire un site vitrine super vite, et si vraiment t’es mauvais, tu peux même payer quelqu’un sur Fiverr pour faire ça pour toi.
Il y a plein d’outils qui font ça, ça te sort un HTML CSS rapide et visuellement propre.
genre https://fr.wix.com/
Il te donne un nom de domaine sur lequel tu peux mettre un alias avec ton nom de domaine perso.
(demande l’aide d’un adulte parce que visiblement t’es mauvais jack)
facile, rapide, mais tu ne contrôle plus rien. De toute façon tu t’es fait trouer, ce n’est peut-être pas si mal (je t’ai dit que t’étais mauvais ou pas ?)
tu veux toujours héberger chez toi
tu persistes dans ta bêtise, tu veux garder ton serveur autohébergé ?
Si on considère que ton site est de toute façon un site vitrine tout simple et que tu ne vas pas le modifier ensuite, pas besoin de persistance en base. Vire moi ton gros WordPress de là et garde juste HTML CSS et Js (tu sais, pour la neige).
Tu as même des outils pour le faire auto magiquement (le code généré derrière est surement tout pourri) https://www.websiterating.com/wordpress/converting-wordpress-sites-to-static-html/
Tu mets ça derrière un nginx dans une vm, avec des mises à jours automatiques des lib systèmes. (pour éviter une attaque sur des services vulnérables) l’idée c’est de ne plus trainer de PHP et de base de données avec des failles publiquement documentées qui sont la cible privilégiée des attaquants.
commande un bucket chez gcp (avec une grande frite et un coca)
Tu es fainéant et tu n’as pas envie de traîner une machine, tu sais un peu te démerder techniquement. (Mais t’es du genre à abandonner ton WordPress quand même) Tu vas voir un cloud public et tu fais un backend bucket. Tu dit bonjour monsieur GCP, je peux avoir un bucket GCs avec une adresse IP public et un load balancer L7 svp ? (clic, clic, clic, ou terraform / gcloud mais je crois que je m’adresse à un fénéant alors clic)
https://cloud.google.com/load-balancing/docs/https/ext-load-balancer-backend-buckets
Je suis team gcp, mais tu peux aussi faire ça sur aws si t’as envie de te faire un peu chier 🤷
Tu mets tes fichiers statiques là-dedans et si t’as la flemme de gérer la redirection HTTPS et gérer le cert managé par Google, tu mets un cloudflare devant pour te faire cache, mitigation DDOS et terminaison SSL.
Contenu statique à rafraîchissement dynamique (je veux un backend mais pas de connections en base directe)
Là on part dans une solution technique avancée, si tu ne sais pas coder laisse tomber, reprends ton WordPress et patch le plus souvent 😆 L’idée c’est de mettre à jour ton site statique dynamiquement, sans base de données et sans backend couplé au front-end. Une bonne astuce de cyberpunk à chien, puisque si ton backend est dead, tu continu à servir le contenu statique jusqu’à ce que tu répares ton code tout pourri 🤪
Pas de problème de leaks de base de données quand t’a pas de base de données.
L’idée c’est d’utiliser Hugo framework https://gohugo.io/ pour remplir le site de contenu statique, mais en utilisant un backend dynamique.
Je vous donne un exemple d’infra que j’ai mis en prod ici https://www.freelancerdevops.com/
un site que j’ai mis en place pour me scaper des offres de missions freelances tous les jours.
J’utilise un cloudrun avec du python Flask, pour scrapper du contenu et ensuite générer des fichiers md statiques pour nourrir mon site. J’utilise un bucket dédié pour stocker mes fichiers md pour faire une suppression des vieux articles de façon mécanique via gcs rétention policy. J’appelle mon cloudrun avec le scheduler Google tous les soirs et mon site est rafraîchi pendant la nuit en mode push.
sans trop rentrer dans les détails d’implémentation (si ça vous intéresse, je pourrai plus le détailler), j’utilise le scheduler de google pour déclencher mes URLs de scrap dans mon cloudrun qui n’est pas accessible publiquement par un autre moyen. le cloudrun scrap les données fraîches et les transforme en markdown et ensuite les donne à manger à Hugo. Hugo me rend mon site statique et le nouveau contenu est disponible une fois le cache frontal périmé.
Plusieurs avantages à ce système :
- Ultra rapide, tout le temps, pratiquement increvable
- pas de base de données
- pas de backend connecté au frontend
- GCP sécurise mes fichiers statiques (pas de faille de sécurité connue et non patchée sur mon frontal, c’est Google qui gère)
- Backend HS, rien à foutre, j’ai toujours mon contenu statique froid
- Réduction drastique de la surface d’attaque
- Cloudflare me fait un dashboard gratos de fréquentation de mon site et un monitoring du pauvre
Inconvénients :
- Cloudflare down, site down (c’est la loose milouse, sauf si tu dégages cloudflare et que tu fais toi-même ton certificat management)
- il faut gérer le cache si on veut un refresh plus rapide
- il faut coder un peu
- ça marche moins bien avec du contenu complexe (si tu as besoin de lecture écriture des utilisateurs ou de session, c’est pas la bonne solution)
- il faut traîner la logique et le code d’Hugo framework
Non en fait, finalement, te fais pas chier, fait plutôt un wordpress, c’est bien wordpress héhé
conclusion
si y’a un seul truc à retenir de cet article «patchez vos merdes, bandes de margoulins»
- Pas de base, moins de tentatives de piratage
- Tu sais pas coder, fait plutôt du no code
- Tu es fainéant ou t’as pas le temps, fais des systèmes tolérant à la casse
- WordPress c’est seulement quand t’as pas le choix