Der Elastic Stack in der Praxis, Teil 1: Windows-Logs zentralisieren

Dieser Artikel ist der erste in einer Reihe zum Thema Log-Management mit dem Elastic Stack. Der Elastic Stack ist eine Reihe von Open Source-Software-Produkten rund um die zentralisierte Speicherung, Auswertung und Visualisierung von Logs. Diese helfen dabei, den Status der eigenen Infrastruktur im Blick zu behalten, wie zum Beispiel das Active Directory oder die DHCP Logs und bieten eine zentrale Anlaufstelle zur Fehlersuche und machen auf Auffälligkeiten aufmerksam. Die Software steht in ihrer (sehr umfassenden) Grundversion kostenfrei zur Verfügung.

Das Thema haben wir hier im Blog schon mehrfach oberflächlich angesprochen, möchten nun aber konkreter werden. Unser Ziel ist es, Schritt für Schritt den Aufbau einer kleinen Demo-Umgebung zu begleiten. Wir werden Logs aus verschiedenen Quellen empfangen, verarbeiten und visualisieren. Dabei beginnen wir mit einer minimalen Umgebung und erweitern diese in den folgenden Artikeln um zusätzliche Features und Sicherheitsmechanismen. Lassen Sie uns beginnen!

Fahrplan

In diesem Artikel werden wir eine minimale Umgebung aufsetzen, um die Logs, die uns ein Windows-System zuspielen wird, zentral zu speichern. Außerdem installieren wir eine Software, die uns diese Logs in einem Web-Browser darstellt und sie durchsuchen lässt. Der Artikel gliedert sich in die folgenden Abschnitte:

  1. Installation der benötigten Komponenten
  2. Konfiguration der Komponenten, sodass sie miteinander kommunizieren können
  3. Erste Schritte in der Visualisierungs-Software Kibana

1. Installation

Die Komponenten des Elastic Stacks fühlen sich auf einem Linux-System am wohlsten, lassen sich aber auch problemlos auf einem Windows-System installieren. Wir zeigen beide Varianten. Zum Zeitpunkt der Erstellung ist die Version 7.2.0 aktuell.

Für unser Minimal-Setup benötigen wir folgende Komponenten:

  • Auf einem Server, der die Logs empfängt und verarbeitet („Log Host“):
    • Elasticsearch. Dies ist die Datenbank unseres Log-Management-Systems. Elasticsearch speichert alle Logs und stellt eine Schnittstelle zur Suche und Aggregation bereit.
    • Kibana. Eine browserbasierte Oberfläche für Elasticsearch und den gesamten Elastic Stack.
  • Auf dem zu überwachenden Windows-System:
    • Winlogbeat. Dies ist eine ressourcenschonende Agent-Software, die die Log-Daten an den Log Host weiterleitet

In der Praxis ist es ab einer bestimmten Datenmenge ratsam, sich nicht auf einen einzelnen Log-Host zu beschränken. Elasticsearch lässt sich hervorragend als Cluster aus mehreren Servern betrieben. Dies geht aber über den Umfang dieses Artikel hinaus.

1.1 Installation des Log Hosts unter Linux

Elasticsearch

Für Debian- und Red Hat-basierte Linux-Distibutionen stehen Paketquellen bereit, die in den Paketmanager integriert werden können. Diese sind im Handbuch angegeben. Alternativ lässt sich Elasticsearch auch als Paket ausführbarer Dateien im .tar.gz-Format herunterladen (klicken Sie auf der Downloadseite auf den Link „Linux“).

Wir empfehlen die Installation über den Paketmanager, da hier Updates einfacher zu installieren sind. Auf einem Debian-System führen wir dazu die folgenden Schritte aus:

  1. HTTPS-Unterstützung für das APT-Paketmanagement installieren (nur auf alten Debian-Versionen erforderlich):
    sudo apt update && sudo apt install apt-transport-https
  2. Den Signaturschlüssel für die Elastic-Paketquelle importieren:
    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  3. Die Elastic-Paketquelle zum Paketmanager hinzufügen:
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
  4. Die Paketquellen aktualisieren und das Elasticsearch-Paket installieren:
    sudo apt update && sudo apt install elasticsearch

Sie finden die Konfigurationsdateien standardmäßig im Verzeichnis /etc/elasticsearch.

