1.Elastic Stack: Sicherheitsprotokollanalyse. Einleitung



Im Zusammenhang mit dem Verkaufsende des Splunk-Protokollierungs- und Analysesystems in Russland stellte sich die Frage, wie diese Lösung ersetzt werden kann. Nachdem ich einige Zeit damit verbracht hatte, mich mit verschiedenen Lösungen vertraut zu machen, entschied ich mich für eine Lösung für einen echten Mann - "ELK Stack" . Die Konfiguration dieses Systems erfordert einige Zeit. Dadurch erhalten Sie jedoch ein sehr leistungsfähiges System zur Analyse des Status und der betrieblichen Reaktion auf Sicherheitsvorfälle in der Organisation. In dieser Artikelserie werden die grundlegenden (oder möglicherweise nicht) Funktionen des ELK-Stacks, das Parsen von Protokollen, das Erstellen von Diagrammen und Dashboards und die interessanten Funktionen am Beispiel von Protokollen der Check Point-Firewall oder des OpenVas-Sicherheitsscanners erläutert. Überlegen Sie sich zunächst, was es ist - der ELK-Stack und aus welchen Komponenten er besteht.

Der ELK-Stack ist eine Abkürzung für drei Open Source-Projekte: Elasticsearch , Logstash und Kibana . Entwickelt von Elastic, zusammen mit allen zugehörigen Projekten. Elasticsearch ist der Kern des gesamten Systems, das die Funktionen eines Datenbank-, Such- und Analysesystems kombiniert. Logstash ist eine serverseitige Datenverarbeitungspipeline, die Daten von mehreren Quellen gleichzeitig empfängt, das Protokoll analysiert und dann an die Elasticsearch-Datenbank sendet. Mit Kibana können Benutzer Daten mithilfe von Diagrammen und Grafiken in Elasticsearch visualisieren. Auch über Kibana können Sie die Datenbank verwalten. Als nächstes betrachten wir jedes System separat genauer.



Logstash


Logstash ist ein Dienstprogramm zum Verarbeiten von Protokollereignissen aus verschiedenen Quellen, mit dem Sie Felder und deren Werte in einer Nachricht auswählen und das Filtern und Bearbeiten von Daten konfigurieren können. Nach all den Manipulationen leitet Logstash Ereignisse in den endgültigen Datenspeicher um. Das Dienstprogramm wird nur über Konfigurationsdateien konfiguriert.
Eine typische Logstash-Konfiguration ist eine Datei (en), die aus mehreren eingehenden Informationsströmen (Eingabe), mehreren Filtern für diese Informationen (Filter) und mehreren ausgehenden Datenströmen (Ausgabe) besteht. Es sieht aus wie eine oder mehrere Konfigurationsdateien, die in der einfachsten Version (die überhaupt nichts tut) so aussehen:

input { } filter { } output { } 

In INPUT konfigurieren wir, an welchem ​​Port die Protokolle eingehen und nach welchem ​​Protokoll oder aus welchem ​​Ordner neue oder ständig geschriebene Dateien gelesen werden sollen. In FILTER konfigurieren wir den Protokollparser: Analysieren von Feldern, Bearbeiten von Werten, Hinzufügen neuer Parameter oder Löschen. FILTER ist ein Nachrichtenverwaltungsfeld, das mit einer Vielzahl von Bearbeitungsoptionen zu Logstash kommt. Bei der Ausgabe konfigurieren wir, wohin das bereits analysierte Protokoll gesendet wird. Wenn es sich um eine elastische Suche handelt, wird eine JSON-Anforderung gesendet, in der die Felder mit den Werten gesendet werden, oder es kann im Rahmen des Debugs als stdout ausgegeben oder in eine Datei geschrieben werden.



Elasticsearch


Zunächst ist Elasticsearch eine Lösung für die Volltextsuche, die jedoch über zusätzliche Funktionen wie einfache Skalierung, Replikation und mehr verfügt. Dies machte das Produkt zu einer sehr praktischen und guten Lösung für hochgeladene Projekte mit großen Datenmengen. Elasticsearch ist ein nicht relationales Repository (NoSQL) von Dokumenten im JSON-Format und eine Suchmaschine, die auf der Lucene-Volltextsuche basiert. Die Hardwareplattform ist Java Virtual Machine, sodass das System eine große Menge an Prozessor- und RAM-Ressourcen benötigt, um zu funktionieren.
Jede eingehende Nachricht, entweder mit Logstash oder unter Verwendung der Abfrage-API, wird als "Dokument" indiziert - eine Entsprechung einer Tabelle in relationalem SQL. Alle Dokumente werden im Index gespeichert - eine Entsprechung der Datenbank in SQL.

Ein Beispiel für ein Dokument in der Datenbank:

 { "_index": "checkpoint-2019.10.10", "_type": "_doc", "_id": "yvNZcWwBygXz5W1aycBy", "_version": 1, "_score": null, "_source": { "layer_uuid": [ "dae7f01c-4c98-4c3a-a643-bfbb8fcf40f0", "dbee3718-cf2f-4de0-8681-529cb75be9a6" ], "outzone": "External", "layer_name": [ "TSS-Standard Security", "TSS-Standard Application" ], "time": "1565269565", "dst": "103.5.198.210", "parent_rule": "0", "host": "10.10.10.250", "ifname": "eth6", ] } 

Alle Arbeiten mit der Datenbank basieren auf JSON-Anforderungen mit der REST-API, die entweder Dokumente nach Index ausgeben, oder einigen Statistiken im Format: Frage - Antwort. Um alle Antworten auf Anfragen zu visualisieren, wurde Kibana geschrieben, ein Webservice.

Kibana


Mit Kibana können Sie Daten suchen / abrufen und Statistiken aus der Elasticsearch-Datenbank abrufen, aber viele schöne Grafiken und Dashboards basieren auf den Antworten. Das System verfügt auch über Funktionen zur Datenbankadministration von elasticsearch. In den folgenden Artikeln werden wir diesen Service genauer betrachten. Lassen Sie uns nun ein Beispiel für Dashboards in der Check Point-Firewall und im OpenVas-Schwachstellenscanner zeigen, die erstellt werden können.

Dashboard-Beispiel für Check Point, das Bild kann angeklickt werden:



OpenVas Dashboard Beispiel, das Bild ist anklickbar:



Fazit


Wir haben untersucht, woraus der ELK-Stack besteht, haben uns ein wenig mit den Hauptprodukten vertraut gemacht und werden dann im Laufe des Kurses das Schreiben der Logstash-Konfigurationsdatei, das Festlegen von Dashboards auf Kibana, das Kennenlernen von API-Anforderungen, Automatisierung und vielem mehr gesondert betrachten!

Also bleibt dran ( Telegramm , Facebook , VK , TS Solution Blog ), Yandex.Zen .

Source: https://habr.com/ru/post/de480570/


All Articles