journal : frontal proxy + WAF et dorsal des sites, poses chez les deux locataires

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-09-29 16:57:33 -04:00
parent cac0b75b3a
commit 6d31842b83

View file

@ -1,5 +1,40 @@
# CHANGELOG — Set-OPS # CHANGELOG — Set-OPS
## 2026-09-29 (39) — Le web frontal devient reverse proxy + WAF ; le dorsal porte les sites
**L'architecture, précisée par l'exploitant** : le web **dorsal** est le serveur des sites ;
le web **frontal** est le reverse proxy et le WAF devant les services web publics du
locataire. L'edge reste la porte des services internes, pour l'administration.
**Le frontal** (`serveur_web_frontal`, réécrit) :
- ses vhosts dérivent des expositions dont le domaine public le désigne
(`domaines.yml`, `edge: serveur_web_frontal`) — la même dérivation que l'edge, filtrée sur
son groupe ; il ne sert plus rien lui-même ;
- **WAF** : ModSecurity v3 (`libnginx-mod-http-modsecurity`) + OWASP CRS 3.3.7
(`modsecurity-crs`), paquets Debian. Éprouvé avant d'écrire le rôle, sur le vrai frontal :
une injection SQL journalisée (942100, 949110) en détection, refusée (403) en blocage, une
requête saine servie dans les deux cas. Un premier essai « prouvait » l'inverse : `return
200` s'exécute avant la phase où ModSecurity inspecte — l'essai, pas le WAF, était faux.
L'inclusion livrée par Debian ne charge que le moteur : le rôle compose moteur, mode, CRS
et exclusions. `DetectionOnly` d'abord ; `On` après lecture du journal ;
- serveur par défaut qui refuse tout nom inconnu (444) ; 80 seulement en attendant
Let's Encrypt ; sonde **`frontal`** : nginx et configuration, module WAF chargé et CRS
présent, chaque exposition publique servie à travers lui.
**Le dorsal** (`serveur_web_dorsal`) reprend les sites statiques (clone, vhost, CSP) et la
sonde **`sites-servis`** ; il est relayé par l'edge (noms internes) ET le frontal (noms
publics). Flux : frontal → dorsal 80 ; le frontal ne reçoit plus rien de l'edge.
**Posé chez les deux locataires** : rôles, pare-feux des deux machines, Proxmox (2 IPSets,
4 groupes), Icinga. `frontal` et `sites-servis` au vert (aucune exposition publique ni site
déclarés encore) ; frontal → dorsal : 200 ; frontière : rien à changer. Au premier
déploiement, `nginx -t` a refusé la configuration AVANT tout rechargement (`server_tokens`
déjà actif dans le `nginx.conf` de Debian 13) — nginx a continué de servir l'ancienne.
**Reste** : le domaine public de chaque locataire désigne encore l'edge (`domaines.yml`) ;
le dorsal sert la page d'accueil de Debian à un nom inconnu (un serveur par défaut qui
refuse, comme à l'edge et au frontal) ; Let's Encrypt.
## 2026-09-29 (38) — Frontière appliquée : chaque locataire entre et sort par sa propre adresse ## 2026-09-29 (38) — Frontière appliquée : chaque locataire entre et sort par sa propre adresse
**Appliqué** (plan relu avant) : 47 créés, 2 retirés ; convergé, 0 écart, 336 règles ; pool **Appliqué** (plan relu avant) : 47 créés, 2 retirés ; convergé, 0 écart, 336 règles ; pool