Elasticsearch und Fluentd
Der EFK-Stack
Wir haben bereits den ELK-Stack betrachtet, aber wie zu Beginn der Serie versprochen, wollten wir Ihnen auch eine Alternative zu Logstash vorstellen. Fluentd ist leichter und einige Administratoren bevorzugen es.
Wie in unseren vorherigen Blogs können Sie einen funktionierenden Playground indem Sie unser Git-Repository klonen und den Anweisungen folgen.
Warum EFK für Sicherheit?
Der EFK-Stack bietet mehrere Vorteile für die Sicherheitsüberwachung. Wie bereits erwähnt, bietet Elasticsearch schnelle Suchmöglichkeiten über massive Datensätze, was es ideal für die Analyse von Sicherheitsprotokollen aus mehreren Quellen macht. Fluentd, ähnlich wie Logstash in unseren vorherigen Beispielen, fungiert als eine einheitliche Protokollierungsschicht, die Protokolldaten aus verschiedenen Quellen in Elasticsearch parsen, transformieren und weiterleiten kann. Kibana dient als Visualisierungs-Frontend, während Elastic Security dedizierte SIEM-Funktionen hinzufügt, einschließlich Bedrohungssuche, Fallmanagement und automatisierte Erkennungsregeln.
In den nächsten Abschnitten werden wir die Hauptunterschiede zwischen Fluentd und Logstash besprechen.
Architektur und Leistung
Logstash ist in Java/JRuby geschrieben und tendiert dazu, ressourcenintensiver zu sein, mit höherem Speicherverbrauch, aber hervorragendem Verarbeitungsdurchsatz. Es verwendet eine pipeline-basierte Architektur mit Eingabe → Filter → Ausgabe-Stufen, die besonders gut für komplexe Transformationen geeignet ist.
Fluentd ist in Ruby geschrieben, wobei leistungsrelevante Teile in C implementiert sind, was es speichereffizienter und effizienter für das Streaming von Protokollen mit hohem Volumen macht. Es verwendet ein tag-basiertes Routingsystem, das flexibler für komplexe Protokollrouting-Szenarien sein kann.
Syslog-Parsing-Fähigkeiten
Logstash glänzt beim Syslog-Parsing mit:
- Reichen integrierten Syslog-Eingangs-Plugins, die verschiedene RFC-Formate (RFC3164, RFC5424) verarbeiten
- Leistungsstarken Grok-Mustern für benutzerdefiniertes Parsing
- Starker Regex-Support für komplexe Nachrichtenextraktion
- Ausgezeichnete Handhabung strukturierter Daten innerhalb von Syslog-Nachrichten
Fluentd bietet:
- Gute Syslog-Unterstützung durch Plugins wie fluent-plugin-syslog
- Leichteres Parsing, das effizient für Hochdurchsatzszenarien ist
- Besser geeignet für Szenarien, in denen die ursprüngliche Nachrichtenstruktur erhalten bleiben muss
- Einfachere Konfiguration für die grundlegende Syslog-Eingabe
Konfiguration und Benutzerfreundlichkeit
Logstash verwendet eine domänenspezifische Sprache, die intuitiv für pipeline-basiertes Denken ist, aber komplex werden kann für komplizierte Verarbeitungsregeln. Die Konfiguration ist sehr ausdrucksstark für die Datenumwandlung.
Fluentd verwendet ein einfacheres Konfigurationsformat, das viele als leichter verständlich und wartbar empfinden, insbesondere für routing-intensive Szenarien.
Ökosystem und Plugins
Logstash hat ein ausgereiftes Ökosystem mit umfangreichen Filter-Plugins, die speziell für die Protokollverarbeitung und -anreicherung entwickelt wurden. Es integriert sich nahtlos in den breiteren Elastic Stack.
Fluentd hat ein großes Plugin-Ökosystem und ist vendor-neutraler, was die Integration mit verschiedenen Backends über Elasticsearch hinaus erleichtert.
Speicher- und Ressourcenverbrauch
Für die Syslog-Verarbeitung verwendet Fluentd typischerweise weniger Speicher und hat einen kleineren Fußabdruck, was in ressourcenbeschränkten Umgebungen oder bei der Verarbeitung sehr hoher Volumina von Syslog-Daten entscheidend sein kann.
Logstash benötigt mehr Ressourcen, bietet jedoch mehr Verarbeitungsleistung für komplexe Transformationen und Filterung.
Zuverlässigkeit und Datenspeicherung
Beide verarbeiten Syslog zuverlässig, aber Fluentd hat integrierte Puffer- und Wiederholungsmechanismen, die einige als robuster empfinden, um die Datenübertragung sicherzustellen. Logstash erfordert zusätzliche Konfiguration für ähnliche Zuverlässigkeitsgarantien.
Welches sollte ich wählen?
Wenn Sie bereits in das Elastic-Ökosystem investiert haben und erweiterte Datenumwandlungsfähigkeiten benötigen, ist Logstash eine starke Wahl. Für diejenigen, die Ressourceneffizienz und einfachere Konfiguration priorisieren – insbesondere für die Syslog-Eingabe – könnte Fluentd die bessere Wahl sein.
Praktische Anwendung mit EFK
Konfiguration von Elastic Security
Elastic Security ist die Grundlage der SIEM-Funktionen von Elastic. Im nächsten Abschnitt werden wir unseren EFK Docker Stack Playground nutzen, um es in der Praxis zu erkunden.
1. Klonen Sie das Git-Repository: https://github.com/object1st/efk-stack.git

