Set-OPS-Public/docs/registre-flux.md
Daniel Allaire ee0e33d452 flux : plus aucune sortie vers Internet sans un role qui le dise
La sortie 80/443 que le socle donnait a toute machine ne servait plus a apt
(tout passe par le cache du site) mais a de la telemetrie et a des sorties
non declarees. Elle devient conditionnelle (seulement_si artefacts_amorcage
vide) ; la telemetrie de Grafana, Loki, Alloy et la verification de version
de Collabora sont coupees a la source ; rspamd et la sonde du genome
declarent leur sortie. Le devis du site evalue enfin seulement_si, ce qui
retire aussi le 465/587 vers un Postfix du site qui n'ecoute que sur 25.
Garde : test_conditions_site.py. Journal (125).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:11:13 -04:00

23 KiB

Registre des flux réseau — matrice d'audit (GÉNÉRÉ)

Généré par scripts/resoudre_flux.py (make flux) depuis les roles/*/meta/flux.yml. Ne pas éditer à la main. Matrice source→destination pour l'audit de sécurité et le label de certification. ingress = le rôle écoute ; egress = le rôle se connecte.

Rôle (propriétaire) Sens Port Proto Pair Chiffrement Raison
client_backup egress 22 tcp serveur_backup ssh Poussée des instantanés restic vers le dépôt hors-nœud, par SSH (clé dédiée).
client_journal ingress 12346 tcp localhost clair Interface de diagnostic locale d'Alloy — port declare pour rendre les collisions visibles.
client_journal egress 3100 tcp serveur_loki tls Expédition des journaux par Alloy vers le collecteur central Loki (HTTPS, cert step-ca).
client_metrique ingress 9100 tcp serveur_prometheus tls Scrape des métriques par Prometheus (node_exporter en HTTPS).
client_pki egress 8443 tcp serveur_step_ca tls-requis Émission/renouvellement des certificats par ACME et récupération de la racine auprès de l'AC interne.
client_resolveur egress 53 udp serveur_resolveur clair Résoudre auprès du résolveur de l'écosystème, et de personne d'autre.
client_resolveur egress 53 tcp serveur_resolveur clair Réponses longues et bascule TCP, obligatoires en DNS.
client_sante egress 5665 tcp serveur_icinga tls Depot d'un resultat passif sur l'API Icinga (process-check-result) : les unites systemd en echec du noeud. Le pair est authentifie par l'AC d'Icinga.
client_smtp egress 25 tcp serveur_postfix starttls Relais des notifications locales vers le MTA central (Postfix), STARTTLS.
serveur_artefacts ingress 3142 tcp flotte clair Toute la flotte prend ses paquets ici. En clair, et c'est correct : l'intégrité d'un dépôt apt vient de ses signatures, qu'apt vérifie de toute façon — un intermédiaire ne peut pas altérer un paquet sans se faire prendre.
serveur_artefacts egress 80 tcp externe clair Remplir le cache depuis les dépôts Debian amont (deb.debian.org, security).
serveur_artefacts egress 3142 tcp voisins_site clair Prendre le cache du site comme amont, plutot que d'aller chez Debian.
serveur_backup ingress 22 tcp client_backup ssh Dépôt restic servi par SSH (utilisateur restreint restic + clé) ; chaque client_backup pousse ses instantanés.
serveur_backup egress 5665 tcp serveur_icinga tls-requis Rapport passif des sauvegardes vers l'API Icinga : le depot est le seul a voir ce qui est reellement arrive.
serveur_backup_site ingress 22 tcp voisins_site ssh Les écosystèmes de ce site déposent leur état ici tant qu'ils n'ont pas leur propre dépôt. SFTP par un utilisateur restreint, jamais un compte d'administration : le site reçoit des octets chiffrés par restic, il ne peut pas les lire.
serveur_cache_site ingress 3142 tcp voisins_site clair Servir les caches des écosystèmes voisins. Debian n'est ainsi téléchargé qu'une fois pour tout le site, et le cache ne voit que des requêtes AGRÉGÉES — jamais quelle machine installe quoi.
serveur_cache_site egress 80 tcp externe clair Remplir le cache depuis les dépôts Debian amont. En clair parce que les dépôts apt sont signés : l'intégrité vient de la signature, pas du transport.
serveur_cache_site egress 443 tcp externe tls-requis Les dépôts tiers qui n'existent qu'en HTTPS (smallstep, Grafana, Icinga), et le dépôt de binaires (roues PyPI, collections Galaxy, versions GitHub, Nextcloud, Forgejo). Le site les relaie pour que la flotte n'ait pas à sortir elle-même.
serveur_collabora ingress 9980 tcp edge clair Éditeur servi au navigateur via l'edge (WebSocket WOPI ; TLS terminé à l'edge).
serveur_collabora ingress 9980 tcp localhost clair Vérifications WOPI serveur→Collabora depuis Nextcloud co-localisé.
serveur_debian ingress 22 tcp flotte, externe ssh Plan de gestion : administration et déploiement Ansible par SSH (inter-nœud ; l'accès depuis l'extérieur est filtré à l'OPNsense).
serveur_debian ingress echo-request icmp serveur_icinga n-a La supervision verifie que ce noeud repond (hostalive). Sans lui, elle le tient pour mort et supprime ses notifications.
serveur_debian ingress frag-needed icmp externe n-a ICMP « fragmentation nécessaire » entrant : sans lui, un distant ne peut pas nous demander de réduire nos paquets — les transferts se figent.
serveur_debian egress 53 udp frontiere n-a 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.
serveur_debian egress 53 tcp frontiere n-a 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.
serveur_debian egress 80 tcp externe clair Dépôts apt en clair et redirections des miroirs, pour un écosystème SANS amont d'artefacts. L'intégrité vient de la signature des paquets, pas du transport.
serveur_debian egress 123 udp frontiere n-a 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.
serveur_debian egress 443 tcp externe tls-requis Dépôts apt en direct, pour un écosystème SANS aucune source d'artefacts. Le site et ses locataires passent par le cache du site et ne la reçoivent pas.
serveur_debian egress frag-needed icmp externe n-a ICMP « fragmentation nécessaire » sortant : c'est ainsi que nos hôtes signalent l'overlay à 1450 aux correspondants distants.
serveur_dns_public ingress 53 udp voisins_site clair NOTIFY des primaires des locataires du site : une zone publique a change. Le contenu d'une zone publique n'a rien de secret ; ce qui compte est QUI peut le modifier, et c'est TSIG qui le garde, sur le transfert.
serveur_dns_public ingress 53 tcp voisins_site clair Repli TCP des notifications des primaires des locataires.
serveur_dns_public ingress 1053 udp externe clair Les resolveurs de l'Internet interrogent les zones publiques des locataires du site. Les reponses sont signees DNSSEC : leur integrite ne depend ni du transport, ni de nous.
serveur_dns_public ingress 1053 tcp externe clair Repli TCP : reponses tronquees par dnsdist (ANY, debit) et reponses signees trop grosses pour l'UDP.
serveur_dns_public egress 5300 tcp primaires_dns_locataires clair AXFR signe TSIG vers l'autoritatif de chaque locataire du site (5300 : il partage sa machine avec le resolveur, qui tient le 53). La signature authentifie, elle ne chiffre pas — et une zone publique n'a rien a cacher.
serveur_dns_public egress 5300 udp primaires_dns_locataires clair SOA demande au primaire avant chaque transfert : c'est lui qui dit si la zone a change. Sans lui, le secondaire garde sa premiere copie pour toujours.
serveur_dovecot ingress 24 tcp serveur_postfix tls-requis Remise LMTP depuis Postfix (edge-mta -> mailstore), en TLS vérifié (lmtp_tls_security_level=verify).
serveur_dovecot ingress 993 tcp externe tls-requis Accès courriel des utilisateurs (IMAPS). Frontière publique gérée à l'OPNsense.
serveur_dovecot ingress 12345 tcp serveur_postfix tls Authentification SASL déléguée : Postfix valide les identifiants de soumission contre Dovecot.
serveur_dovecot egress 636 tcp serveur_openldap tls-requis userdb/passdb : Dovecot résout et authentifie les comptes sur l'annuaire (LDAPS).
serveur_forge_site ingress 443 tcp voisins_site tls-requis Servir le génome aux écosystèmes de ce site : c'est de cette forge qu'ils clonent leur moteur, leurs modèles et la carte de la fabric (D-81). Sans ce flux, un écosystème neuf ne peut pas se reproduire.
serveur_forgejo ingress 3000 tcp edge clair Interface web + Git HTTP derrière un edge : le nginx termine le TLS et parle en clair à la forge. C'est le cas de tout tenant.
serveur_forgejo ingress derive tcp flotte, admin tls Sans edge devant elle — la forge du SITE — elle sert son propre TLS sur le port du schéma (443), avec le certificat de la machine. derive parce que le port vient de serveur_forgejo_http_port : écrire 3000 en dur ici serait faux pour elle, et rien ne le signalerait puisque ce flux ne traverse pas la frontière.
serveur_forgejo egress 25 tcp serveur_postfix starttls Notifications courriel (relais via le MTA Postfix).
serveur_forgejo egress 443 tcp edge tls-requis Découverte OIDC et jetons auprès de Keycloak (via son FQDN publié à l'edge).
serveur_forgejo egress 5432 tcp serveur_postgresql tls-requis Base de données Forgejo (verify-full).
serveur_grafana ingress 3000 tcp edge, admin clair Interface web : servie via l'edge la ou il y en a un, joignable depuis le plan d'administration partout — sans quoi un deploiement sans edge n'a plus de console.
serveur_grafana egress 443 tcp edge tls-requis Authentification OIDC auprès de Keycloak (via son FQDN publié à l'edge).
serveur_icinga ingress 5665 tcp localhost clair API Icinga 2 consommée en local par Icinga Web 2 co-localisé.
serveur_icinga ingress 5665 tcp client_backup tls-requis Rapport passif de chaque detenteur d'etat sur SON depot distant : le depot du site heberge du chiffre et ne peut pas le juger.
serveur_icinga ingress 5665 tcp serveur_backup tls-requis Le depot de sauvegarde depose ses resultats passifs (portee : process-check-result sur « sauvegarde: * »).
serveur_icinga ingress 5665 tcp serveur_debian tls-requis Rapport passif de sante de chaque noeud (unites systemd en echec).
serveur_icinga egress 5432 tcp serveur_postgresql tls-requis Base relationnelle du moteur Icinga (verify-full).
serveur_icinga egress echo-request icmp serveur_debian n-a La supervision verifie que ses hotes repondent (hostalive) : sans ce flux, elle les tient tous pour morts et supprime leurs notifications.
serveur_icinga egress echo-request icmp fabric n-a La supervision verifie que la frontiere sert encore chaque zone. Aucun agent ne peut vivre sur un pare-feu : le controle ACTIF est le seul chemin, et il n'existait pas.
serveur_icingaweb2 ingress 8080 tcp edge, admin clair Interface web servie via l'edge (TLS terminé à l'edge ; SSO possible via oauth2-proxy), et joignable depuis le plan d'administration là où il n'y a pas d'edge.
serveur_icingaweb2 egress 636 tcp serveur_openldap tls-requis Authentification des utilisateurs sur l'annuaire (LDAPS).
serveur_icingaweb2 egress 5432 tcp serveur_postgresql tls-requis Lecture d'IcingaDB (base relationnelle, verify-full).
serveur_keycloak ingress 8080 tcp edge clair Console et endpoints OIDC servis au navigateur et aux applications via l'edge (TLS terminé à l'edge).
serveur_keycloak egress 636 tcp serveur_openldap tls-requis Fédération de l'annuaire OpenLDAP (LDAPS).
serveur_keycloak egress 5432 tcp serveur_postgresql tls-requis Persistance Keycloak dans PostgreSQL (verify-full).
serveur_loki ingress 1514 tcp fabric clair Journaux de la frontiere. Elle n'accueille aucun agent et n'emet que du syslog ; sans ce flux, le seul equipement qui voit passer TOUT le trafic n'ecrit nulle part.
serveur_loki ingress 3100 tcp client_journal tls Réception des journaux poussés par Alloy (client_journal) en HTTPS (http_tls_config, cert step-ca).
serveur_loki ingress 3100 tcp localhost clair Requêtes de Grafana co-localisé (datasource Loki en localhost).
serveur_loki ingress 3100 tcp fabric tls Journaux des hyperviseurs. La machine qui PORTE les VM ecrivait ses journaux nulle part ailleurs que sur son propre disque — invisibles le jour ou c'est elle qui casse.
serveur_nextcloud ingress 80 tcp edge clair Interface web servie via l'edge (TLS terminé à l'edge).
serveur_nextcloud egress 443 tcp edge tls-requis Découverte OIDC auprès de Keycloak (via son FQDN publié à l'edge).
serveur_nextcloud egress 5432 tcp serveur_postgresql tls-requis Base de données Nextcloud (verify-full).
serveur_nextcloud egress 9980 tcp serveur_collabora tls-cible Vérifications WOPI serveur->Collabora (édition en ligne). TLS interne = feuille de route edge->backends.
serveur_nginx ingress 80 tcp admin clair HTTP depuis le reseau d'administration — redirection permanente vers HTTPS.
serveur_nginx ingress 443 tcp flotte tls-requis HTTPS depuis le tenant : les FQDN publiés vivent à l'edge (découverte OIDC, appels inter-services par nom).
serveur_nginx ingress 443 tcp admin tls-requis HTTPS depuis le reseau d'administration : l'exploitant administre les services par leur interface web, servie par l'edge.
serveur_nginx egress derive tcp expositions tls-cible Proxy vers les backends exposés (host:port dérivés des expose ; TLS interne = roadmap edge→backends).
serveur_oauth2_proxy ingress 4180 tcp edge clair Point d'entrée SSO servi via l'edge (TLS terminé à l'edge) devant l'application protégée.
serveur_oauth2_proxy egress 443 tcp edge tls-requis Émetteur OIDC (Keycloak) via son FQDN publié à l'edge : échange de jetons.
serveur_oauth2_proxy egress 8080 tcp localhost clair Relais vers l'application co-localisée protégée (upstream en localhost).
serveur_openldap ingress 389 tcp flotte starttls LDAP + STARTTLS pour les clients internes qui préfèrent la mise à niveau TLS sur 389.
serveur_openldap ingress 636 tcp serveur_keycloak, serveur_dovecot, serveur_icingaweb2, serveur_postfix tls-requis LDAPS : fédération (Keycloak), userdb courriel (Dovecot), auth web (Icinga Web 2), tables virtuelles (Postfix).
serveur_ops ingress 8090 tcp edge, admin clair Console d'exploitation servie par l'edge (TLS terminé à l'edge), et joignable depuis le plan d'administration là où il n'y a pas d'edge. Le GUI lui-même reste sur la boucle locale : c'est nginx qui authentifie devant.
serveur_ops egress 22 tcp flotte ssh Piloter la flotte — c'est la raison d'être du poste.
serveur_ops egress 443 tcp edge tls-requis Cloner et resynchroniser le génome depuis la forge de l'écosystème.
serveur_ops_site egress 22 tcp fabric ssh Shell des hyperviseurs : ce que l'API ne couvre pas — configuration reseau, ponts, deplacement de disques. Un pouvoir distinct de l'API, donc declare a part.
serveur_ops_site egress 22 tcp serveur_ops_tenant ssh Insemination : amorcer le runner d'un tenant — socle, moteur, plan, plancher de resolution — pour qu'il prenne ensuite le relais sur ses propres machines. Ne transporte aucun secret : la voute est remise par un humain.
serveur_ops_site egress 443 tcp fabric tls-requis API de la frontiere OPNsense : poser les alias et les regles qui ouvrent les flux du tenant qu'on materialise. Preparer le terrain sans cela laisserait un terrain injoignable.
serveur_ops_site egress 443 tcp externe tls-requis Repere du genome : git ls-remote anonyme sur eregion (forge.alliance-boreale.ca) pour dire si la forge du site a pris du retard. Lecture seule, sans identifiant.
serveur_ops_site egress 8006 tcp fabric tls-requis API de l'hyperviseur : créer, cloner et détruire les VM de la fabric. Le seul flux par lequel un écosystème peut en matérialiser un autre.
serveur_ops_tenant ingress 22 tcp runner_site ssh Insémination : le runner du SITE amorce ce runner-ci — socle, moteur, plan, plancher de résolution — jusqu'à ce qu'un humain lui remette sa voûte. Vers cette machine seule, jamais vers le reste de l'écosystème.
serveur_postfix ingress 25 tcp externe, client_smtp starttls SMTP entrant : courrier externe (MX) et notifications internes (client_smtp).
serveur_postfix ingress 465 tcp flotte, externe tls-requis Soumission authentifiée en TLS direct (submissions, RFC 8314) : clients de courriel des utilisateurs.
serveur_postfix ingress 587 tcp flotte, externe starttls Soumission authentifiée (STARTTLS obligatoire) : agents internes et clients de courriel des utilisateurs.
serveur_postfix egress 24 tcp serveur_dovecot tls-requis Remise finale par LMTP au mailstore (Dovecot), en TLS vérifié.
serveur_postfix egress 25 tcp externe starttls Relais sortant vers les MX distants (STARTTLS opportuniste).
serveur_postfix egress 636 tcp serveur_openldap tls-requis Tables virtuelles (domaines/alias/boîtes) résolues sur l'annuaire (LDAPS).
serveur_postfix egress 11332 tcp localhost clair Filtre milter rspamd co-localisé (antispam + signature DKIM).
serveur_postfix egress 12345 tcp serveur_dovecot tls Validation SASL des identifiants de soumission contre Dovecot.
serveur_postgresql ingress 5432 tcp serveur_keycloak, serveur_forgejo, serveur_icinga, serveur_nextcloud tls-requis Connexions applicatives à PostgreSQL (verify-full ; pg_hba hostssl).
serveur_postgresql ingress 9187 tcp serveur_prometheus clair Metriques PostgreSQL lues par l'observatoire. Series, pas verdicts : ce qui derive lentement — cache qui decroche, connexions qui montent, bases qui grossissent — n'a que le graphe pour se faire voir. En clair pour l'instant, contrairement a client_metrique : dette inscrite, a fermer par --web.config.file + client_pki.
serveur_powerdns ingress 5300 tcp dns_public_site clair AXFR signe TSIG par le serveur DNS public du site, vers l'instance publique uniquement.
serveur_powerdns ingress 5300 udp dns_public_site clair Interrogation du SOA par le secondaire du site avant chaque transfert.
serveur_powerdns ingress derive udp flotte clair Zone souveraine. 53 seul sur son hôte, 5300 sur la loopback derrière le résolveur.
serveur_powerdns ingress derive tcp flotte clair Idem en TCP (réponses volumineuses, AXFR restreint par allow_axfr_ips).
serveur_powerdns egress 53 udp externe clair Résolution sortante du serveur autoritatif POUR SES PROPRES besoins (apt, NTP) — il ne récurse pour aucun autre hôte.
serveur_powerdns egress 53 tcp externe clair Repli TCP de la résolution sortante du serveur autoritatif (réponses dépassant la taille UDP).
serveur_prometheus ingress 9090 tcp localhost clair Console Prometheus consommée en local par Grafana co-localisé (pas d'exposition inter-nœud).
serveur_prometheus egress 9100 tcp client_metrique tls Scrape des node_exporter (HTTPS via cert step-ca) sur chaque nœud instrumenté.
serveur_prometheus egress 9100 tcp frontiere clair Scrape de l'exportateur de la frontiere (os-node_exporter), sur sa seule patte de supervision : l'equipement qui voit passer TOUT le trafic n'avait ni temperature ni charge dans la supervision.
serveur_prometheus egress 9100 tcp fabric clair Scrape des hyperviseurs : la machine qui PORTE les VM etait invisible de la supervision qui les surveille. Elle ne peut pas pousser (route par defaut gelee, D-57), donc on la tire.
serveur_redis ingress 6379 tcp localhost clair Cache/verrous consommés uniquement par l'application co-localisée (ex. Nextcloud). Aucune exposition inter-nœud.
serveur_resolveur ingress 53 udp flotte clair Toute la flotte du tenant résout ici — et nulle part ailleurs.
serveur_resolveur ingress 53 tcp flotte clair Réponses longues et bascule TCP, obligatoires en DNS.
serveur_resolveur egress 53 udp externe clair Récursion depuis les serveurs racine. Aucun transitaire : l'écosystème ne confie ses questions à personne.
serveur_resolveur_site ingress 53 udp voisins_site clair Les écosystèmes de ce site résolvent ici tant qu'ils n'ont pas leur propre résolveur. client_resolveur les bascule chez eux dès qu'il existe ; retirer cet emprunt est alors une émancipation.
serveur_resolveur_site ingress 53 tcp voisins_site clair Réponses longues et bascule TCP, obligatoires en DNS.
serveur_rspamd ingress 11332 tcp localhost clair Protocole milter consommé par Postfix co-localisé (analyse + signature DKIM). Local uniquement.
serveur_rspamd ingress 11334 tcp localhost clair Interface de contrôle rspamd (statistiques, apprentissage) en local.
serveur_rspamd egress 80 tcp externe clair Carte de hachages SURBL (sa-update.surbl.org), publiee en clair par l'amont. Une carte alteree ne peut que mal classer un courriel ; elle n'execute rien.
serveur_rspamd egress 443 tcp externe tls-requis Cartes de rspamd (maps.rspamd.com) : messageries gratuites et jetables, redirecteurs, listes blanches DMARC/SPF/DKIM, hameconnage. Sans elles l'antispam garde les copies du paquet, qui vieillissent.
serveur_step_ca ingress 8443 tcp flotte tls-requis ACME + API step-ca : chaque nœud (client_pki) émet/renouvelle ses certificats et récupère la racine.
serveur_web_dorsal ingress 80 tcp edge, serveur_web_frontal clair Front nginx local des webapps et des sites statiques, relaye par l'edge (noms internes) et par le web frontal (noms publics).
serveur_web_dorsal egress 443 tcp flotte tls git clone/pull du depot de chaque app (Forgejo souverain) au deploiement.
serveur_web_frontal ingress 80 tcp externe clair HTTP public, relaye a travers le WAF — et le defi HTTP d'ACME ; renverra vers HTTPS quand le certificat sera la.
serveur_web_frontal ingress 443 tcp externe tls-requis HTTPS public — les sites et services que le locataire publie sur l'Internet (attend son certificat Let's Encrypt).
serveur_web_frontal egress 80 tcp serveur_web_dorsal clair Relais vers le web dorsal, qui porte les sites et les applications publiques.

Synthèse chiffrement

  • clair : 52 flux
  • n-a : 8 flux
  • ssh : 8 flux
  • starttls : 6 flux
  • tls : 10 flux
  • tls-cible : 2 flux
  • tls-requis : 36 flux