Where to Log: Zentrales Logging ohne teure SIEM-Lizenz
Einleitung
Logs auf einzelnen Endpoints sind so nützlich wie ein Tagebuch im brennenden Haus. Bei einem Incident sind die Endpoints oft schon kompromittiert, die lokalen Logs gelöscht oder die Maschine ist vom Netz. Zentrales Logging ist deshalb keine Komfortfunktion, sondern Basis für Detection, Forensik und Compliance. Dieser Artikel zeigt dir, wie du das ohne fünfstelliges Splunk-Budget umsetzt.
Warum das Thema wichtig ist
Drei Dinge können nur zentrales Logging leisten: Korrelation (Auth-Versuch von Host A → Lateral Move auf Host B → Datenabfluss von Host C), Beweissicherung (Logs sind nach Kompromittierung des Endpoints noch greifbar) und Skalierung (du willst nicht 200 Endpoints einzeln durchwühlen). NIS2, BSI IT-Grundschutz und ISO 27001 verlangen alle implizit oder explizit zentralisierte, schreibgeschützte Log-Speicherung. Und auch ohne Compliance-Druck: ein zentraler Log-Speicher mit 90 Tagen Retention ist im Incident-Fall mehr wert als jedes EDR-Tool.
Die Optionen im Überblick
| Stack | Stärke | Aufwand | Ressourcenbedarf |
|---|---|---|---|
| Wazuh (ELK + HIDS + SIEM) | All-in-one, MITRE-Integration | mittel | 16 GB RAM, 200 GB Disk Start |
| Graylog Open | UI / Dashboards / Alerting | mittel | 8 GB RAM, 100 GB Start |
| ELK / OpenSearch | flexibel, große Community | hoch | 16 GB RAM+, vielen Tuning-Bedarf |
| Loki + Grafana | leichtgewichtig, log-as-stream | niedrig | 4 GB RAM, sehr platzsparend |
| Rsyslog + SQLite/PostgreSQL + grep | minimal, ohne UI | sehr niedrig | <2 GB RAM |
Empfehlung für KMU: Wazuh, wenn du Detection mit Logs verbinden willst (siehe Wazuh-Artikel). Graylog oder Loki+Grafana, wenn du nur Logs sammeln und durchsuchen willst, ohne den vollen SIEM-Overhead.
Architektur: Was wohin?
Eine vernünftige Mindest-Architektur für ein KMU:
┌─────────────────────────────┐
│ Endpoints / Server / FW │
└──────────────┬──────────────┘
│ Syslog/Beats/HEC
▼
┌─────────────────────────────┐
│ Log-Forwarder (zentral) │ ← rsyslog / Vector / Filebeat
│ - Parsing / Enrichment │
│ - Routing │
└──────────────┬──────────────┘
│
┌────────────┴───────────┐
▼ ▼
┌─────────────────┐ ┌────────────────┐
│ Hot-Storage │ │ Cold-Storage │
│ (durchsuchbar, │ │ (S3/Object, │
│ 30 Tage) │ │ 90+ Tage) │
└─────────────────┘ └────────────────┘
│
▼
┌─────────────────┐
│ Detection / │
│ Dashboards / │
│ Alerting │
└─────────────────┘
Der Forwarder ist die wichtigste Komponente: er normalisiert Formate (Syslog ↔ JSON ↔ CEF), reichert IPs mit Geo/ASN an, und routet nach Pflicht (Auth-Logs → SIEM-Hot-Store, Application-Debug → Cold-Store). Vector und Fluent-Bit sind hier Open-Source-Standard.
Welche Logs? (Priorisierung)
Nicht alles muss zentralisiert werden. Priorisiere nach Detection-Wert:
Pflicht (täglich auswerten):
- Windows Security-Eventlog (Event 4624, 4625, 4672, 4688)
- Windows Sysmon (1, 3, 7, 8, 11, 13, 17/18, 22)
- Linux: auth.log, audit.log, syslog
- Firewall: dropped + allowed (mind. den deny-Stream)
- DNS-Queries (siehe DNS-Logging-Artikel)
- Authentication-Quellen: AD/LDAP, Entra ID Sign-Ins, VPN-Login
- Web-Server-Access-Logs für extern erreichbare Apps
Sollte (Korrelation / Analyse):
- Endpoint-Process-Logs (Sysmon Event 1) – sehr verbosig, aber Gold im IR-Fall
- Anwendungs-Logs (E-Mail-Server, Active-Directory)
- EDR-Alerts (sofern vorhanden)
- Cloud-Audit-Trails (Azure Activity Log, AWS CloudTrail, GitHub Audit Log)
Optional:
- Detail-Debug-Logs von Anwendungen (eher in Cold-Store)
- Host-Performance-Metriken (gehören eigentlich nach Prometheus, nicht ins Log)
Forwarder: Beispiele
Windows: NXLog Community Edition
Robuste Windows-Eventlog-Forwarder-Konfiguration. Beispiel nxlog.conf für Security/Sysmon-Forward an Syslog-TCP:
<Input EventLog>
Module im_msvistalog
Query <QueryList>\
<Query Id="0">\
<Select Path="Security">*</Select>\
<Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>\
<Select Path="System">*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
</Query>\
</QueryList>
</Input>
<Output Syslog>
Module om_tcp
Host siem.intern.local
Port 514
Exec to_syslog_ietf();
</Output>
<Route 1>
Path EventLog => Syslog
</Route>
Alternativ: Winlogbeat (Elastic), Wazuh-Agent (für Wazuh-Stack), Vector (für Loki/Graylog).
Linux: rsyslog
# /etc/rsyslog.d/50-forward.conf
# Forward alle Logs an SIEM via TCP, mit Disk-Queue für Resilience
*.* action(type="omfwd"
target="siem.intern.local"
port="514"
protocol="tcp"
queue.type="LinkedList"
queue.filename="forwardq"
queue.maxdiskspace="1g"
queue.saveonshutdown="on"
action.resumeRetryCount="-1")
Bei vielen Hosts und unzuverlässigen Verbindungen ist die Disk-Queue Pflicht – sonst verlierst du Logs bei jedem Netz-Hick.
Firewalls / Switches
Fast alle Enterprise-Firewalls (Sophos, Fortinet, pfSense, OPNsense, Cisco ASA / FTD) sprechen Syslog. Konfiguration üblicherweise in der Web-UI: Syslog-Server-IP eintragen, Severity-Level und Facility wählen, fertig. Empfehlung: mind. „informational“ Level, nicht nur „warning“ – wir brauchen die Connections.
Speicher-Sizing (faustformel)
Die mit Abstand wichtigste Frage vor dem Setup: wieviel Storage brauchst du? Faustformel pro Endpoint:
| Quelle | Volumen pro Endpoint/Tag |
|---|---|
| Windows Security-Eventlog | 50–200 MB |
| Sysmon (Standard-Config) | 100–500 MB |
| Sysmon (Verbose / Network) | 1–3 GB |
| Linux audit (Default-Regeln) | 20–100 MB |
| Firewall (per Connection) | je nach Traffic, 100 MB–10 GB |
| DNS (per Endpoint) | 5–50 MB |
Für 100 Endpoints + 1 Firewall + DNS landest du grob bei 20–80 GB/Tag. Mal 30 Tage Hot + 90 Tage Cold (komprimiert): rechne mit ~3 TB. Compression (Zstd, Snappy) bringt Faktor 5–10. Plane Headroom – Logs wachsen, nicht schrumpfen.
Schreibschutz und Manipulationsschutz
Ein Angreifer mit Domain-Admin-Rechten löscht zuerst die Logs. Drei Maßnahmen:
- Immutable Storage für Cold-Store: S3 mit Object-Lock, MinIO mit Versioning, oder Backups auf Tape / Read-Only-NAS
- Separates Auth-Domain: Log-Server nicht im selben AD wie der Rest. Lokale Admin-Accounts oder separate FreeIPA-Domain
- Forwarding-Only: Endpoints schreiben, lesen aber nicht. Wer am Endpoint Logs leeren will, beeinflusst die Kopie auf dem Log-Server nicht
Wazuh und Graylog haben Audit-Trails für ihre eigenen Aktionen – nutze sie.
Detection und Korrelation
Ein zentraler Log-Speicher allein ist nicht aktiv. Du brauchst:
- Search-Skills (Lucene, KQL, EQL, LogQL – je nach Stack), damit du im IR-Fall in Minuten Antworten findest
- Saved Searches / Dashboards für die häufigsten Fragen („wer hat sich heute remote eingeloggt?“, „welche Endpoints schicken keine Logs mehr?”)
- Alerting-Rules (SIGMA, Wazuh-Rules, Graylog-Streams) auf High-Severity-Patterns
Der zweite Punkt ist oft der wichtigste: 80 % der IR-Arbeit ist nach „wer hat wann was?“ googeln in deinen Logs. Wenn du das schnell beantworten kannst, ist die Plattform schon viel wert – auch ohne ausgereifte Detection.
Stolperfallen
- Endpoint hört auf zu schicken und niemand merkt es – Health-Monitoring der Quellen ist Pflicht („Quelle X hat seit 2h keine Logs gesendet“ → Alert)
- Zeit-Drift: Endpoints mit falscher Uhr produzieren unbrauchbare Logs. NTP konsequent erzwingen
- Sensible Daten (Passwörter, Tokens, PII) in Logs → Forwarder-Filter konfigurieren
- Disk-Volllaufen legt das ganze SIEM still. Monitoring + Hot/Cold-Tiering + Auto-Rollover
- Keine Indexstruktur: zwei Wochen später durchsuchbar, aber jeder Search dauert 5min – Indexing-Strategie früh festlegen
- Multiline-Logs (Stack-Traces, Java-Logs) brechen Parser → Multiline-Pattern im Forwarder
Praxis-Checkliste
- Architektur-Entscheidung getroffen (Wazuh / Graylog / Loki / minimal-rsyslog)
- Log-Server in eigener Sicherheitszone, separat authentifiziert
- Pflicht-Quellen (Auth, Sysmon, FW, DNS) eingebunden
- Resiliente Forwarder mit Disk-Queue auf jedem Endpoint
- Mindestens 30 Tage Hot-Retention, 90 Tage Cold-Retention
- Immutable Cold-Storage (S3 Object Lock o. ä.)
- Health-Monitoring „Quelle X stumm seit Y Stunden“ als Alert
- NTP auf allen Endpoints erzwungen
- Mindest-Set Saved Searches dokumentiert (Top-10 IR-Fragen)
- Quartalsweiser Recovery-Test: Logs in Cold-Storage tatsächlich lesbar?
Fazit
„Where to Log“ ist keine Tool-Frage, sondern eine Architektur-Frage: Wo landen deine Logs, wer kommt dran, wie lange bleiben sie? Wer das mit Wazuh, Graylog oder Loki + Grafana sauber löst, hat ein zentrales Log-System auf Niveau einer Enterprise-SIEM-Lösung – ohne Lizenzkosten. Die eigentliche Investition ist Zeit: 2–3 Wochen für Aufbau, dann pro Quartal ein Tag für Pflege und Tuning. Das sollte jedes KMU schaffen.
Wenn du tiefer einsteigen willst: Im Newsletter zeige ich jeden Monat konkrete Logging-Setups, Forwarder-Configs und Cost-Sizing-Tabellen. Trag dich ein.