Hinweis: Das Repository ist wie unten gezeigt organisiert. Später im Einrichtungsprozess müssen Sie die von Ihnen erstellten Passwörter in die Dateien fluentd.conf und kibana.yml einfügen.

2. Stellen Sie sicher, dass Sie Docker und Docker Compose in Ihrer Test-Ubuntu-VM installiert haben.Überprüfen Sie unseren vorherigen Blog für Anweisungen zu diesem Prozess.
3. Wechseln Sie in das Verzeichnis.
cd efk-stack
4. Führen Sie diesen Befehl aus, um die Umgebung zu starten:
docker compose up -d
5. Überprüfen Sie, ob alle Container laufen:
docker ps
6. Überprüfen Sie, ob die Dienste in den Containern ohne Fehler laufen:
docker logs elasticseach
docker logs kibana
docker logs fluentd
Hinweis: Für Kibana und Fluentd werden Sie einen Fehler sehen, da wir die Sicherheit noch nicht eingerichtet haben.
Konfiguration von Passwörtern und Sicherheitsintegration
Schritt 1: Passwörter für Elasticsearch einrichten
1. Zunächst müssen Sie Passwörter für die integrierten Benutzer in Elasticsearch erstellen. Führen Sie den folgenden Befehl aus:
docker exec -it elasticsearch bin/elasticsearch-setup-passwords interactive
2. Dies fordert Sie auf, Passwörter für mehrere Benutzer festzulegen. Sie müssen sich nur die Passwörter für die folgenden beiden Benutzer merken:
- elastic
- kibana_system
3. Für die anderen Benutzer können Sie ein beliebiges Passwort eingeben – sie werden für dieses Tutorial nicht benötigt.
Schritt 2: Passwörter zu Konfigurationsdateien hinzufügen
1. Nachdem Sie die Passwörter erstellt haben, fügen Sie sie in Ihre Kibana-Konfigurationsdatei ein:
Datei: kibana.yaml
2. Aktualisieren oder fügen Sie die folgenden Zeilen mit den von Ihnen festgelegten Passwörtern hinzu:

