# Audit TODO 2026-05-25 Quelle: `docs/AUDIT_2026-05-25.md` Status: Arbeitsliste fuer die Umsetzung. Authelia-2FA/OIDC bleibt bewusst spaet, weil die Ziel-Policy noch nicht final entschieden ist. ## Leitplanken - Keine Authelia-2FA-ACL-Aenderungen in den ersten Sprints. - Keine Live-riskanten Bind-/Port-Aenderungen ohne vorher erfasste Host-Werte, insbesondere Tailscale-IP. - Erst Inventar und Baseline, dann Aenderungen. - Jede produktive Aenderung bekommt Validierung und Rollback-Hinweis. ## Sprint 0 - Inventar und Baseline | Status | Aufgabe | Ergebnis | |---|---|---| | in Arbeit | Hardware-Inventar ausfuellen | CPU, RAM, Mainboard, NIC, Disks und SMART erfasst; USV/Strom/BIOS offen | | in Arbeit | Netzwerk-Inventar ausfuellen | Host-IP, Gateway, Tailscale-IP und AdGuard-Bind erfasst; Router-/VLAN-Details offen | | offen | Externe Abhaengigkeiten dokumentieren | `docs/EXTERNAL_DEPENDENCIES.md` enthaelt Provider, Kritikalitaet, Ausfallplan | | offen | Services-Recovery-Pfade beschreiben | `docs/SERVICES_RECOVERY.md` enthaelt Gitea-/Komodo-/Secrets-Sonderpfade | | offen | Baseline-Tag setzen | `audit-2026-05-25-baseline` ist lokal und remote vorhanden | | erledigt | Policy-Check neu ausfuehren | SEC001-Warnings aus altem Report sind nicht mehr aktuell | ## Sprint 1 - Nicht-kontroverse Sicherheits- und Repo-Hygiene | Status | Aufgabe | Ergebnis | |---|---|---| | offen | Borg-Passphrase analog sichern | Passphrase ist ohne Host/Vaultwarden wiederherstellbar | | erledigt (repo) | AdGuard Admin-Bind vorbereiten | Tailscale-IP `100.80.98.33` erfasst, Compose-Soll geaendert | | erledigt | AdGuard Admin-Port auf Tailscale-IP binden | Live validiert: `ss -ltnp` zeigt `100.80.98.33:8082`, DNS auf Port 53 funktioniert, LAN-Zugriff auf `192.168.178.58:8082` schlaegt fehl | | erledigt | Alte Monitoring-Verzeichnisse entfernen | `ops/grafana-influxdb/` und `ops/loki/` sind aus dem aktiven Repo entfernt; Rollback erfolgt ueber Git-Historie | | offen | Policy-Warnings triagieren | Jede Warning ist behoben oder bewusst dokumentiert | ## Sprint 2 - Storage und Recovery verbindlich machen | Status | Aufgabe | Ergebnis | |---|---|---| | offen | `docs/STORAGE_LAYOUT.draft.md` finalisieren | Datei wird als `docs/STORAGE_LAYOUT.md` Active gefuehrt | | offen | Disk- und Share-TBDs eintragen | Modelle, Groessen, Seriennummern, Filesysteme und Cache-Settings sind dokumentiert | | offen | Gitea-Repo-Mirror-Mechanik definieren | Mirror fuer `/mnt/user/services/gitea/git/repositories/` mit Frequenz <= 6 h ist spezifiziert | | offen | Komodo-Bootstrap-Pfad beschreiben | Kaltstart ohne laufendes Komodo ist dokumentiert | | offen | Immich-Restore-Test planen | Testumfang, Datenpfade und Smoke-Test-Kriterium stehen fest | ## Sprint 3 - Restore und Monitoring | Status | Aufgabe | Ergebnis | |---|---|---| | offen | Immich-Restore-Test implementieren | Restore-Report landet unter `/mnt/user/backups/restore-reports/` | | offen | Borg-Stale-Alert bauen | Alarm feuert, wenn Borg-Archiv zu alt ist | | offen | TLS-Cert-Expiry-Alert bauen | Alarm feuert bei Restlaufzeit unter Schwellwert | | offen | Container-Down-Alert bauen | Unerwartet fehlende Container werden sichtbar | | offen | Family-View Dashboard definieren | Uptime, Backup-Frische, Cert-Tage, Disk-Fuellung auf einer Seite | ## Sprint 4 - Familien- und Betriebsdoku | Status | Aufgabe | Ergebnis | |---|---|---| | offen | Familien-Onboarding schreiben | Nextcloud, Immich, Vaultwarden, 2FA-Verlust, Ausfallverhalten kurz erklaert | | offen | Capacity-/Lifecycle-Review erstellen | Wachstum, Schwellenwerte, Upgrade-Trigger und Disk-Replacement-Plan dokumentiert | | offen | USV-Test oder USV-Entscheidung | Power-Loss-Verhalten ist bekannt und dokumentiert | ## Sprint 5 - Auth und Frontdoor, bewusst zuletzt | Status | Aufgabe | Ergebnis | |---|---|---| | geparkt | Authelia 2FA fuer Operator-UIs erweitern | Erst nach finaler Policy-Entscheidung | | geparkt | Authelia OIDC fuer Apps pruefen | Erst nach Familien-/Client-Auswirkungsanalyse | | geparkt | CrowdSec vor Traefik pruefen | Nach stabiler Auth-/Monitoring-Basis | ## Offene Host-Werte Diese Werte muessen am Unraid-Host erhoben werden, bevor die entsprechenden Aenderungen sauber umgesetzt werden: ```bash hostname cat /proc/cpuinfo | awk '/model name|flags/ {print; if(/flags/) exit}' free -h dmidecode -t baseboard | head -30 ip -br link tailscale ip -4 lsblk -o NAME,SIZE,MODEL,SERIAL,FSTYPE,MOUNTPOINT,VENDOR df -h /mnt/cache /mnt/disk1 /mnt/user smartctl -a /dev/nvme0n1 | head -80 smartctl -a /dev/sdb | head -80 ```