SafeLine est un WAF open-source basé sur OpenResty/Nginx avec le moteur de détection t1k. Je l'ai mis devant NPM pour filtrer le trafic HTTP avant qu'il arrive aux services.
Un WAF analyse le trafic HTTP à la couche 7 et bloque les trucs louches : injections SQL, XSS, path traversal, scanners web (nikto, nuclei, sqlmap...). SafeLine le fait de manière transparente, le client ne voit rien, ses requêtes passent ou elles sont bloquées avec un 403.
⚠️ Le filtrage t1k est en BYPASS sur le trafic HTTP pour l'instant.
J'ai eu une race condition au démarrage : le container mgt lance un cron à :00 de la première minute pour envoyer POST /task/secret vers tcd.sock — mais tcd.sock (créé par tengine) n'est pas encore prêt à ce moment-là . Résultat : t1k ne s'active jamais.
Fix partiel appliqué (2026-05-14) :
safeline-tengine:
healthcheck:
test: ["CMD", "test", "-S", "/app/sock/tcd.sock"]
safeline-mgt:
depends_on:
tengine:
condition: service_healthy
Flux actuel (bypass) :
HTTP :80 → tengine (bypass) → NPM :8280 → services ✓
HTTPS :443 → NPM directement → services ✓
Le trafic HTTPS est pas du tout touché par SafeLine de toute façon — c'est NPM qui gère le TLS. SafeLine voit que l'HTTP, et en ce moment il laisse tout passer sans analyser.