Revisionshistorie
| Version | Datum | Autor | Beschreibung |
| 1.0 | 2026-02-10 | Marcus Pauli | Erstversion: RBAC, TLS, Netzwerksicherheit, Haertung, Compliance |
Inhaltsverzeichnis
- Zugriffsschutz (RBAC)
- TLS/SSL-Konfiguration
- Netzwerksicherheit
- Haertung des Cribl-Servers
- Geheimnis-Management
- Audit-Logging
- Schwachstellen-Management und Update-Prozess
- Compliance-relevante Einstellungen
1. Zugriffsschutz (RBAC)
1.1 Rollenkonzept
Cribl Stream verfuegt ueber ein rollenbasiertes Zugriffsmodell (Role-Based Access Control, RBAC).
Im IceDataEmphasise-PoC werden folgende Rollen definiert:
| Rolle | Beschreibung | Berechtigungen | Zugewiesene Personen |
| admin |
Vollzugriff auf alle Cribl-Funktionen |
Konfiguration, Benutzer-Verwaltung, System-Einstellungen, API-Zugriff |
Cribl-Administrator (max. 2 Personen) |
| editor |
Konfigurationsaenderungen an Pipelines, Routes, Sources |
Pipelines erstellen/aendern, Routes konfigurieren, Preview nutzen |
Senior-Operatoren |
| reader |
Nur-Lese-Zugriff auf Konfiguration und Monitoring |
Dashboard einsehen, Metriken lesen, Log-Viewer nutzen |
IT-Betrieb, Security-Analysten |
| api_only |
Programmatischer Zugriff via API |
Nur API-Endpunkte (kein UI-Zugang) |
Automatisierungsskripte, Monitoring-Tools |
1.2 Lokale Benutzer konfigurieren
Im PoC werden lokale Benutzer verwendet (keine LDAP/SAML-Integration):
# Cribl Stream UI: Settings → Access Management → Users
# Neuen Benutzer anlegen:
# - Username: operator1
# - Role: reader
# - Passwort: Mindestens 12 Zeichen, Gross-/Kleinbuchstaben, Zahl, Sonderzeichen
Passwort-Richtlinie (BAIT II.4):
- Mindestlaenge: 12 Zeichen
- Komplexitaet: Gross-/Kleinbuchstaben, Ziffern, Sonderzeichen
- Maximale Gueltigkeit: 90 Tage
- Passworthistorie: Letzte 10 Passwoerter gesperrt
- Kontosperre: Nach 5 fehlgeschlagenen Versuchen fuer 30 Minuten
1.3 Mindestprivilegien-Prinzip (Least Privilege)
- Jeder Benutzer erhaelt die minimale Rolle, die fuer seine Aufgabe erforderlich ist
- Die
admin-Rolle ist auf maximal 2 namentlich benannte Personen beschraenkt
- Fuer den taeglichen Betrieb wird die Rolle
reader verwendet
- Konfigurationsaenderungen erfordern die Rolle
editor und werden im Audit-Log protokolliert
- Service-Accounts (
api_only) sind an spezifische Automatisierungszwecke gebunden
1.4 Berechtigungspruefung
- Quartalsweise Review aller Cribl-Benutzer und deren Rollen
- Deaktivierung nicht mehr benoetigter Konten innerhalb von 24 Stunden
- Dokumentation der Berechtigungsvergabe im IT-Service-Management-System
- Vier-Augen-Prinzip bei Vergabe der
admin-Rolle
2. TLS/SSL-Konfiguration
2.1 Uebersicht der TLS-Endpunkte
| Endpunkt | Port | TLS-Status (PoC) | TLS-Status (Produktion) | Beschreibung |
| Cribl Stream UI | 9000 | Aktiviert (selbstsigniert) | Aktiviert (CA-signiert) | Web-Verwaltungsoberflaeche |
| Cribl API | 9000 | Aktiviert (selbstsigniert) | Aktiviert (CA-signiert) | REST-API fuer Automatisierung |
| HEC Destination | 8088 | Aktiviert | Aktiviert (CA-signiert) | Ausgehende Verbindung zu Splunk HEC |
| S2S Destination | 9997 | Deaktiviert (VPN) | Aktiviert | Ausgehende Verbindung zu Splunk S2S |
| Edge → Stream | 9420 | Aktiviert | Aktiviert (mTLS) | Kommunikation Edge-Nodes zu Stream |
2.2 TLS-Konfiguration fuer Cribl Stream UI
# Zertifikate hinterlegen unter /opt/cribl/certs/
/opt/cribl/certs/
server.crt # Server-Zertifikat (PEM)
server.key # Privater Schluessel (PEM, unverschluesselt)
ca-bundle.crt # CA-Zertifikatskette (PEM)
# In Cribl UI: Settings → Global Settings → API Server
# TLS Settings:
# Certificate: /opt/cribl/certs/server.crt
# Private Key: /opt/cribl/certs/server.key
# CA Certificate: /opt/cribl/certs/ca-bundle.crt
# Minimum TLS Version: TLSv1.2
2.3 TLS-Anforderungen
| Parameter | Anforderung | Begruendung |
| Minimum TLS-Version | TLS 1.2 | TLS 1.0 und 1.1 gelten als unsicher (BSI TR-02102-2) |
| Empfohlene TLS-Version | TLS 1.3 | Aktuelle Best Practice, bessere Performance |
| Cipher Suites | ECDHE + AES-GCM | Forward Secrecy, authentifizierte Verschluesselung |
| Schluessellaenge (RSA) | Mindestens 2048 Bit | BSI-Empfehlung |
| Schluessellaenge (ECDSA) | Mindestens 256 Bit (P-256) | BSI-Empfehlung |
| Zertifikatslaufzeit | Maximal 1 Jahr | Branchenstandard, CA/Browser Forum |
2.4 Zertifikats-Erneuerung
# Zertifikatslaufzeit pruefen
openssl x509 -enddate -noout -in /opt/cribl/certs/server.crt
# Warnung: 30 Tage vor Ablauf muss ein neues Zertifikat beantragt werden
# Automatisierung via Cron:
0 8 * * 1 openssl x509 -checkend 2592000 -noout -in /opt/cribl/certs/server.crt || \
echo "WARNUNG: Cribl-Zertifikat laeuft in weniger als 30 Tagen ab" | \
mail -s "Cribl TLS Certificate Expiry Warning" admin@example.de
3. Netzwerksicherheit
3.1 Firewall-Regeln
Die folgenden Ports muessen auf dem Cribl-Server geoeffnet sein. Alle anderen Ports
werden durch die Host-Firewall (iptables/nftables) blockiert.
| Port | Protokoll | Richtung | Quelle/Ziel | Beschreibung |
| 9000 | TCP | Eingehend | Admin-Netzwerk | Cribl Stream UI + API |
| 9420 | TCP | Eingehend | Cribl Edge Nodes | Edge-to-Stream Kommunikation |
| 514 | TCP/UDP | Eingehend | Quell-Server | Syslog-Empfang (optional) |
| 4200 | TCP | Eingehend | Cribl Edge Nodes | Cribl Edge Management |
| 8088 | TCP | Ausgehend | Splunk-Indexer | HEC-Zustellung |
| 9997 | TCP | Ausgehend | Splunk-Indexer | S2S-Zustellung |
| 443 | TCP | Ausgehend | cdn.cribl.io | Cribl-Updates und Lizenzpruefung |
| 41641 | UDP | Ein-/Ausgehend | Tailscale DERP | Tailscale VPN WireGuard |
3.2 iptables-Beispielkonfiguration
# Grundlegende Firewall-Regeln fuer den Cribl-Server
# Loopback erlauben
iptables -A INPUT -i lo -j ACCEPT
# Bestehende Verbindungen erlauben
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH (nur aus Admin-Netzwerk)
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT
# Cribl Stream UI (nur aus Admin-Netzwerk)
iptables -A INPUT -p tcp --dport 9000 -s 10.0.0.0/24 -j ACCEPT
# Cribl Edge Kommunikation (Tailscale-Netzwerk)
iptables -A INPUT -p tcp --dport 9420 -s 100.64.0.0/10 -j ACCEPT
iptables -A INPUT -p tcp --dport 4200 -s 100.64.0.0/10 -j ACCEPT
# Tailscale WireGuard
iptables -A INPUT -p udp --dport 41641 -j ACCEPT
# Alles andere verwerfen
iptables -A INPUT -j DROP
3.3 Tailscale-VPN
Die Kommunikation zwischen Cribl Stream, den Edge Nodes und dem Splunk-Indexer erfolgt ueber
ein Tailscale-VPN (WireGuard-basiert). Dies bietet:
- Ende-zu-Ende-Verschluesselung: WireGuard mit Curve25519, ChaCha20-Poly1305
- Zero-Trust-Netzwerk: Jeder Node authentifiziert sich individuell
- ACLs: Tailscale Access Control Lists beschraenken den Zugriff zwischen Nodes
- NAT-Traversal: Kein Portforwarding oder oeffentliche IP erforderlich
# Tailscale-Status pruefen
tailscale status
# ACL-Konfiguration (Beispiel in tailscale admin console):
{
"acls": [
{"action": "accept", "src": ["tag:cribl-edge"], "dst": ["tag:cribl-stream:9420"]},
{"action": "accept", "src": ["tag:cribl-stream"], "dst": ["tag:splunk:8088,9997"]},
{"action": "accept", "src": ["tag:admin"], "dst": ["tag:cribl-stream:9000,22"]}
]
}
Hinweis: Im PoC wird Tailscale als alleinige Netzwerkabsicherung fuer die S2S-Verbindung
verwendet (TLS auf S2S deaktiviert). Fuer die Produktivstellung muss TLS zusaetzlich auf S2S-Ebene
aktiviert werden (Defense in Depth).
4. Haertung des Cribl-Servers
4.1 CIS-Benchmark-Referenz
Die Haertung des Cribl-Servers orientiert sich am CIS Benchmark for Debian/Ubuntu Linux.
Die folgenden Massnahmen sind fuer den Cribl-Server relevant:
| CIS-Referenz | Massnahme | Status | Beschreibung |
| 1.1.1 | Separate Partitionen | Umgesetzt | /opt auf separater Partition (Cribl-Daten) |
| 1.3.1 | AIDE installiert | Geplant | Integritaetspruefung fuer Konfigurationsdateien |
| 1.4.1 | Bootloader-Passwort | Umgesetzt | GRUB-Passwort gesetzt |
| 3.4.1 | Host-Firewall aktiv | Umgesetzt | iptables-Regeln (siehe oben) |
| 4.1.1 | Audit-Daemon (auditd) | Umgesetzt | System-Audit-Logs aktiviert |
| 4.2.1 | Syslog konfiguriert | Umgesetzt | rsyslog leitet an Cribl Edge weiter (Selbstmonitoring) |
| 5.2.1 | SSH-Haertung | Umgesetzt | Key-Only-Auth, Root-Login deaktiviert, Protocol 2 |
| 5.3.1 | Passwort-Richtlinien | Umgesetzt | pam_pwquality konfiguriert |
| 5.4.1 | Inaktive Konten sperren | Umgesetzt | Automatische Sperre nach 90 Tagen Inaktivitaet |
| 6.1.1 | Dateiberechtigungen | Umgesetzt | Cribl-Dateien: cribl:cribl, 0750/0640 |
4.2 Betriebssystem-Haertung
# SSH-Haertung (/etc/ssh/sshd_config)
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers mpauli cribl-admin
# Unnoetige Dienste deaktivieren
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
# Dateiberechtigungen fuer Cribl
sudo chmod 0750 /opt/cribl/
sudo chmod 0640 /opt/cribl/local/cribl/auth/*.json
sudo chown -R cribl:cribl /opt/cribl/
4.3 Cribl-spezifische Haertung
- Dedizierter Service-Account: Cribl laeuft unter dem Benutzer
cribl (nicht root)
- Kein Shell-Login: Der
cribl-Benutzer hat /usr/sbin/nologin als Shell
- API-Rate-Limiting: Maximal 100 Anfragen pro Minute pro IP
- Session-Timeout: UI-Sitzungen laufen nach 30 Minuten Inaktivitaet ab
- Git-Integration deaktiviert: Im PoC wird die Konfiguration nicht ueber das Cribl-interne Git verwaltet (externes Repository wird verwendet)
5. Geheimnis-Management
5.1 Grundprinzip: Keine Secrets in Git
Strikte Regel: Sensible Daten (Tokens, Passwoerter, Zertifikats-Schluessel) duerfen
niemals in das Git-Repository eingecheckt werden. Verstoesse muessen als
Sicherheitsvorfall behandelt werden.
5.2 .env-Konzept
Alle sensiblen Konfigurationswerte werden ueber Umgebungsvariablen aus der .env-Datei
bezogen. Diese Datei ist in .gitignore eingetragen.
# .env (Beispielstruktur - nicht die echten Werte!)
SPLUNK_HOST=splunk.example.internal
SPLUNK_HEC_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SPLUNK_HEC_PORT=8088
SPLUNK_S2S_PORT=9997
CRIBL_ADMIN_PASSWORD=CHANGE_ME_ON_FIRST_LOGIN
TAILSCALE_AUTH_KEY=tskey-auth-xxxxx
5.3 Secrets-Schutz auf Dateisystemebene
# Dateiberechtigungen fuer .env
chmod 0600 /home/mpauli/IceDataEmphasise/.env
chown root:root /home/mpauli/IceDataEmphasise/.env
# Dateiberechtigungen fuer TLS-Schluessel
chmod 0600 /opt/cribl/certs/server.key
chown cribl:cribl /opt/cribl/certs/server.key
5.4 .gitignore-Eintraege
# Sensible Dateien (in .gitignore)
.env
.env.*
*.key
*.pem
*.p12
credentials/
secrets/
5.5 Rotation von Geheimnissen
| Geheimnis | Rotationsintervall | Verantwortlich | Prozedur |
| HEC-Token | Quartalsweise | Splunk-Admin | In Splunk neues Token erstellen, in .env aktualisieren, Cribl neu starten |
| Cribl-Admin-Passwort | 90 Tage | Cribl-Admin | In Cribl UI aendern |
| TLS-Zertifikate | Jaehrlich | PKI-Team | Neues Zertifikat ausstellen, auf Server kopieren, Cribl neu starten |
| Tailscale Auth Key | Bei Erneuerung | Netzwerk-Team | Neuen Key in Tailscale Admin erstellen, auf Nodes verteilen |
5.6 Notfall: Secret in Git eingecheckt
- Sofort: Secret rotieren (neues Token/Passwort generieren)
- Git-Historie bereinigen:
# Mit git-filter-repo (empfohlen)
git filter-repo --path .env --invert-paths
git push --force-with-lease origin main
- Vorfall dokumentieren im Incident-Management-System
- Review: .gitignore pruefen und Pre-Commit-Hooks einrichten
6. Audit-Logging
6.1 Cribl-internes Audit-Log
Cribl Stream protokolliert alle administrativen Aktionen im Audit-Log unter
/opt/cribl/log/audit.log. Folgende Ereignisse werden erfasst:
| Ereignis | Beschreibung | Erfasste Details |
| Login | Erfolgreicher/fehlgeschlagener UI-Login | Benutzername, Quell-IP, Zeitstempel |
| Config Change | Aenderung an Pipelines, Routes, Sources, Destinations | Benutzername, geaenderte Ressource, Vorher/Nachher-Diff |
| User Management | Benutzer erstellt, geaendert, geloescht | Admin-Benutzername, betroffener Benutzer, Aenderung |
| System Actions | Restart, Commit, Deploy | Benutzername, Aktion, Zeitstempel |
| API Access | API-Aufrufe (authentifiziert) | API-Endpunkt, Methode, Quell-IP |
6.2 Audit-Log an Splunk weiterleiten
Zur zentralen Auswertung und Langzeitaufbewahrung wird das Audit-Log an Splunk weitergeleitet.
Dies erfolgt ueber eine dedizierte File-Monitor-Quelle in Cribl Edge:
# Source-Konfiguration fuer Audit-Log
{
"id": "cribl_audit",
"type": "file_monitor",
"filename": "/opt/cribl/log/audit.log",
"sourcetype": "cribl:audit",
"index": "idx_security"
}
6.3 Aufbewahrung
- Lokal: 90 Tage auf dem Cribl-Server (Rotation durch Cribl)
- Splunk: 365 Tage im
idx_security-Index
- Archiv: Nach Ablauf der Splunk-Aufbewahrung in Langzeitarchiv (gemaess Aufbewahrungspflichten)
Compliance: Die zentrale Erfassung aller administrativen Aktionen in einem
manipulationssicheren System (Splunk-Index mit beschraenktem Loeschzugriff) erfuellt die
Anforderungen der MaRisk AT 7.2 Nr. 4 und BAIT II.7 an die Protokollierung
sicherheitsrelevanter Ereignisse.
7. Schwachstellen-Management und Update-Prozess
7.1 Informationsquellen
| Quelle | URL | Pruefungsintervall |
| Cribl Release Notes | docs.cribl.io/stream/release-notes | Woechentlich |
| Cribl Security Advisories | cribl.io/security | Woechentlich |
| Debian Security Tracker | security-tracker.debian.org | Taeglich (automatisch) |
| CVE-Datenbank | cve.mitre.org | Bei Bedarf |
| BSI-Warnungen | bsi.bund.de/cert | Taeglich |
7.2 Patch-Klassifizierung
| Klassifikation | Beschreibung | Zeitrahmen fuer Installation |
| Kritisch | Remote Code Execution, aktiv ausgenutzte Schwachstelle | Innerhalb von 72 Stunden |
| Hoch | Privilege Escalation, Umgehung von Authentifizierung | Innerhalb von 7 Tagen |
| Mittel | Information Disclosure, Denial of Service | Innerhalb von 30 Tagen |
| Niedrig | Kosmetisch, geringes Risiko | Naechstes Wartungsfenster |
7.3 Cribl-Update-Prozedur
- Release Notes und Changelog pruefen
- Change-Antrag stellen (Standard-Change fuer Minor Updates)
- Backup erstellen (siehe Betriebshandbuch, Abschnitt 6)
- Update im Wartungsfenster durchfuehren:
# Cribl Stream Update
sudo systemctl stop cribl
cd /opt/cribl
sudo curl -Lo cribl-update.tar.gz "https://cdn.cribl.io/dl/latest-x64"
sudo tar xzf cribl-update.tar.gz --strip-components=1
sudo chown -R cribl:cribl /opt/cribl/
sudo systemctl start cribl
# Verifikation
curl -s http://localhost:9000/api/v1/system/info | jq '.version'
- Funktionspruefung (Checkliste aus Betriebshandbuch)
- Change-Ticket schliessen
7.4 Betriebssystem-Updates
# Woechentliche Sicherheitsupdates (automatisiert via unattended-upgrades)
sudo apt update && sudo apt upgrade -y --only-upgrade
# Kernel-Updates erfordern Neustart und Wartungsfenster
sudo apt install linux-image-amd64
# Neustart im naechsten Wartungsfenster planen
8. Compliance-relevante Einstellungen
8.1 Regulatorischer Rahmen
Als Proof of Concept fuer eine regulierte deutsche Bank unterliegt das System den folgenden
regulatorischen Anforderungen:
| Regelwerk | Herausgeber | Relevante Abschnitte | Bezug zu IceDataEmphasise |
| MaRisk |
BaFin |
AT 7.2 (IT-Betrieb), AT 4.3.1 (Aufgabentrennung) |
Betriebsprozesse, RBAC, Dokumentation |
| BAIT |
BaFin |
II.4 (Berechtigungsmanagement), II.7 (Protokollierung), II.9 (Outsourcing) |
Zugriffsschutz, Audit-Logging, Vertragsmanagement Cribl |
| DORA |
EU |
Art. 6 (IKT-Risikomanagement), Art. 9 (Schutz und Praevention), Art. 12 (Backup) |
Risikobewertung, TLS/Verschluesselung, Backup-Konzept |
| BSI IT-Grundschutz |
BSI |
OPS.1.1.3 (Patch-Management), NET.1.1 (Netzarchitektur) |
Update-Prozess, Netzwerksegmentierung |
8.2 Compliance-Mapping
| Anforderung | Regelwerk | Umsetzung im PoC | Nachweis |
| Zugriffsschutz nach Mindestprivilegien |
MaRisk AT 4.3.1, BAIT II.4 |
RBAC mit 4 Rollen, Vier-Augen-Prinzip fuer Admin |
Benutzer-Konfiguration, Audit-Log |
| Verschluesselung in Transit |
DORA Art. 9, BSI TR-02102-2 |
TLS 1.2+ fuer UI/API/HEC, WireGuard fuer VPN |
TLS-Konfiguration, Tailscale-ACLs |
| Protokollierung admin. Aktionen |
BAIT II.7, MaRisk AT 7.2 |
Cribl Audit-Log, Weiterleitung an Splunk (365 Tage) |
Audit-Log in idx_security |
| Datenverlustfreiheit |
MaRisk AT 7.2 |
Persistent Queues auf beiden Destinations |
PQ-Konfiguration, Monitoring-Metriken |
| Backup-Konzept |
DORA Art. 12 |
Taegliches Backup der Konfiguration, dokumentierte Restore-Prozedur |
Backup-Skript, Restore-Dokumentation |
| Patch-Management |
BSI OPS.1.1.3 |
Woechentliche Pruefung, Patch-Klassifizierung, definierte Zeitrahmen |
Update-Protokoll, Change-Tickets |
| Aufgabentrennung |
MaRisk AT 4.3.1 |
Security-Daten via S2S, Anwendungsdaten via HEC (getrennte Kanaele) |
Route-Konfiguration, Index-Mapping |
| Geheimnis-Management |
BAIT II.4 |
.env-Konzept, keine Secrets in Git, Rotationsplaene |
.gitignore, Dateiberechtigungen |
8.3 Audit-Vorbereitung
Fuer eine Audit-Pruefung (intern oder extern) sollten folgende Nachweise bereitgestellt werden koennen:
- Aktuelle Benutzerliste mit Rollenzuordnung (Cribl + Splunk)
- Nachweis der letzten Berechtigungspruefung (quartalsweise)
- TLS-Zertifikate mit Gueltigkeitsdaten
- Firewall-Regelwerk (aktuell und dokumentiert)
- Audit-Log-Auszuege der letzten 90 Tage
- Backup-Protokolle (Nachweis der Durchfuehrung)
- Patch-Status: Installierte Versionen von Cribl, Betriebssystem, Abhaengigkeiten
- Change-Management-Tickets fuer alle Konfigurationsaenderungen
- Dokumentation der Datenfluesse (Quelle → Pipeline → Destination → Index)
- Ergebnis des letzten Restore-Tests
- Eskalationsmatrix und Kontaktliste (aktuell)
8.4 DORA-spezifische Anforderungen
DORA (Digital Operational Resilience Act): Seit Januar 2025 verbindlich fuer alle
EU-Finanzinstitute. Die folgenden DORA-Anforderungen sind fuer IceDataEmphasise relevant:
| DORA-Artikel | Anforderung | Umsetzung |
| Art. 6 Abs. 1 |
Umfassendes IKT-Risikomanagement-Framework |
Risikobewertung des Cribl-Deployments, Dokumentation der Abhaengigkeiten |
| Art. 9 Abs. 2 |
Verschluesselung ruhender und uebertragener Daten |
TLS fuer Transport, PQ-Daten auf verschluesseltem Dateisystem (LUKS empfohlen) |
| Art. 10 |
Erkennung anomaler Aktivitaeten |
MITRE ATT&CK-Tagging in pipeline_security_auth, Splunk-Alerts |
| Art. 12 |
Backup-Richtlinien und Wiederherstellungsverfahren |
Taegliches Backup, dokumentierte Restore-Prozedur, Restore-Tests |
| Art. 28 |
Management von IKT-Drittanbieter-Risiken |
Bewertung von Cribl als IKT-Dienstleister, Vertragsgestaltung |