3. Stellen Sie sicher, dass Sie es mit dem tatsächlichen Passwort ersetzen, das Sie erstellt haben.
Schritt 3: Kibana-Container neu starten
Nachdem Sie die kibana.yaml-Datei mit dem richtigen Passwort aktualisiert haben, starten Sie den Kibana-Container neu, um die Änderungen anzuwenden:
docker compose restart kibana
Schritt 4: Fluentd-Konfiguration aktualisieren
Aktualisieren Sie als Nächstes Ihre fluentd.conf-Datei, um das Elasticsearch-Passwort, das Sie zuvor erstellt haben, einzufügen. Dies stellt sicher, dass Fluentd sich ordnungsgemäß authentifizieren kann, wenn es Protokolle an Elasticsearch sendet.
Hinweis: Stellen Sie sicher, dass das Passwort sicher gespeichert und nicht in der Versionskontrolle exponiert ist.

Schritt 5: Fluentd neu starten
Nachdem Sie die Konfiguration aktualisiert haben, starten Sie den Fluentd-Container neu:
docker compose restart fluentd
Schritt 6: Containerstatus überprüfen
Um zu bestätigen, dass sowohl Kibana als auch Fluentd korrekt laufen, überprüfen Sie deren Protokolle:
Fluentd-Protokolle:
docker logs fluentd

Kibana-Protokolle:
docker logs kibana

Achten Sie auf Fehler oder Warnungen, die auf Probleme mit der Authentifizierung oder Konnektivität hinweisen könnten.
Schritt 7: Auf Kibana zugreifen
1. Sie werden von folgendem Anmeldebildschirm begrüßt:

2. Melden Sie sich mit dem Passwort an, das Sie für den Elastic-Benutzer erstellt haben.

Ein Test-Syslog-Nachricht in Fluentd eingeben
Um Ihre Einrichtung zu testen, senden Sie eine Beispiel-Syslog-Nachricht an Fluentd, das sie parsen und an Elasticsearch weiterleiten wird. Kibana ermöglicht es Ihnen dann, die Daten zu visualisieren und Alarme mit Elastic Security zu erstellen.
Schritt 1: Erstellen Sie eine Indexvorlage
Bevor Sie Daten senden, müssen Sie eine Indexvorlage definieren, die der Struktur der Protokolle entspricht, die Fluentd senden wird.
- Navigieren Sie zum Ordner Beispiele in Ihrem geklonten Repository.
- Öffnen Sie die Datei mit dem Namen create_index_template.txt.
- Ersetzen Sie das Platzhalter-Passwort durch Ihr tatsächliches Elastic-Passwort.
- Kopieren Sie den gesamten Inhalt der Datei.
- Fügen Sie ihn in Ihr Terminal ein und drücken Sie „Enter“, um den Befehl auszuführen.
- Wenn erfolgreich, sollten Sie eine Antwort wie folgt sehen:

Dies bestätigt, dass die Indexvorlage erstellt wurde und bereit ist, Daten zu empfangen.
Schritt 2: Senden Sie eine Test Veeam Syslog-Nachricht
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um einen Veeam Ransomware-Alarm zu simulieren:
echo '<14>1 2025-03-20T14:06:09.662307+02:00 VBRSRV01 Veeam_MP - - [origin enterpriseId="31023"] [categoryId=0 instanceId=41600 DetectionTimeUTC="03/20/2025 13:05:41" OibID="0e54d3bf-add8-48eb-9122-fad3ac1e8fb3" ActivityType="EncryptedData" UserName="TECH\user1" ObjectName="VM01" VbrHostName="vbrsrv01.tech.local" Description="Potential malware activity detected"]' | nc -u -q0 localhost 5514
Diese Nachricht wird von Fluentd erfasst, analysiert und an Elasticsearch gesendet.
Schritt 3: Erstellen Sie ein Indexmuster in Kibana
1. Gehen Sie in Kibana zu Stack Management → Indexmuster.


2. Klicken Sie auf „Indexmuster erstellen.“

3. Geben Sie im Feld für den Namen des Indexmusters Folgendes ein:
veeam-logs-*
4. Wählen Sie das entsprechende Zeitstempelfeld aus dem Dropdown-Menü aus.
5. Klicken Sie auf „Indexmuster erstellen.“

