Härtungs-Checkliste¶
Wenn die Instanz produktiv geht, diese Liste durcharbeiten. Alles ist optional, aber die meisten Punkte solltest du nicht überspringen. Agents und Collectors verbinden sich immer von sich aus zum Server; auf den überwachten Maschinen muss kein Port eingehend offen sein. Nur der Aktive Collector auf dem Vesana-Server baut selbst Verbindungen zu den Zielen seiner Checks auf. Die Punkte unten härten den Server selbst.
Authentifizierung¶
- [ ] 2FA-Pflicht für Super-Admins und Admins per Regel unter Admin → Anmeldung & Sicherheit → 2FA & Sitzungen — Methoden: Authenticator-App (TOTP) oder Passkey/Hardware-Key (WebAuthn). Beim Einrichten entstehen Backup-Codes. Siehe 2FA.
- [ ] Sitzungsdauer prüfen — Standard 30 Tage ohne Nutzung, höchstens 90 Tage; „Angemeldet bleiben" lässt sich verbieten (Login-Sitzungen)
- [ ] Erstes Admin-Konto (aus dem Einrichtungsassistenten) mit starkem Passwort und 2FA — und nicht für den Alltag verwenden
- [ ] Login-Rate-Limit greift — 10 Anfragen/min pro Client-IP für Login und 2FA-Prüfung; 5 falsche 2FA-Codes sperren das Konto für 30 Minuten
- [ ] Hinter einem eigenen Reverse-Proxy: dessen Adresse unter Admin → Anmeldung & Sicherheit → Admin-Zugriff → Erweitert als vertrauenswürdigen Proxy eintragen, sonst zeigen Sitzungsliste und Audit-Log die Adresse des Proxys
- [ ] Admin-Bereich einschränken (optional): IP-Allowlist oder eigener Admin-Container unter Admin-Zugriff — siehe Admin-Zugriff & Split-Container
Tokens¶
- [ ] Agent-Tokens nur auf den Rechner legen, für den sie ausgestellt sind — ein Token gilt für genau einen Host
- [ ] Verlorene Tokens/Keys sofort erneuern (Host verwalten → Token erneuern bzw. Key erneuern am Collector) — siehe Tokens & API-Keys
- [ ]
.envgeschützt — Rechte600(setzt der Installer); sie enthältSECRET_KEY,FIELD_ENCRYPTION_KEYund die Datenbank-Passwörter
Verschlüsselung¶
- [ ]
FIELD_ENCRYPTION_KEYim Passwort-Manager + Print-Backup im Tresor - [ ] Backup vom Schlüssel separat vom DB-Backup
- [ ] Niemand außer 1–2 Personen sollte den Schlüssel kennen
TLS¶
- [ ] Echtes Cert (Let's-Encrypt oder eigene CA), nicht selbstsigned in Production
- [ ] HSTS aktiv (Standard)
- [ ] TLS 1.2/1.3 — Standard im eingebauten nginx; bei eigenem Reverse-Proxy dort einstellen
- [ ] Erneuerung automatisch (Zertifikat aus Vesana) oder Ablauf über den Check „TLS Certificate" am Host „Vesana Server" in eine Alarm-Regel aufnehmen
Netzwerk¶
- [ ] Outbound-Whitelist auf dem Server: nur erlaubte Ziele (Container-Registry, Lizenzportal, ggf. Vesana-Bibliothek
community.vesana.org, Push-Dienste der Browser, SMTP, Benachrichtigungsdienste) — siehe Datenschutz & ausgehende Verbindungen - [ ] Eingehend nur 80/443 (bzw. die gewählten Ports) — alle anderen Ports geschlossen außer evtl. SSH. Sollen Agents aus fremden Netzen einliefern: Agent-Gateway aktivieren und stattdessen NUR den Gateway-Port öffentlich freigeben (UI-Port intern/VPN)
- [ ] SSH mit Key-only, nicht Passwort
- [ ] Fail2ban o. ä. auf SSH-Brute-Force
- [ ] Firewall-Regeln dokumentiert und versioniert
Redis¶
- [ ] Redis-Passwort gesetzt (
REDIS_PASSWORDin der.env— erzeugt der Installer)
Container-Isolation¶
- [ ] Non-root bestätigen — API-, Worker-, Receiver- und AI-Service-Container laufen als non-root (
USER app, UID 1000). Einzige bewusste Ausnahme: der Updater-Container bleibt root, weil er den Docker-Socket beschreiben muss, um Updates auszuführen. - [ ] Docker-Socket nicht zusätzlich an andere Container mounten
- [ ] Webserver-Container (nginx) — die Arbeitsprozesse laufen als nginx-Benutzer, keine Anpassung nötig
Logging und Monitoring¶
- [ ] Audit-Log-Aufbewahrung prüfen (Admin → System → Ressourcen → Speicher; Standard: unbegrenzt)
- [ ] Log-Tailing extern falls Compliance-relevant (z. B. an SIEM)
- [ ] Checks am Host „Vesana Server" in eine Alarm-Regel aufnehmen — sie melden Probleme der Instanz selbst
- [ ] Fehlgeschlagene Anmeldungen an überwachten Rechnern über einen Eventlog-/Script-Check + Alert-Regel melden lassen
Updates¶
- [ ] GUI-Updater funktioniert (Test mit kleinem Update vor erstem Live-Update)
- [ ] Sicherheitsupdates automatisch — Admin → System → Updates (für neue Installationen Standard)
- [ ] Backup vor jedem Update läuft (Standard)
- [ ] Update-Fenster kommuniziert (Statuspage / Wiki)
Backup¶
- [ ] Automatische Backups eingeplant (Admin → System → Backup & DR)
- [ ] Off-Site-Kopie (mind. wöchentlich)
- [ ] Restore-Drill mind. 1× pro Quartal
- [ ]
.env-Backup separat
RBAC¶
Rechte vergibt Vesana über Rollen: vier eingebaute (Super-Admin, Admin, Operator, Viewer) plus eigene Rollen mit frei zusammengestellten Permissions. Eine Rolle gilt je Tenant — ein Konto (oder ein Team) kann in einem Tenant Admin sein und in einem anderen nur lesen. Was ein Konto in einem Tenant nicht darf, verweigert der Server (403); Daten anderer Tenants sieht es gar nicht. Details: Rollen & Permissions.
- [ ] Permissions-Inventur — kein User mit mehr als nötig
- [ ] Super-Admin nur für wenige Konten — Super-Admins sehen alle Tenants und sind von Einschränkungen ausgenommen
- [ ] Auditor-Rolle für externe Auditoren (nur Lese-Permissions wie
audit_log.view_tenant) - [ ] Zuweisungen „alle Tenants" nur wo wirklich gebraucht (MSP-Rollen)
AI¶
- [ ] Wenn Cloud-Provider: klar sein, was an die API geht
- [ ] AI-Permissions sparsam — nicht jeder User braucht
ai.query/ai.analyze - [ ] KI-Websuche: Liefert das Wiki zu wenig, geht die Frage an DuckDuckGo — auch mit lokalem Ollama (siehe Datenschutz)
Smartphone / Push¶
- [ ] HTTPS ist Pflicht — ohne sicheren Kontext erlaubt kein Browser Installation oder Push
- [ ] Push-Schlüssel (VAPID) sichern — sie gehören zur Instanz und stecken im Backup; nach einem Neuaufbau ohne Backup müssen alle Geräte Push neu aktivieren
Custom-Code (Scripts, Profile)¶
Script-fähige Check-Typen (agent_script, agent_custom, ssh_script, ssh_custom, ssh_command, api_script, plugin_local) können beliebigen Code auf überwachten Maschinen bzw. am Collector ausführen — das ist der sensibelste Punkt im ganzen System und deshalb eigens abgesichert:
- Apply-Scope pro User: Wer Script-Checks anlegen/ändern darf, ist granular einschränkbar — nach Tenant, nach Tag oder auf einzelne Hosts. Ohne eigene Einstellung gilt der Standard der Rolle: Admin darf auf allen erreichbaren Tenants Scripts anwenden, jede andere Rolle nicht (Super-Admins sind nie eingeschränkt). Eine gespeicherte Einstellung ersetzt den Standard — auch „Keine" für einen Admin.
- Reichweite wird gefragt, nicht angenommen: Vor dem Speichern eines Script-Inhalts steht, wie viele Checks daran hängen — man wählt „für alle", „als eigenes Script" (Kopie) oder „nur dieses Gerät". So ändert niemand versehentlich ein von vielen Hosts geteiltes Script.
- Identität bestätigen: Wer ausgeführten Code ändert (Script anlegen, Rumpf ändern, Bundle mit Code importieren), bestätigt seine Identität erneut — Standard an, abschaltbar unter Admin → Anmeldung & Sicherheit → 2FA & Sitzungen.
- Aktiver Collector: läuft als eigenes Dienstkonto mit eingeschränkten Rechten, nicht als root. Server-interne Adressen (Loopback, Docker-Netze) sind für Checks gesperrt, die kein Super-Admin gespeichert hat, und pro Tenant lässt sich freigeben, ob Checks bzw. eigene Plugins über den Server laufen dürfen (Admin → Agents & Collectors → Active-Checker).
- Agent Lock: Am Host selbst lässt sich festlegen, dass Scripts erst nach lokaler Freigabe laufen — Schutz für den Fall, dass Vesana selbst kompromittiert wird. Siehe Agent Lock.
Checkliste:
- [ ]
monitoring_scripts.create/.editnicht für Viewer/Operator - [ ] Apply-Scope pro User sinnvoll eingeschränkt (nicht pauschal „alle Tenants")
- [ ] Custom-Scripts vor Roll-out auf Test-Maschine prüfen
- [ ] Profile-Imports aus unbekannter Quelle vorsichtig
Sicherheits-Updates¶
- [ ] CVE-Feeds beobachten (Postgres, Redis, FastAPI, React)
- [ ] Updates zeitnah einspielen (GUI-Updater, Sicherheitsupdates automatisch)
Dokumentation für Operations¶
- [ ] Runbooks im Wiki — was tun bei XYZ
- [ ] Kontaktliste für Eskalationen (im Wiki)
- [ ] Status-Page für externe Kommunikation
- [ ] Ablage
FIELD_ENCRYPTION_KEYdokumentiert (wer hat Zugriff)
Compliance-spezifisch¶
| Standard | Was speziell |
|---|---|
| ISO 27001 | Audit-Log + 2FA + Backup-Drill ausreichend für die meisten Audits |
| DSGVO | Vesana überwacht Geräte, keine Personen — Logs und Benutzerkonten können aber personenbezogene Daten enthalten, siehe Datenschutz |
| HIPAA | Cloud-AI ausschalten oder Anbieter mit BAA wählen |
| PCI | Vesana ist out-of-scope wenn nicht in Card-Data-Pfad — kann aber beim Monitoring helfen |