[HIGH] NetworkPolicies: Default-Deny in Matrix Namespace #10

Closed
opened 2026-05-14 21:41:58 +00:00 by sorb · 2 comments
Owner

Implement Kubernetes NetworkPolicies for security isolation. Default-deny for matrix namespace with selective allow rules. Test for no service breakage. Est. Time: 1 day

Implement Kubernetes NetworkPolicies for security isolation. Default-deny for matrix namespace with selective allow rules. Test for no service breakage. Est. Time: 1 day
sorb added this to the aXion1337 Roadmap project 2026-05-14 21:47:53 +00:00
sorb added the priority:high label 2026-05-14 21:48:41 +00:00
sorb moved this to ready in aXion1337 Roadmap on 2026-05-14 21:54:24 +00:00
sorb moved this to backlog in aXion1337 Roadmap on 2026-05-14 21:55:19 +00:00
sorb added the area:infrastructure label 2026-05-14 21:58:28 +00:00
Author
Owner

Default-Deny Ingress NetworkPolicies umgesetzt für matrix und authentik Namespaces (Egress bewusst unangetastet — Federation/ACME/SMTP/DNS bleiben frei).

  • Empirisch verifiziert, dass K3s's eingebauter NetworkPolicy-Controller tatsächlich durchsetzt (nicht nur akzeptiert)
  • Rollout phasenweise: authentik zuerst als Pilot, dann matrix
  • Alle öffentlichen Endpunkte + Cert-Renewal-Pfad (ACME HTTP01-Solver) + Monitoring-Scraping abgedeckt
  • coturn (hostNetwork) bewusst ausgenommen — NetworkPolicy greift dort nicht, ist über die Hetzner-Firewall abgesichert

Zwei Live-Incidents beim Rollout, beide binnen Minuten behoben:

  1. authentik-server: Regel erlaubte Service-Port 80/443 statt des tatsächlichen Container-Ports 9000/9443 → 502 auf auth.axion1337.chat
  2. matrix-authentication-service: Regel erlaubte Synapse nur Port 8081, aber /oauth2/introspect läuft über Port 8080 → alle authentifizierten Requests (inkl. /sync) scheiterten mit 503

Beide Ursachen: NetworkPolicy filtert auf dem tatsächlichen Pod-Port, nicht dem Service-Port — künftige Policies in diesem Repo nutzen deshalb wo möglich benannte Ports statt Nummern.

Nebenbefund (unabhängig): matrixRTC-Authorisation-Service hatte ein 20Mi-Memory-Limit und wurde nach ~74 Tagen Uptime OOM-gekillt — auf 64Mi/128Mi angehoben.

Vollständig verifiziert: alle öffentlichen Endpunkte, echter Login, echter Video-Call, Cert-Status, Metriken. Details: Wiki 00-TASKS.md.

Default-Deny Ingress NetworkPolicies umgesetzt für `matrix` und `authentik` Namespaces (Egress bewusst unangetastet — Federation/ACME/SMTP/DNS bleiben frei). - Empirisch verifiziert, dass K3s's eingebauter NetworkPolicy-Controller tatsächlich durchsetzt (nicht nur akzeptiert) - Rollout phasenweise: authentik zuerst als Pilot, dann matrix - Alle öffentlichen Endpunkte + Cert-Renewal-Pfad (ACME HTTP01-Solver) + Monitoring-Scraping abgedeckt - `coturn` (hostNetwork) bewusst ausgenommen — NetworkPolicy greift dort nicht, ist über die Hetzner-Firewall abgesichert **Zwei Live-Incidents beim Rollout, beide binnen Minuten behoben:** 1. `authentik-server`: Regel erlaubte Service-Port 80/443 statt des tatsächlichen Container-Ports 9000/9443 → 502 auf auth.axion1337.chat 2. `matrix-authentication-service`: Regel erlaubte Synapse nur Port 8081, aber `/oauth2/introspect` läuft über Port 8080 → alle authentifizierten Requests (inkl. `/sync`) scheiterten mit 503 Beide Ursachen: NetworkPolicy filtert auf dem tatsächlichen Pod-Port, nicht dem Service-Port — künftige Policies in diesem Repo nutzen deshalb wo möglich benannte Ports statt Nummern. Nebenbefund (unabhängig): `matrixRTC`-Authorisation-Service hatte ein 20Mi-Memory-Limit und wurde nach ~74 Tagen Uptime OOM-gekillt — auf 64Mi/128Mi angehoben. Vollständig verifiziert: alle öffentlichen Endpunkte, echter Login, echter Video-Call, Cert-Status, Metriken. Details: Wiki [00-TASKS.md](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/wiki/00-TASKS).
sorb closed this issue 2026-07-28 13:52:18 +00:00
Author
Owner

Migriert nach git.lab: axion1337.chat/axion1337.chat-gitops#10 (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.

**Migriert nach git.lab**: [axion1337.chat/axion1337.chat-gitops#10](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/10) (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sorb/axion1337.chat-gitops#10