Kibana

Kibana lässt sich auf demselben Weg installieren: als .tar.gz-Paket („Linux“) oder über den Paketmanager.

Haben Sie Elasticsearch bereits über den Paketmanager installiert, müssen Sie keine zusätzliche Paketquelle hinzufügen – Elasticsearch und Kibana sind aus demselben Repository verfügbar. Die Installation ist daher in einem Schritt erledigt:

  1. sudo apt install kibana

Die Kibana-Konfiguration wird über Dateien im Verzeichnis /etc/kibana vorgenommen.

Damit sind alle nötigen Programme auf dem Log Host installiert, weiter geht es in Abschnitt 2.

1.2 Installation des Log Hosts unter Windows

Elasticsearch

Für Elasticsearch steht ein .zip-Paket, das lediglich entpackt werden muss, oder ein .msi-Installationspaket zur Verfügung. Wir verwenden in diesem Beispiel das .zip-Paket, da die .msi-Variante noch als Beta-Version gekennzeichnet ist.

Laden Sie das .zip-Paket durch Klick auf „Windows“ auf der Download-Seite herunter und entpacken Sie es an einer Stelle Ihrer Wahl.

Sie finden die Konfigurationsdateien in dem ausgepackten Ordner in dem Unterverzeichnis config.

Kibana

Kibana wird nur als .zip-Paket angeboten. Laden Sie dieses von der Website herunter („Windows“) und entpacken Sie es an einer Stelle Ihrer Wahl.

Sie finden die Konfigurationsdateien auch hier in dem ausgepackten Ordner in dem Unterverzeichnis config.

1.3 Installation des Agents (Winlogbeat)

Winlogbeat wird ebenfalls nur als .zip-Paket angeboten. Dieses Paket muss auf dem zu überwachenden Rechner an einer Stelle Ihrer Wahl entpackt werden.

2. Konfiguration und Programmstart

2.1 Konfiguration von Elasticsearch

Zuerst sollten wir dafür sorgen, dass nicht nur lokal, sondern auch aus dem Netzwerk auf Elasticsearch zugegriffen werden kann. Andernfalls können wir später keine Logs von anderen Systemen an Elasticsearch senden. Dazu bearbeiten Sie die Konfigurationsdatei elasticsearch.yml. Unter Windows bietet sich dazu der Editor Notepad++ an, Linux-Nutzer können bspw. vim oder nano verwenden. Suchen Sie die Zeile

#network.host: 192.168.0.1

und ersetzen Sie sie durch die Zeile

network.host: ["_site_", "_local_"]

Bachten Sie, dass Sie dies nur tun sollten, wenn Sie Ihrem lokalen Netzwerk vertrauen. Elasticsearch ist noch nicht durch eine Authentifizierung geschützt, diese werden wir erst in einem späteren Artikel einrichten.

Suchen Sie außerdem nach der Zeile

#discovery.seed_hosts: ["host1", "host2"]

und ersetzen Sie sie durch die folgende Zeilen:

node.name: node-1
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]

Lassen Sie uns die installierten Programme nun starten!

2.2 Konfiguration von Kibana

Auch Kibana soll nicht nur lokal, sondern auch über das Netzwerk erreichbar sein. Suchen Sie in der Konfigurationsdatei kibana.yml die folgende Zeile:

#server.host: "localhost"

Wenn Sie Verbindungen aus allen Quellen erlauben möchten, ersetzen Sie diese Zeile durch:

server.host: "0.0.0.0"

Wenn Sie nur Verbindungen aus dem lokalen Netz erlauben möchten, setzen Sie statt 0.0.0.0 die lokale IP-Adresse des Log Hosts ein.

2.3 Starten der Dienste des Log Hosts

Linux

Die Programme integrieren sich in systemd. Starten Sie zuerst Elasticsearch:

sudo systemctl start elasticsearch

Dann Kibana:

sudo systemctl start kibana

Wenn Elasticsearch und Kibana beim Systemstart automatisch ausgeführt werden sollen, führen Sie folgende Befehle aus:

sudo systemctl enable elasticsearch
sudo systemctl enable kibana

Nach einer kurzen Wartezeit sollten Sie über einen Browser die Kibana-Benutzeroberfläche unter der URL http://localhost:5601 bzw. http://<IP des Log Hosts>:5601 aufrufen können.

