Observatoire — hardening en continu
Un outil qui vérifie automatiquement les en-têtes de sécurité, le TLS et les cookies de mes sites — et qui a fini par se vérifier lui-même.
Tourne depuis le 30 août 2026, toutes les 30 minutes, dans un service systemd indépendant du processus web : une panne du site ne coupe pas la détection. Le tableau de bord n'est pas public — il vit derrière Cloudflare Access, sur un sous-domaine dédié, accessible uniquement à moi. Cette fiche explique la démarche, pas l'état courant.
Un en-tête de sécurité retiré par erreur lors d'un déploiement ne se voit pas — jusqu'à ce qu'un audit, ou un client, le remarque. J'ai construit un petit outil qui vérifie automatiquement, sur mes propres sites : la présence des en-têtes CSP, HSTS, X-Frame-Options, X-Content-Type-Options et Referrer-Policy ; l'absence de fuite d'en-tête Server ou X-Powered-By ; que chaque cookie posé porte Secure et HttpOnly ; que le HTTP redirige bien vers le HTTPS ; et que le certificat TLS n'expire pas dans moins de trois semaines. Zéro dépendance npm — uniquement les modules natifs de Node.
Le vérificateur tourne hors du processus web, dans un service systemd déclenché toutes les 30 minutes, et écrit dans sa propre base SQLite. Une panne du site n'empêche donc pas de détecter une panne d'un autre service : les deux sont découplés par construction. Le tableau de bord, lui, ne fait que lire cette base — il n'exécute jamais la vérification lui-même.
Le premier passage a immédiatement justifié le projet : il a trouvé un en-tête X-Powered-By qui révélait la version du framework utilisé, corrigé dans l'heure, et une absence de redirection HTTP forcée sur le domaine principal, documentée comme un arbitrage à reconsidérer plutôt que corrigée sur-le-champ.
Puis l'outil s'est retourné contre son propre principe. La première version rendait son tableau de bord public, listé dans le sitemap — révélant ainsi l'existence de services que je préfère ne pas exposer, avec la liste de leurs manques exacts en prime. Une carte de reconnaissance offerte à qui la trouverait, signée par l'outil censé améliorer la sécurité. Corrigé le jour même : le tableau de bord a été retiré du sitemap et du robots.txt, les routes fermées le temps de reconstruire la protection, les identifiants de service sortis du code source vers un fichier local qui ne quitte jamais la machine, puis rouvert uniquement derrière Cloudflare Access, sur un sous-domaine dédié — la même politique d'authentification que mon accès bureau à distance.
La leçon tient en une phrase : un outil d'observabilité qui révèle passivement ce qu'il observe est un outil de reconnaissance pour quiconque le trouve. Un outil de sécurité doit d'abord s'appliquer ses propres critères à lui-même — avant de les appliquer à autre chose.