# Proxmox Audit Logging: Transparenz & Beweislast im RZ
TL;DR / Management Summary Wer hat wann welche VM gelöscht? Das ist die Kernfrage bei jedem Security-Audit. Proxmox VE protokolliert jede administrative Aktion im Task-Log. Ein Senior Admin verlässt sich nicht nur auf die lokale Ansicht, sondern zentralisiert diese Logs via Remote Syslog (Artikel 584) in einem SIEM. Ziel ist die Erfüllung von Compliance-Standards (ISO 27001, DSGVO) durch einen lückenlosen Nachweis über alle Änderungen an der virtuellen Infrastruktur.
# 1. Die Quellen der Wahrheit
Wo Proxmox schreibt.
- Task Log:
/var/log/pve/tasks/. Jede GUI-Aktion (Start, Stop, Config Change) wird hier mit User-ID und Zeitstempel gespeichert. - Cluster Log (pmxcfs): Synchronisiert den Cluster-Status und Änderungen an der Konfiguration in Echtzeit über alle Knoten.
- API Log:
/var/log/pveproxy/access.log. Protokolliert jeden HTTPS-Request an den Management-Dienst.
# 2. Audit-Logs in der Web-GUI
Schnelle forensische Analyse.
Gehen Sie zu Datacenter -> Tasks.
- Search: Filtern Sie nach “User” oder “Type” (z.B.
qmdestroy). - Double-Click: Öffnet das detaillierte Log der Aktion. Hier sehen Sie oft die Ursache für fehlgeschlagene Tasks (z.B. Backup-Abbruch).
# 3. Deep Dive: Compliance-Anforderungen (ISO 27001)
Vorgaben rechtssicher erfüllen.
Um konform zu internationalen Standards zu sein, müssen Sie:
- Revisionssicherheit: Logs dürfen nicht lokal vom Admin gelöscht werden können.
- Lösung: Nutzen Sie den
Metrics Server(Artikel 697) oder einen externen Syslog-Collector, der Logs schreibgeschützt archiviert (WORM-Prinzip). - Retention: Bewahren Sie Audit-Logs für mindestens 6-12 Monate auf.
# 4. Day-2 Operations: Anomalie-Erkennung via API
Automatisiertes Wachtum.
Nutzen Sie ein Script (Python/Bash), das regelmäßig das Task-Log via API (Artikel 699) scannt.
- Trigger: “Wenn mehr als 5 VMs innerhalb von 10 Minuten gelöscht werden -> CRITICAL ALERT”.
- Muster: Erkennen Sie unübliche Login-Zeiten von Admin-Accounts.
# 5. Troubleshooting & “War Stories”
Wenn die Spuren verwischt sind.
# Top 3 Herausforderungen
-
Symptom: Das Task-Log ist leer oder lückenhaft.
- Ursache: Die Systemplatte ist voll (Partition
/var/log). - Lösung: Logs rotieren oder Platte vergrößern.
- Ursache: Die Systemplatte ist voll (Partition
-
Symptom: “root” taucht überall als Urheber auf.
- Grund: Das Team nutzt einen geteilten Account statt individueller User (Artikel 709).
- Lösung: Sofortige Einführung von Named-Users und Deaktivierung des geteilten Passworts.
-
Symptom: Logs sind kryptisch (Hex-Codes).
- Fix: Nutzen Sie das Tool
pvesh, um API-Logs in menschenlesbares JSON zu konvertieren.
- Fix: Nutzen Sie das Tool
# “War Story”: Der “Rache-Admin”
Ein Administrator verließ die Firma im Streit. Bevor sein Account gesperrt wurde, löschte er nachts 10 produktive VMs. Die Entdeckung: Durch die zentrale Log-Aggregation sahen wir am Morgen exakt, von welcher IP (Home-Office) der Befehl kam und welcher Account genutzt wurde. Das Ergebnis: Die Beweislast war so erdrückend, dass die Firma rechtliche Schritte einleiten konnte. Ohne das Audit-Log wäre es unmöglich gewesen, zwischen einem technischen Fehler und böswilliger Absicht zu unterscheiden. Lehre: Audit-Logs schützen nicht vor dem Fehler, aber sie klären die Verantwortlichkeit.
# 6. Monitoring & Reporting
Regelmäßige Berichte.
# Der wöchentliche Audit-Report
Lassen Sie sich eine Zusammenfassung aller “Kritischen Tasks” schicken:
qmdestroy(VM gelöscht).pveum user modify(Rechte geändert).node reboot(Host neustart).
# 7. Fazit & Empfehlung
Ein lückenloses Audit-Log ist Ihr wichtigster Schutzschild bei internen Untersuchungen.
- Empfehlung: Aktivieren Sie das Remote Syslog für alle Cluster-Knoten.
- Wichtig: Überprüfen Sie monatlich stichprobenartig das Log: “Wurde diese Aktion wirklich von mir ausgeführt?”.
# Anhang: Cheatsheet (Log-Tools)
| Aufgabe | Befehl / Pfad |
|---|---|
| Live Task Log | tail -f /var/log/pve/tasks/index |
| Suche nach User | grep "user@pve" /var/log/pve/tasks/* |
| Letzte 100 Aktionen | pvesh get /cluster/tasks --limit 100 |
| Syslog Search | journalctl -t pvedaemon |