# MDM Server — Security ## Was muss geheim bleiben | Secret | Wo es liegt | Permissions | Wer hat Zugriff | |-------------------------------------|--------------------------------------|-------------|---------------------| | PostgreSQL-Passwort | `/root/.nanomdm_db_pass` | 600 (root) | Chahine, Olfa | | MDM CA Private Key | `/opt/nanomdm/certs/ca.key` | 600 (root) | Chahine, Olfa | | Apple Push Private Key | `/opt/nanomdm/certs/push.key` | 600 (root) | Chahine, Olfa | | nanomdm .env (enthält DB-Pass) | `/opt/nanomdm/.env` | 600 (root) | Chahine, Olfa | | MDM-Admin-API-Key (nach Phase E) | Wird nach Phase E generiert | - | Chahine, Olfa, Ina* | | Ina-Notfall-Credentials | Per Email (Phase E) + evt. Kopie | - | Ina | (*) Ina bekommt nur den API-Key, keinen SSH-Zugriff. ## Was NICHT geheim sein muss - `push.csr` — CSR ist öffentlich (geht ans Apple-Portal) - `ca.crt` — CA-Zertifikat ist öffentlich (wird ans Gerät übertragen) - nginx-Config, docker-compose.yml (ohne Passwörter) ## Threat-Modelle ### Server-Kompromittierung Was der Angreifer bekommt: - DB-Pass → Zugriff auf nanomdm-DB (Device-Liste, Enrollment-Daten) - push.key → Kann eigene MDM-Befehle an Geräte senden (mit Apple-Cert) - ca.key → Kann eigene Device-Identity-Certs ausstellen Was zu tun ist: 1. Apple Push Cert sofort auf identity.apple.com revoken 2. Neuen VPS aufsetzen (Phase A-D wiederholen) 3. Geräte re-enrollen mit neuem Push-Cert + neuem CA-Cert 4. Neues DB-Passwort aus `/root/.nanomdm_db_pass` (von Chahine neu generiert) ### Device-Verlust (gestohlen) - MDM-Remote-Wipe triggern: löscht alle Daten auf Gerät - Apple-ID-basiertes "Find My" als zusätzliche Schicht (unabhängig vom MDM) - MDM-Profil ist nach Factory-Reset weg → Gerät ist dann nicht mehr enrollt ### Angreifer hat Zugriff auf Ina's Email-Account Ina's Notfall-Credentials (Phase E) geben nur Zugriff auf nanomdm-API um das Profil zu entfernen, keinen Server-SSH-Zugriff. Worst-case: Angreifer entfernt MDM-Profil vom Gerät. Das MDM kann dann re-enrollen wenn Chahine zustimmt. ### Abgelaufenes Apple Push Cert Wenn push.pem abläuft (nach 1 Jahr): nanomdm kann keine Befehle mehr ans Gerät schicken. Gerät ist aber noch enrollt (Profil ist drauf). Nach Cert-Renewal (gleicher push.key) funktioniert Kommunikation wieder. ## Geheimhaltungs-Regeln 1. `push.key`, `ca.key`, DB-Passwort werden NIEMALS in Git committed 2. `/opt/nanomdm/.env` hat chmod 600 — Änderung würde nanomdm-Container-Restart erfordern 3. Keine Passwörter in Docker-Logs (env-vars sind als values gesetzt, nicht als --env in command-line args) 4. SSH-Zugriff nur via Key-Auth (kein Password-SSH auf dem Server) ## Audit-Trail Relevante Events zum Dokumentieren in `/opt/nanomdm/SETUP-LOG.md` auf dem Server: - Wann wurde welcher Container deployed - Wann wurde Apple Push Cert erneuert (Datum + Apple-ID die es ausgestellt hat) - Wann wurde Enrollment durchgeführt (Gerät, Datum) - Wann wurde Profil entfernt (wer hat entfernt, warum) Format: `[DATUM] [WER] [WAS]` — plain text, kein JSON.