# ELK Stack: Zentrale Log-Aggregation & Forensik
TL;DR / Management Summary In einer Umgebung mit hunderten VMs (Proxmox) und Firewalls (OPNsense) ist das manuelle Durchsuchen von Log-Dateien unmöglich. Der ELK Stack (Elasticsearch, Logstash, Kibana) ist die Lösung für zentrales Logging. Wir nutzen Beats (Agenten) zum Sammeln, Logstash zum Filtern, Elasticsearch zum Speichern und Kibana zur Visualisierung. Ein Senior Admin nutzt ELK, um Sicherheitsvorfälle in Sekunden zu rekonstruieren und Fehlermuster applikationsübergreifend zu finden.
# 1. Die Komponenten des Stacks
Wer macht was?
- Elasticsearch: Das Herz. Eine NoSQL-Datenbank, spezialisiert auf die Volltextsuche in Milliarden von Log-Zeilen.
- Logstash: Der Verarbeiter. Er empfängt rohe Logs, parst sie (z.B. extrahiert die IP aus einem Syslog-Text) und schickt sie an Elasticsearch.
- Kibana: Das Gesicht. Die Web-GUI für Suchen, Dashboards und Analysen.
- Beats (z.B. Filebeat): Die kleinen Agenten auf den Servern, die Log-Dateien auslesen und an Logstash senden.
# 2. Einrichtung in der Praxis
Vom Textfile zum Index.
# Schritt 1: Filebeat konfigurieren (am Quell-Server)
Installieren Sie Filebeat in der VM (Artikel 668):
# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
output.logstash:
hosts: ["elk-server:5044"]
# Schritt 2: Logstash Pipeline
Hier definieren wir den Filter (Grok-Pattern):
filter {
grok {
match => { "message" => "%{IP:client_ip} %{WORD:method} %{URIPATH:url} ..." }
}
}
# 3. Deep Dive: Suchen wie ein Profi (KQL)
Die Nadel finden.
Kibana nutzt die Kibana Query Language (KQL).
status: 500: Findet alle Server-Fehler.client_ip: "10.0.1.50" AND url: "/admin": Wer hat auf den Admin-Bereich zugegriffen?response_time > 2000: Findet alle langsamen Requests.
# 4. Day-2 Operations: Log-Retention & ILM
Platz sparen.
Logs können Terabytes belegen.
- Aktion: Nutzen Sie Index Lifecycle Management (ILM).
- Regel: “Verschiebe Logs nach 7 Tagen in den ‘Cold’ Speicher (langsame Disks) und lösche sie nach 30 Tagen”.
# 5. Troubleshooting & “War Stories”
Wenn die Suche streikt.
# Top 3 Fehlerbilder
-
Symptom: Elasticsearch steht auf “Yellow” oder “Red” Status.
- Ursache: Ein Knoten ist offline oder die Shards (Datenpakete) können nicht mehr verteilt werden (Disk full).
- Lösung:
GET /_cluster/healthabfragen und Speicherplatz freigeben.
-
Symptom: Logs kommen an, aber Felder (wie IP) fehlen.
- Ursache: Der Grok-Filter in Logstash hat einen Syntax-Fehler.
- Lösung: Nutzen Sie den “Grok Debugger” in Kibana.
-
Symptom: Java Heap Space Error am ELK-Server.
- Fix: Erhöhen Sie den RAM für Elasticsearch (
ES_JAVA_OPTS).
- Fix: Erhöhen Sie den RAM für Elasticsearch (
# “War Story”: Der “Log-Loop” am Fileserver
Ein Admin aktivierte das Auditing für jeden Dateizugriff auf einem großen Fileserver und schickte dies an ELK. Das Ereignis: Ein Backup-Skript scannte nachts Millionen von Dateien. Das Ergebnis: Filebeat schickte Millionen von Logs pro Sekunde. Logstash konnte diese nicht schnell genug verarbeiten, der RAM lief voll, und der gesamte ELK-Stack stürzte ab. Da der Admin kein Backpressure-Management (z.B. Redis oder Kafka als Puffer) hatte, gingen alle Logs der Nacht verloren. Lehre: Nutzen Sie für Massenlogs immer einen Message Broker (wie Redis oder Kafka) zwischen den Agenten und Logstash, um Lastspitzen abzufedern.
# 6. Monitoring & Reporting
Log-Statistiken.
# Watcher (Alerting)
Konfigurieren Sie Alarme in Kibana:
- Trigger: “Wenn das Wort
AUTH_FAILUREmehr als 100x pro Minute auftaucht -> Brute-Force Alarm!”.
# 7. Fazit & Empfehlung
Der ELK-Stack ist die Basis für jede Security-Operations-Center (SOC) Strategie.
- Empfehlung: Nutzen Sie den Stack in einem dedizierten Proxmox-Cluster mit SSD-Speicher (wegen der hohen Random-I/O Last von Elasticsearch).
- Wichtig: Sichern Sie den Kibana-Zugriff zwingend via LDAP/AD (Artikel 712) und aktivieren Sie SSL/TLS für den gesamten Stack.
# Anhang: Cheatsheet (Elasticsearch API)
| Aufgabe | Befehl (CURL) |
|---|---|
| Cluster Health | GET /_cluster/health |
| Indices listen | GET /_cat/indices?v |
| Index löschen | DELETE /log-2023.01.01 |
| Settings prüfen | GET /_nodes/settings |