Commit graph

3 commits

Author SHA1 Message Date
c79aae200d flux : admin devient un pair, et make ca-racine livre la racine
Le sysadmin ne pouvait atteindre AUCUNE interface web de la flotte qu'il
administre : le pare-feu de l'hyperviseur n'autorisait le 443 de l'edge que
depuis `+t17-flotte`. Le reseau d'administration est dans `t17-admin`.

L'exploitant arrive par un TROISIEME chemin que rien ne declarait : ni `externe`
(Internet, affaire de la frontiere), ni `flotte` (le tenant). Le runbook de
reprise supposait pourtant qu'on ouvre Keycloak dans un navigateur.

`admin` devient un pair declarable — les reseaux de `nftables_admin_ssh`, deja
source unique de la garde anti-lockout. `serveur_nginx` le declare pour son 443.
L'edge SEUL : ouvrir les services en direct elargirait la surface pour rien.

Erreur de methode de ma part : mon premier test utilisait `/dev/tcp` et concluait
« atteignable ». Faux — la frontiere repond au SYN a la place de la cible. Je
l'avais consigne le matin meme.

`make ca-racine` / `make ca-empreinte` : l'hote de l'AC est derive du groupe
`serveur_step_ca`, et la sortie insiste sur la comparaison d'empreinte. La racine
est un certificat PUBLIC — hors voute, dans le magasin de confiance.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 17:26:35 -04:00
249fba702a sso : l'issuer et le nom d'hote se derivent de l'exposition declaree
oauth2-proxy fonctionne devant Icinga Web 2 : 302 vers Keycloak, qui federe
LDAP. Quatre defauts leves, dont trois du meme motif — un nom construit par
convention d'un cote, declare de l'autre.

1. Le secret de cookie etait en base64 STANDARD. oauth2-proxy decode en
   url-safe : le decodage echoue, il retombe sur la chaine brute et se plaint de
   sa LONGUEUR, jamais de l'encodage. Garde ajoutee qui refuse + et /.

2. L'issuer etait fabrique (`keycloak.<domaine>`), un nom que rien ne publie.
   Le plan expose `auth.<domaine>` — c'est ce nom que le DNS resout et que nginx
   sert. Derive desormais du champ `expose`.

3. Keycloak s'annoncait sous ce meme nom invente : « issuer did not match ».
   Meme correctif a la source.

4. Le pare-feu est-ouest bloquait l'edge : nginx ne declarait son 443 qu'avec
   `pair: externe`, que le devis est-ouest saute (il releve de la frontiere).
   Le flux existait d'un seul cote et la matrice etait satisfaite. nginx declare
   maintenant aussi son 443 depuis la flotte.

obs-01 et mon-01 deployees. 7 cibles Prometheus up, scrutees en TLS a travers
cinq zones du VRF.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 11:47:34 -04:00
c98bc8393f Registre des flux : schéma meta/flux.yml + pilote (postgresql/metrique/nginx)
Couche accès du zéro-confiance (complète le chiffrement). Chaque rôle possède
ses flux (comme meta/empreinte) : sens/port/protocole/pair/chiffrement/raison.
Résolu par le plan (pair→IP) → génère les règles nftables (default deny) ET le
registre d'audit. Doc de conception + 3 pilotes validés (résolveur-démo).

Séquence : schéma+pilote (fait) → résolveur → remplir les rôles → générer +
registre → activer nftables prudemment (action destructive).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 09:41:42 -04:00