Sie sollten jetzt Daten aus der Testnachricht sehen, die Sie gerade gesendet haben.
Erstellen von Erkennungsregeln in Elastic Security
Mit Daten, die in Elasticsearch fließen, können Sie jetzt Erkennungsregeln erstellen, um verdächtige Aktivitäten zu identifizieren.
Schritt 1: Erstellen Sie einen API-Schlüssel für Erkennungsregeln
Führen Sie den folgenden Befehl aus, um einen API-Schlüssel für Elastic Security zu generieren:
curl -u elastic:Yourelasticpassword -X POST "localhost:9200/_security/api_key" \
-H "Content-Type: application/json" \
-d'{
"name": "kibana-detection-rules",
"role_descriptors": {
"kibana_security": {
"cluster": ["manage_security", "monitor"],
"indices": [
{
"names": ["*"],
"privileges": ["read", "write", "create_index", "view_index_metadata"]
}
]
}
}
}'
Schritt 2: Initialisieren Sie die Erkennungs-Engine
Führen Sie diesen Befehl aus, um die Erkennungs-Engine in Kibana zu initialisieren:
curl -u elastic:YOURELASTICPASSWORD -X POST "localhost:5601/api/detection_engine/index" -H 'Content-Type: application/json' -H 'kbn-xsrf: true'
Schritt 3: Erstellen Sie eine benutzerdefinierte Erkennungsregel
1. Gehen Sie in Kibana zu Sicherheit → Regeln.

2. Klicken Sie auf „Neue Regel erstellen.“

3. Wählen Sie „Benutzerdefinierte Abfrage.“

4. Unter Indexmustern entfernen Sie die Standardwerte und fügen Sie hinzu:
veeam-logs-*
5. Geben Sie im Feld für die benutzerdefinierte Abfrage Folgendes ein:
activity_type: "EncryptedData"
6. Füllen Sie die Regel-Details aus:
- Name: Veeam Ransomware-Alarm
- Beschreibung: Erkennt potenzielle Ransomware-Aktivitäten aus Veeam-Alarme
- Schweregrad: Hoch
- Risiko-Score: 75
7. Klicken Sie auf „Weiter“ und konfigurieren Sie den Zeitplan:
- Für erste Tests sollten Sie in Betracht ziehen, ein kurzes Zeitintervall festzulegen – z. B. alle 20 Sekunden –, um schnell zu überprüfen, ob Alarme wie erwartet ausgelöst werden. Sie können dieses Intervall später basierend auf Ihren betrieblichen Anforderungen anpassen.

8. Lassen Sie die Regelaktionen vorerst aus (optional). Wir werden keine Regelaktionen hinzufügen, aber Sie können experimentieren, wenn Sie verschiedene Ansätze ausprobieren möchten.

9. Klicken Sie auf „Regel erstellen & aktivieren.“

Schritt 4: Lösen Sie den Alarm erneut aus
Senden Sie eine weitere Testnachricht, um die Regel auszulösen:
echo '<14>1 2025-03-20T14:06:09.662307+02:00 VBRSRV01 Veeam_MP - - [origin enterpriseId="31023"] [categoryId=0 instanceId=41600 DetectionTimeUTC="03/20/2025 13:05:41" OibID="0e54d3bf-add8-48eb-9122-fad3ac1e8fb3" ActivityType="EncryptedData" UserName="TECH\user1" ObjectName="VM01" VbrHostName="vbrsrv01.tech.local" Description="Potential malware activity detected"]' | nc -u -q0 localhost 5514

Sie sollten jetzt sehen, dass der Alarm im Sicherheit → Alarme Abschnitt erscheint. Sie können auf den Alarm klicken, um Details anzuzeigen und ihn zu bestätigen.

