From 0db7fc15736fd083ecce09ade2b5df0fca66f032 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Tue, 28 Jul 2026 15:51:12 +0200 Subject: [PATCH] docs: Document NetworkPolicies rollout (issue #10), incidents, OOM fix, and identity cleanup --- docs/TASKS.md | 57 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/docs/TASKS.md b/docs/TASKS.md index a08da61..6fa1e99 100755 --- a/docs/TASKS.md +++ b/docs/TASKS.md @@ -1,7 +1,7 @@ # aXion1337.Chat – Task List & Meilensteine **Last Updated**: 2026-07-28 -**Statusübersicht**: [✅ 12 Abgeschlossen] [🔄 0 In Progress] [📋 9+ Pending] [🔒 10 Security] +**Statusübersicht**: [✅ 13 Abgeschlossen] [🔄 0 In Progress] [📋 8+ Pending] [🔒 10 Security] --- @@ -9,9 +9,9 @@ | Kategorie | Count | Status | Details | |-----------|-------|--------|---------| -| **Completed** | 12 | ✅ Done | K3S, Flux, ESS, Themes, Desktop, Monitoring, TURN, Authentik (Deploy+Enrollment/Recovery/2FA), Firewall, SSH, coturn Fix, Element Call Fork | +| **Completed** | 13 | ✅ Done | K3S, Flux, ESS, Themes, Desktop, Monitoring, TURN, Authentik (Deploy+Enrollment/Recovery/2FA), Firewall, SSH, coturn Fix, Element Call Fork, NetworkPolicies | | **In Progress** | 0 | 🔄 — | — | -| **Backlog** | 9+ | 📋 Pending | DB Backups, PostgreSQL Migration, NetworkPolicies, MAS-Template-Link, VP9-Retry | +| **Backlog** | 8+ | 📋 Pending | DB Backups, PostgreSQL Migration, MAS-Template-Link, VP9-Retry | | **Security Tasks** | 5 | 🔒 Pending | auditd, Kernel hardening, CrowdSec, Falco, WAF | ### Priority Distribution @@ -25,7 +25,7 @@ --- -## 🗓️ Session-Zusammenfassung 2026-07-27/28 (weiter morgen) +## 🗓️ Session-Zusammenfassung 2026-07-27/28 (fortlaufend aktualisiert) Nach längerer Pause wiederaufgenommen — Mac war neu aufgesetzt, Zugriff (SSH, Kubeconfig, age-Key, Homebrew/flux/helm/sops/age) komplett wiederhergestellt und dauerhaft in `~/.zshrc` @@ -43,14 +43,26 @@ verankert. Was in dieser Session erledigt wurde: **Wichtig**: erzwungenes `video_codec: vp9` hat Calls kurzzeitig live komplett kaputt gemacht (kein Bild/Ton) — sofort zurückgerollt, ohne Codec-Zwang läuft's. Root Cause dafür nicht abschließend isoliert, nur umgangen. +4. **Identitäts-Aufräumarbeiten**: `sorB`'s Authentik-E-Mail korrigiert (`thorec@hotmail.de`), + MAS OIDC-Link (`upstream_oauth_links`) von `sorB` zeigte fest auf den alten MAS-User + `akadmin`/`@akadmin:axion1337.chat` (Sub-Hash ist stabil über Username-Renames, daher blieb + die Verknüpfung nach dem Rename "akadmin"→"sorB" bestehen) — umgehängt auf `sorb`/ + `@sorb:axion1337.chat`. Neue Identität `elbojoloco` angelegt (E-Mail `cfx@riot.8shield.net`), + verknüpft mit dem alten `akadmin`-MAS-User. **Übrig**: ein leeres, unverknüpftes + `@bojeledoggo:axion1337.chat`-Konto (Tippfehler-Artefakt) — User räumt das selbst auf. +5. **NetworkPolicies** (Issue #10 ✅ geschlossen) — siehe "Network Security" Abschnitt unten. + Zwei Live-Incidents beim Rollout (Port-Verwechslungen), beide binnen Minuten live gepatcht + und danach committed. Nebenbei: `matrixRTC`-Authorisation-Service OOM-Fix (20Mi→128Mi). -### Offene Punkte für morgen +### Offene Punkte - **VP9-Retry**: Root Cause des Call-Ausfalls isolieren (Browser-Konsolen-Repro nötig), bevor wieder versucht wird — siehe Backlog "Element Call Enhancement". - **`ThreadNet-Web` Build-Bug**: `scripts/docker-link-repos.sh`/`docker-package.sh` nicht ausführbar committet + veralteter `matrix-js-sdk#develop`-Pin im Lockfile blockiert vollständigen Neu-Build des Web-Forks. Noch nicht gefixt, User hat noch nicht final entschieden ob gewünscht. +- **Verwaistes `@bojeledoggo:axion1337.chat`**: leeres Matrix-Konto ohne OIDC-Link, User räumt + das selbst auf (braucht dafür seinen eigenen Access-Token für die Admin-API). - **MAS-Template-Link**: 2FA/Passkey-Setup-Links direkt auf `account.axion1337.chat/account/` statt nur über `docs/setup/security.html` — braucht MAS Custom-Template-Override (`templates.path`), größerer separater Task. @@ -334,18 +346,29 @@ verankert. Was in dieser Session erledigt wurde: - Priority: **HIGH** (data preservation) ### Network Security -- [ ] **NetworkPolicies – K8s-Layer Segmentation** - - Default-Deny Ingress für `matrix` namespace - - Allow rules: - - Ingress → MAS:443 - - Ingress → ElementWeb:443 - - MAS ↔ Synapse:8008 - - Synapse ↔ Postgres:5432 - - Authentik → Postgres:5432 - - Authentik → Loki:3100 (monitoring) - - Egress: Matrix-specific (federation, etc.) - - Est. Effort: 1 day - - Priority: **MEDIUM** (compliance, least-privilege) +- [x] **NetworkPolicies – K8s-Layer Segmentation** (2026-07-28, Closes #10) + - Default-Deny Ingress (egress left untouched) für `matrix` UND `authentik` namespaces, + per-Komponente Allow-Regeln in `apps/authentik/networkpolicy.yaml` und + `apps/production/networkpolicy.yaml`. Rollout: authentik zuerst als Pilot, dann matrix. + - Empirisch verifiziert, dass K3s' eingebauter NetworkPolicy-Controller tatsächlich + durchsetzt (Testnamespace, Timeout- statt Refused-Verhalten unter Deny-Policy). + - **Zwei Live-Incidents beim Rollout, beide binnen Minuten behoben**: + 1. `authentik-server`: Regel erlaubte Service-Port 80/443, aber NetworkPolicy filtert + auf dem tatsächlichen Container-Port (9000/9443 nach kube-proxy-DNAT) — 502 auf + `auth.axion1337.chat`, sofort korrigiert. + 2. `matrix-authentication-service`: Regel erlaubte Synapse nur auf Port 8081, aber + Synapse ruft `/oauth2/introspect` tatsächlich auf **Port 8080** — jede + authentifizierte Anfrage (inkl. `/sync`) scheiterte mit 503, alle Clients zeigten + "Verbindung unterbrochen". Live gepatcht, dann committed. + - Lehre für zukünftige NetworkPolicies in diesem Repo: wo immer ein Service benannte + Ports (`targetPort: `) nutzt, diese direkt in der Policy referenzieren statt + Portnummern zu raten — schließt genau diese Fehlerklasse aus. + - Nebenbefund (unabhängig von NetworkPolicies): `matrixRTC`-Authorisation-Service hatte + ein 20Mi-Memory-Limit (Chart-Default), OOM-gekillt nach ~74 Tagen Uptime während der + Verifikations-Calls — auf 64Mi/128Mi angehoben. + - `coturn` (hostNetwork) bewusst ausgenommen — NetworkPolicy greift dort nicht. + - `authentik-postgresql`'s Bitnami-Chart-Policy (Port 5432, quelloffen) bewusst nicht + angefasst/dupliziert, da Helm-verwaltet. - [ ] **Pod Security Admission (Restricted)** - Apply to `matrix` & `authentik` namespaces