Audit-Log nach BSI ORP.4: Was wirklich gefordert ist
Wer BSI-Grundschutz im KMU umsetzt, stolpert spätestens bei ORP.4 + OPS.1.1.5 über Audit-Logging. Hier zeigen wir, was wirklich gefordert ist — mit konkreten Action-IDs, Aufbewahrungsfristen und Code-Beispielen aus ITscanner.
Was BSI ORP.4 / OPS.1.1.5 wirklich verlangen
Die beiden BSI-Bausteine sind in der Praxis verzahnt:
- ORP.4 — Identitäts- und Berechtigungsmanagement: legt fest, dass Authentifizierungs-Events protokolliert werden müssen — Logins, Logouts, Lockouts, Passwortwechsel.
- OPS.1.1.5 — Protokollierung: legt fest, wie generell mit Logs umzugehen ist — Aufbewahrung, Manipulationsschutz, SIEM-Anbindung.
Die wichtigsten Pflichtfelder pro Log-Eintrag:
- Zeitstempel — UTC, Millisekunden-Genauigkeit.
- Akteur — wer hat die Aktion ausgelöst? (User-ID oder Service-ID)
- Quelle — von wo? (IP-Adresse, Hostname, User-Agent)
- Kategorie — Auth, Daten, Konfig, …
- Aktion — was wurde gemacht? (Standardisierte Action-ID)
- Ziel — woran wurde es gemacht? (Ressource, Pfad, Eintrag-ID)
- Ergebnis — Erfolg oder Fehlschlag mit Grund
Welche Events müssen geloggt werden — vollständige Liste
| Kategorie | Action-ID (Beispiel) | Was geloggt wird | BSI-Baustein |
|---|---|---|---|
| Auth | auth.login | Erfolgreicher Login | ORP.4.A14 |
| Auth | auth.login_failed | Fehlgeschlagener Login mit Grund | ORP.4.A14 |
| Auth | auth.lockout | Account gesperrt nach N Fehlversuchen | ORP.4.A19 |
| Auth | auth.password_change | Passwort geändert | ORP.4.A19 |
| Auth | auth.mfa_enabled | MFA aktiviert / deaktiviert | ORP.4.A23 |
| Vault | vault.unlock | Credential-Vault geöffnet | ORP.4.A22 |
| Vault | vault.read | Geheimnis ausgelesen | ORP.4.A22 |
| Config | config.change | System-Einstellung geändert | OPS.1.1.5 |
| Scan | scan.completed | Inventur-Scan beendet | OPS.1.1.5 |
| CVE | vulnscan.acknowledge | CVE quittiert | APP.4.4 |
| DSGVO | dsgvo.export | Art-15-Auskunfts-Export | DSGVO Art. 5(2) |
| DSGVO | dsgvo.pseudonymize | Art-17-Pseudonymisierung | DSGVO Art. 17 |
| Drift | drift.detected | Konfig-Drift erkannt | OPS.1.1.3 |
| Drift | drift.acknowledge | Drift quittiert | OPS.1.1.3 |
| Backup | backup.created | DB-Backup erstellt | CON.3.A6 |
30+ Standard-Action-IDs decken ein typisches IT-Audit-Tool ab. ITscanner v2.09 implementiert genau diese Liste.
Aufbewahrungsfrist — wie lange?
BSI-Standard: mindestens 90 Tage, in regulierten Branchen oft länger:
- KMU-Standard-Absicherung: 90 Tage minimum, 365 Tage empfohlen.
- Krankenhäuser (KRITIS): 3 Jahre nach §8a BSIG.
- Banken / Versicherer: 10 Jahre nach §147 AO.
- Steuerrelevante Logs (HGB §257): 6-10 Jahre, je nach Buchhaltungs-Bezug.
ITscanner default = 365 Tage. Lässt sich pro Mandant konfigurieren.
Manipulationsschutz — Hash-Verkettung
OPS.1.1.5 verlangt, dass Logs „vor unbefugter Veränderung geschützt" werden. Das klingt abstrakt — praktisch bedeutet es: Hash-Verkettung (Hash-Chaining).
Wie es funktioniert:
// Jeder Log-Eintrag hat:
// - timestamp, user, source, action, target, result (die Daten)
// - prev_hash (SHA-256 des vorherigen Eintrags)
// - hash (SHA-256 dieser Daten + prev_hash)
func (s *AuditLog) Append(entry *Entry) error {
last, _ := s.GetLastEntry()
entry.PrevHash = last.Hash
data := entry.Serialize()
h := sha256.Sum256(append([]byte(entry.PrevHash), data...))
entry.Hash = hex.EncodeToString(h[:])
return s.DB.Insert(entry)
}
// Verifikation:
func (s *AuditLog) Verify() error {
entries := s.GetAll()
var prevHash string
for _, e := range entries {
data := e.Serialize()
expected := sha256.Sum256(append([]byte(prevHash), data...))
if hex.EncodeToString(expected[:]) != e.Hash {
return fmt.Errorf("manipulation detected at entry %d", e.ID)
}
prevHash = e.Hash
}
return nil
}
Wenn jemand einen Eintrag in der Mitte verändert, sind alle nachfolgenden Hashes ungültig. Manipulation ist sofort auffindbar.
SIEM-Forwarding nach Splunk/QRadar/Sentinel
Größere Setups wollen Logs an ein SIEM streamen. ITscanner unterstützt drei Formate:
1. Syslog (RFC 5424)
<134>1 2026-05-12T19:14:02Z itscanner ITSCAN 4832 - -
action=auth.login user=g.loeb src=192.168.5.42 result=ok mfa=totp
Klassiker für Linux-SIEMs, Splunk, Graylog. UDP/TCP/TLS.
2. CEF (Common Event Format)
CEF:0|Sat-iTec|ITscanner|2.09|auth.login|User Login|3|src=192.168.5.42 suser=g.loeb cs1Label=MFA cs1=totp
Standard für ArcSight, IBM QRadar, FortiSIEM.
3. JSON-Webhook
POST https://splunk.example.com/services/collector/event
{
"time": 1715533042.123,
"host": "itscanner.example.com",
"source": "itscanner",
"sourcetype": "_json",
"event": {
"action": "auth.login",
"user": "g.loeb",
"src": "192.168.5.42",
"result": "ok",
"mfa": "totp"
}
}
Optimal für Splunk HEC (HTTP Event Collector), Sentinel Data Connector, Datadog.
Was unterlassen werden sollte
1. Logs lokal halten ohne Backup
Wenn ein Angreifer Ihr System kompromittiert, kann er die lokalen Logs löschen. Live-Forward an SIEM oder mindestens stündliches Off-Site-Backup ist Pflicht.
2. Personenbezogene Daten im Log-Body
Nur Account-ID loggen, nicht den Klartext-Namen oder die E-Mail-Adresse. DSGVO Art. 5(1)(c) Datenminimierung. ITscanner separiert das automatisch.
3. Logs nicht regelmäßig auswerten
Audit-Logs zu sammeln und nie reinzuschauen ist sinnlos. Mindestens wöchentlich grep'en oder SIEM-Alerts auf auth.lockout, vault.read, config.change setzen.
ITscanner jetzt 7 Tage testen — Flat-Rate 49,50 €/Jahr
Vollständige Funktionen, keine Asset-Limits, keine Cloud, keine Kreditkarte. Aktivieren in 5 Minuten.
Kostenlos herunterladen Vergleich mit Docusnap & Lansweeper →