Erstellen von Sicherheits-Dashboards
Um ein Sicherheits-Dashboard zu erstellen, gehen Sie zu Analytics → Dashboard und fügen Sie diese Visualisierungen hinzu:
- Fehlgeschlagene Authentifizierungsversuche über die Zeit: Ein Liniendiagramm, das zeigt, wann Anmeldefehler auftreten, um Ihnen zu helfen, Angriffsmuster und geschäftige Zeiten zu erkennen.
- Top-Quell-IPs nach fehlgeschlagenen Versuchen: Eine Tabelle, die IP-Adressen mit den meisten fehlgeschlagenen Anmeldungen auflistet, um es einfach zu machen, Wiederholungstäter zu identifizieren.
- Geografische Verteilung von Angriffen: Eine Karte, die zeigt, woher die Angriffe kommen, um Ihnen einen globalen Überblick über die Ursprünge von Bedrohungen zu geben.
- Verhältnis von Authentifizierungserfolgen zu -fehlern: Ein Kreisdiagramm, das erfolgreiche und fehlgeschlagene Anmeldungen vergleicht, um ungewöhnliche Aktivitäten hervorzuheben.
- Risiko-Score-Zeitleiste: Ein Histogramm, das zeigt, wie sich Risiko-Scores im Laufe der Zeit ändern, um Ihnen zu helfen, Spitzen in den Bedrohungsniveaus zu erkennen.
Erweiterte Sicherheitsfunktionen
Elastic Security bietet Werkzeuge zur Verbesserung der Bedrohungserkennung und -analyse:
- Zeitleiste: Ermöglicht Analysten, Sicherheitsereignisse im Detail zu überprüfen und zu verstehen, wie Angriffe ablaufen.
- Feinabstimmung von Erkennungsregeln: Hilft, Fehlalarme zu reduzieren, während die Erkennung genau bleibt. Passen Sie die Regeln regelmäßig basierend auf dem normalen Systemverhalten an. Verwenden Sie maschinelles Lernen, um ungewöhnliche Aktivitäten zu erkennen.
- Fallmanagement: Verfolgt Ermittlungen und führt Prüfprotokolle. Erkennungsregeln können automatisch Fälle mit relevanten Details erstellen, um die Reaktion zu beschleunigen.
Produktionsüberlegungen
Für sichere, zuverlässige Bereitstellungen:
- Sicherheits-Härtung: Verwenden Sie TLS-Verschlüsselung, erzwingen Sie Authentifizierung und Autorisierung und wenden Sie regelmäßige Updates an. Setzen Sie Elasticsearch in einem Cluster für hohe Verfügbarkeit ein und richten Sie Backups ein.
- Ressourcenplanung: Elasticsearch benötigt ausreichend Speicher und schnellen Speicher. Legen Sie Protokollaufbewahrungsrichtlinien fest, die Sicherheit und Kosten in Einklang bringen. Verwenden Sie das Lebenszyklusmanagement von Indizes, um alte Daten automatisch zu verwalten.
- Netzwerksicherheit: Verwenden Sie Firewalls, um den Zugriff auf EFK-Komponenten zu beschränken. Segmentieren Sie Ihr Netzwerk, um das Sicherheitssystem von anderer Infrastruktur zu trennen.
Fazit
Der EFK-Stack mit Elastic Security bietet Ihnen eine starke Grundlage für die Überwachung und Erkennung von Bedrohungen. Mit diesem Setup können Sie Sicherheitsprotokolle sammeln, verarbeiten und analysieren, Bedrohungen automatisch erkennen und Daten über Dashboards visualisieren.
Wenn Ihr System wächst, erweitern Sie Ihre Protokollquellen, erstellen Sie benutzerdefinierte Erkennungsregeln und verbinden Sie sich mit externen Bedrohungsintelligenz-Feeds. Effektive Sicherheitsüberwachung benötigt regelmäßige Updates, Feinabstimmung und qualifizierte Analysten. Der EFK-Stack bietet die Werkzeuge – der Erfolg hängt davon ab, wie Sie sie nutzen.