Windows

Starten Sie Elasticsearch durch einen Doppelklick auf die Datei elasticsearch.bat im Unterordner bin. Es öffnet sich ein Kommandozeilenfenster, in dem der Start von Elasticsearch protokolliert wird. Wenn Elasticsearch erfolgreich gestartet wurde, sehen Sie die Meldung [<Systemname>] started.

Starten Sie Kibana auf dieselbe Weise: Doppelklicken Sie die Datei bin\kibana.bat. Es öffnet sich wieder ein Kommandozeilenfenster. Der Start kann eine Zeit lang dauern, es dauert auch etwas, bis die ersten Zeilen im Kommandozeilenfenster erscheinen. Sie sollten die Meldung
[info][listening] Server running at http://localhost:5601
sehen, sobald Kibana erfolgreich gestartet wurde. Sie können dann in einem Webbrowser die URL http://localhost:5601 aufrufen. Dort sollten Sie die Kibana-Benutzeroberfläche erreichen.

In einem Produktivsystem sollten Sie Elasticsearch und Kibana nun als Dienste einrichten.

2.4 Konfiguration und Start von Winlogbeat

Öffnen Sie die Datei winlogbeat.yml in dem Verzeichnis, in dem Winlogbeat entpackt wurde, mit einem Editor. Suchen Sie den folgenden Codeblock:

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]

Ersetzen Sie darin localhost durch die IP-Adresse des Log Hosts, auf dem Elasticsearch läuft, z. B.:

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["10.0.2.15:9200"]

Speichern Sie Ihre Änderungen und starten Sie Winlogbeat durch Doppelklick auf winlogbeat.exe. Es startet sich erneut ein Kommandozeilenfenster, dieses wird jedoch leer bleiben. In einer Produktivumgebung würde auch Winlogbeat im Hintergrund als Dienst ausgeführt.

Winlogbeat kann automatisch ein Dashboard in Kibana einrichten, das einige Standard-Visualisierungen der Daten anzeigt. Dazu muss über die PowerShell der folgende Befehl ausgeführt werden:

winlogbeat/winlogbeat.exe setup

3. Erste Schritte in Kibana

Kibana sollte nun eingerichtet und für den ersten Gebrauch bereit sein. Öffnen Sie die Adresse http://localhost:5601 bzw. http://<IP des Log Hosts>:5601 in einem Browser. Nach einer kurzen Ladesequenz werden Sie auf die Startseite geleitet.

In der folgenden Bilderreihe werden die wichtigsten Punkte für den Anfang erklärt.

Startseite von Kibana. Hier findet man zusätzliche Informationen für den Anfang.
Startseite mit den wichtigsten Begriffen. Da wir schon Daten in Elasticsearch eingefügt haben kann direkt losgelegt werden.
Der Discover-Bereich zeigt die Logs in zeitlicher Reihenfolge und erlaubt eine Volltextsuche und Filterung.
Hier werden die einzelnen Bereiche der Discover-Seite aufgezeigt. Sie können bspw. nach bestimmten Ereignissen oder Hosts suchen. Diese werden dann in zeitlicher Reihenfolge dargestellt.
Das Dashboard, das von Winlogbeat mitgeliefert wird. Diese Visualisierungen kann man als Grundlage für eigene Projekte verwenden.
Über Kibana kann direkt eine Monitoring-Funktion für den Cluster aktiviert werden. Nach kurzer Zeit wird dann der Cluster angezeigt.
Das Monitoring zeigt die wichtigsten Informationen über Elasticsearch und Kibana. Hier erkennen Sie schnell, wie viele Nodes existieren und wie viel Speicherplatz noch vorhanden ist. Außerdem wird die Auslastung der einzelnen Prozesse und die Menge der Requests dargestellt.
Die Settings erlauben es, Elasticsearch und Kibana anzupassen. Sei es die Verwaltung von Indices oder die Konfiguration von Kibana.

Kibana ist sehr interaktiv und kann mit wenigen Klicks auch große Datenmengen filtern und diese je nach Wunsch visualisieren.

Im nächsten Teil der Blogreihe werden wir weitere Datenquellen an Elasticsearch anbinden.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.