SITE-Chezlepro n avait jamais ete rase. La limite qu on repetait partout — l infrastructure d accueil n a jamais ete reconstruite depuis zero — se lisait comme de la prudence. C etait seize defauts que rien d autre n aurait pu reveler. Un locataire naît dans un monde deja peuple : le site lui fournit paquets, noms, genome, heure et depot. Un site n a personne au-dessus, sauf sa frontiere. Onze des seize murs viennent de la. DEUX CAPACITES QUI N EXISTAIENT PAS. make site-raser — rien ne detruisait les machines du site, donc la limite etait un trou d outillage. make forge-amorcer — la forge naît vide et le runner y clone ; l amorcage part du poste, seul endroit qui detienne alors le genome. TROIS GARDES QUI VERIFIAIENT LA FORME. La plus couteuse des familles : elles donnent l apparence d une verification. Le resolveur comparait des adresses au lieu de mesurer si la resolution aboutit, et protegeait ainsi l etat casse. L administration etait reconnue a son port. Un flux a deux paires n obtenait qu une branche. UN ECART DE SECURITE. Le PostgreSQL du site servait le certificat auto-signe de Debian, sans reseaux autorises ni hostssl — invisible tant qu aucun client n exigeait la verification. Le defaut n a pas casse la construction : la construction a revele le defaut. UN ACCES ACCIDENTEL. Celui de l exploitant tenait au chevauchement d adressage que le renumerotage a supprime. Separer les index n a pas cause le probleme, il a retire le hasard qui le masquait. La sequence du premier jour est ecrite : runbooks §9, avec les seize murs et ce que chacun enseigne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
125 lines
6.1 KiB
YAML
125 lines
6.1 KiB
YAML
---
|
|
# Flux réseau du socle Debian : le plan de gestion (SSH). Voir docs/flux-conception.md.
|
|
# CRITIQUE : sans cette règle, les nftables générés couperaient l'accès Ansible/SSH.
|
|
flux:
|
|
- sens: ingress
|
|
port: 22
|
|
protocole: tcp
|
|
pair: [flotte, externe]
|
|
chiffrement: ssh
|
|
raison: "Plan de gestion : administration et déploiement Ansible par SSH (inter-nœud ; l'accès depuis l'extérieur est filtré à l'OPNsense)."
|
|
|
|
# --- Sortie générale de la flotte ---
|
|
# Portée par le socle parce qu'elle vaut pour TOUS les hôtes, sans exception.
|
|
# Non déclarée, la frontière la bloquerait : son `block out` final est un vrai
|
|
# default-deny, et la flotte perdrait ses mises à jour et son horloge en silence.
|
|
- sens: egress
|
|
port: 443
|
|
protocole: tcp
|
|
pair: externe
|
|
chiffrement: tls-requis
|
|
raison: "Dépôts apt en HTTPS (Debian, Smallstep, Grafana, Icinga, Forgejo, Nextcloud) — sans quoi aucun correctif de sécurité n'entre."
|
|
- sens: egress
|
|
port: 80
|
|
protocole: tcp
|
|
pair: externe
|
|
chiffrement: clair
|
|
raison: "Dépôts apt en clair et redirections HTTP des miroirs (l'intégrité vient de la signature des paquets, pas du transport)."
|
|
# --- Decouverte de MTU de chemin (PMTUD) ---
|
|
# L'overlay EVPN plafonne a 1450 : tout ce qui traverse la frontiere depend de ces
|
|
# deux messages. Bloques, la connexion s'etablit, les petites requetes passent et les
|
|
# grosses reponses restent suspendues — la panne la plus couteuse a diagnostiquer.
|
|
- sens: ingress
|
|
port: frag-needed
|
|
protocole: icmp
|
|
pair: externe
|
|
chiffrement: n-a
|
|
raison: "ICMP « fragmentation nécessaire » entrant : sans lui, un distant ne peut pas nous demander de réduire nos paquets — les transferts se figent."
|
|
- sens: egress
|
|
port: frag-needed
|
|
protocole: icmp
|
|
pair: externe
|
|
chiffrement: n-a
|
|
raison: "ICMP « fragmentation nécessaire » sortant : c'est ainsi que nos hôtes signalent l'overlay à 1450 aux correspondants distants."
|
|
|
|
# LA FACE RECEPTRICE DU PING DE SUPERVISION.
|
|
#
|
|
# `serveur_icinga` declare l'egress ; le registre REFUSE un egress sans son ingress en
|
|
# face, et il a bien fait : c'est precisement l'oubli qui a coute cinq `TimeoutError`
|
|
# sur le rapport de sante quelques heures plus tot. Ici la garde l'a dit tout de suite.
|
|
- sens: ingress
|
|
port: echo-request
|
|
protocole: icmp
|
|
pair: serveur_icinga
|
|
chiffrement: n-a
|
|
partage: true
|
|
raison: "La supervision verifie que ce noeud repond (hostalive). Sans lui, elle le tient pour mort et supprime ses notifications."
|
|
|
|
# LA FRONTIÈRE EST AUSSI L'AUTORITÉ DE NOMS D'AMORÇAGE (2026-09-12).
|
|
#
|
|
# TROUVÉ À LA PREMIÈRE RECONSTRUCTION DU SITE DEPUIS ZÉRO. Les sept machines du site
|
|
# naissent avec `nameserver 10.37.34.11` — `site-dns-01`, qui est elle-même une des
|
|
# sept et n'a pas encore de résolveur. `site-dns-01` pointe donc sur elle-même, et
|
|
# `apt update` échoue sur les sept :
|
|
#
|
|
# Erreur temporaire de résolution de « deb.debian.org »
|
|
#
|
|
# Le locataire n'a jamais ce problème : son résolveur est le SITE, qui existe déjà.
|
|
# Le site, lui, n'a personne au-dessus — sauf la frontière, dont l'Unbound tourne et
|
|
# écoute sur `*:53`. Il ne manquait que le passage.
|
|
#
|
|
# CE QUE CETTE RÈGLE NE DIT PAS. « Toute la flotte résout ici, et nulle part ailleurs »
|
|
# (`serveur_resolveur/meta/flux.yml`) reste la règle en régime établi : le résolveur
|
|
# de l'écosystème est le seul que les machines INTERROGENT, parce que c'est lui que
|
|
# leur `/etc/resolv.conf` nomme. Cette règle n'ouvre qu'une possibilité, celle qui
|
|
# rend l'amorçage possible — et sans elle, un écosystème neuf ne peut pas naître.
|
|
- sens: egress
|
|
port: 53
|
|
protocole: udp
|
|
pair: frontiere
|
|
chiffrement: n-a
|
|
raison: >-
|
|
Résolution de noms à l'amorçage, avant que le résolveur de l'écosystème n'existe.
|
|
Sans elle, les machines d'un site neuf ne peuvent pas résoudre leurs dépôts de
|
|
paquets — et rien ne peut donc s'installer, y compris le résolveur lui-même.
|
|
- sens: egress
|
|
port: 53
|
|
protocole: tcp
|
|
pair: frontiere
|
|
chiffrement: n-a
|
|
raison: >-
|
|
Réponses longues et bascule TCP, obligatoires en DNS. Déclarer l'UDP sans le TCP
|
|
donne une résolution qui marche jusqu'à la première réponse tronquée.
|
|
|
|
# L'HEURE VIENT DE LA FRONTIÈRE, PAS D'INTERNET (2026-09-11).
|
|
#
|
|
# C'était `pair: externe` : les quatorze machines interrogeaient `2.debian.pool.ntp.org`,
|
|
# défaut de Debian jamais choisi — le rôle `chrony` posait le fuseau et laissait les
|
|
# sources telles quelles. Mesuré : quatre pairs publics par machine, sur les quatorze.
|
|
#
|
|
# C'était la DERNIÈRE dépendance vivante à Internet des opérations internes. Tout le
|
|
# reste sort déjà par le site : les paquets par son cache, les noms par son DNS, le
|
|
# génome par sa forge, l'état par son dépôt. L'heure, non.
|
|
#
|
|
# ET C'EST LA MAUVAISE À LAISSER TRAÎNER. step-ca émet des certificats à durée courte ;
|
|
# TLS refuse un certificat pas encore valide ; Loki rejette une ligne trop loin dans le
|
|
# futur ; les silences d'Icinga reposent sur des `ttl`. Une flotte dont les horloges
|
|
# divergent tombe en panne de l'intérieur, avec des symptômes qui ressemblent à tout
|
|
# sauf à une horloge. Et la dérive est lente : couper Internet ne casse rien le premier
|
|
# jour, ce qui laisse croire à une souveraineté qu'on n'a pas.
|
|
#
|
|
# La frontière est déjà `stratum 3`, synchronisée, et écoute en 123 sur chaque patte.
|
|
# Elle se discipline sur le pool public quand Internet est là ; la flotte, elle, ne sort
|
|
# plus. Même patron que le cache apt : un seul sort, les autres non.
|
|
#
|
|
# RESSERRE AUTANT QUE CENTRALISE : `pair: externe` autorisait le 123 vers N'IMPORTE
|
|
# QUELLE adresse d'Internet. La destination est désormais nommée.
|
|
- sens: egress
|
|
port: 123
|
|
protocole: udp
|
|
pair: frontiere
|
|
chiffrement: n-a
|
|
raison: >-
|
|
Synchronisation d'horloge (NTP) contre la frontière, autorité de temps de
|
|
l'écosystème. Une dérive fait échouer la validation des certificats step-ca
|
|
et l'authentification SSO.
|