Protokollanalyse in Graylog

NmapNmapBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie Protokolle (Logs) mit Graylog analysieren können. Graylog ist eine Open-Source-Log-Verwaltungsplattform für die Cybersicherheitsüberwachung. Sie üben das Einrichten von Graylog mit Docker Compose, das Konfigurieren von Protokolleingängen und die Durchführung von Protokollanalysen anhand praktischer Übungen.

Das Lab führt Sie durch die Bereitstellung von Graylog zusammen mit MongoDB und Elasticsearch und zeigt Ihnen, wie Sie die Weboberfläche nutzen, um Protokolldaten zu sammeln und abzufragen. Diese praktischen Aufgaben helfen Ihnen, die wesentlichen Fähigkeiten für die zentrale Protokollverwaltung und die Sicherheitsüberwachung zu erwerben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/udp_scanning("UDP Scanning Techniques") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") subgraph Lab Skills nmap/udp_scanning -.-> lab-549925{{"Protokollanalyse in Graylog"}} wireshark/packet_capture -.-> lab-549925{{"Protokollanalyse in Graylog"}} end

Graylog installieren

In diesem Schritt installieren Sie Graylog, eine leistungsstarke Open-Source-Log-Verwaltungsplattform, in Ihrer LabEx-VM-Umgebung. Graylog hilft bei der Zentralisierung und Analyse von Protokolldaten (Logs) für die Sicherheitsüberwachung und die Fehlerbehebung, indem es Protokolle aus verschiedenen Quellen sammelt und Such- und Visualisierungsfunktionen bietet.

Da wir Docker-Container verwenden, werden wir Graylog mit Docker Compose bereitstellen, um die Einrichtung zu vereinfachen. Docker Compose ermöglicht es uns, multi-Container-Anwendungen mit einer einzigen Konfigurationsdatei zu definieren und auszuführen. Dieser Ansatz vereinfacht den Installationsprozess und stellt sicher, dass alle erforderlichen Komponenten richtig zusammenarbeiten. Befolgen Sie diese Schritte sorgfältig:

  1. Stellen Sie zunächst sicher, dass Sie sich im richtigen Verzeichnis befinden. Das Verzeichnis project ist der Ort, an dem wir unsere Graylog-Installationsdateien organisieren werden:
cd ~/project
  1. Erstellen Sie ein neues dediziertes Verzeichnis für die Graylog-Konfiguration. Dadurch werden unsere Installationsdateien getrennt und organisiert:
mkdir graylog && cd graylog
  1. Erstellen Sie mit nano eine Datei namens docker-compose.yml mit folgendem Inhalt. Diese Datei definiert alle Dienste, die Graylog zum Ausführen benötigt:
nano docker-compose.yml
  1. Fügen Sie diese Konfiguration ein (drücken Sie Ctrl+O, um zu speichern, und dann Ctrl+X, um zu beenden). Die Konfiguration umfasst drei Hauptdienste:
    • MongoDB zur Speicherung von Konfigurationsdaten
    • Elasticsearch zur Indizierung und Suche von Protokollen
    • Graylog selbst als Weboberfläche und Verarbeitungsengine
version: "3"
services:
  mongodb:
    image: mongo:4.2
    volumes:
      - mongo_data:/data/db
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
    volumes:
      - es_data:/usr/share/elasticsearch/data
    environment:
      - "discovery.type=single-node"
      - "bootstrap.memory_lock=true"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  graylog:
    image: graylog/graylog:4.3
    volumes:
      - graylog_data:/usr/share/graylog/data
    environment:
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      - "9000:9000"
      - "1514:1514"
      - "1514:1514/udp"
      - "12201:12201"
      - "12201:12201/udp"
volumes:
  mongo_data:
  es_data:
  graylog_data:
  1. Starten Sie den Graylog-Stack mit Docker Compose. Das Flag -d führt die Container im Hintergrund aus:
docker-compose up -d
  1. Überprüfen Sie, ob die Container ordnungsgemäß ausgeführt werden. Dieser Befehl zeigt den Status aller in unserer docker-compose-Datei definierten Dienste an:
docker-compose ps

Sie sollten drei Dienste (mongodb, elasticsearch und graylog) mit dem Status "Up" sehen. Die Graylog-Weboberfläche ist unter http://127.0.0.1:9000 verfügbar (Benutzername: admin, Passwort: admin). Damit ist die grundlegende Graylog-Installation abgeschlossen, und wir sind nun bereit, in den nächsten Schritten die Protokolleingänge zu konfigurieren.

Ein Protokolleingang (Log Input) einrichten

In diesem Schritt konfigurieren Sie einen Protokolleingang in Graylog, um Syslog-Nachrichten zu empfangen. Stellen Sie sich dies als das Erstellen eines "Empfangsports" vor, an dem Graylog Protokolldaten von verschiedenen Geräten und Anwendungen sammeln kann. Dies ist für die Sicherheitsüberwachung unerlässlich, da Protokolle wertvolle Informationen über Systemaktivitäten und potenzielle Bedrohungen enthalten.

  1. Zunächst überprüfen wir, ob Graylog aus unserer vorherigen Einrichtung ordnungsgemäß läuft. Führen Sie diesen Befehl aus, um den Container-Status zu überprüfen:
cd ~/project/graylog
docker-compose ps
  1. Greifen Sie auf die Graylog-Weboberfläche zu, indem Sie Ihren Browser öffnen und zu http://127.0.0.1:9000 navigieren. Verwenden Sie diese Anmeldeinformationen:

    • Benutzername: admin
    • Passwort: admin
  2. In der Graylog-Weboberfläche erstellen wir eine neue Eingabequelle:

    • Klicken Sie auf "System" im oberen Menü – hier verwalten wir die Kernfunktionen von Graylog.
    • Wählen Sie "Inputs" aus der Dropdown-Liste – Eingänge (Inputs) sind die Art und Weise, wie Graylog Protokolldaten empfängt.
    • Wählen Sie unter "Select input" "Syslog UDP" aus – UDP ist für die Protokollsammlung schneller als TCP.
    • Klicken Sie auf "Launch new input", um die Konfiguration zu starten.
  3. Konfigurieren Sie jetzt den Eingang mit diesen spezifischen Einstellungen:

    • Knoten (Node): Wählen Sie Ihren Graylog-Server aus (dies sollte die einzige verfügbare Option sein).
    • Titel: "Syslog UDP Input" (geben Sie ihm einen beschreibenden Namen).
    • Bind-Adresse: 0.0.0.0 (bedeutet, auf allen Netzwerkschnittstellen zu lauschen).
    • Port: 1514 (Standardalternativport für Syslog).
    • Klicken Sie auf "Save", um den Eingang zu aktivieren.
  4. Überprüfen Sie nach dem Speichern, ob der Eingang ordnungsgemäß funktioniert:

    • Suchen Sie nach einem grünen "Running"-Status neben Ihrem neuen Eingang – dies bedeutet, dass er aktiv ist.
    • Der Abschnitt "Local inputs" sollte jetzt "1 input running" anzeigen – dies bestätigt die erfolgreiche Einrichtung.
  5. Testen wir unseren neuen Eingang, indem wir eine Beispielprotokollnachricht senden. Führen Sie diesen Befehl in Ihrem Terminal aus:

echo "<14>$(date +'%b %d %H:%M:%S') localhost labex: Test syslog message" | nc -w1 -u 127.0.0.1 1514

Dieser Befehl erstellt eine Testprotokollnachricht mit Prioritätsstufe 14 (Info) und sendet sie an Graylog mithilfe von Netcat (nc). Die Nachricht enthält das aktuelle Datum und die Uhrzeit und identifiziert die Quelle als "localhost".

Sie haben Graylog nun erfolgreich so eingerichtet, dass es Syslog-Nachrichten empfängt. In den nächsten Schritten werden wir untersuchen, wie Sie komplexere Protokolle senden und durch diese suchen können, um wichtige Sicherheitsinformationen zu finden.

Beispielprotokolle (Logs) senden

In diesem Schritt werden Sie Beispielprotokollnachrichten generieren und über den zuvor konfigurierten Syslog-Eingang an Graylog senden. Diese praktische Übung hilft Ihnen, sicherzustellen, dass Ihre Protokollierungspipeline (Logging Pipeline) vor der Analyse von echten Daten ordnungsgemäß funktioniert. Wir werden Testprotokolle erstellen, die verschiedene Schweregrade und Anwendungstypen simulieren, was für das Verständnis, wie Graylog Protokolleinträge verarbeitet und kategorisiert, unerlässlich ist.

  1. Stellen Sie zunächst sicher, dass Ihre Graylog-Container laufen. Dieser Befehl überprüft den Status Ihrer Docker-Container – sie sollten den Status "Up" anzeigen, wenn alles richtig funktioniert:
cd ~/project/graylog
docker-compose ps
  1. Wir werden ein einfaches Bash-Skript erstellen, um Beispielprotokolle zu generieren. Das Skript wird strukturierte Protokollnachrichten erzeugen, die Zeitstempel, Schweregrade und Anwendungsnamen enthalten. Erstellen Sie eine neue Datei in Ihrem Projektverzeichnis:
nano ~/project/generate_logs.sh
  1. Fügen Sie der Datei folgenden Inhalt hinzu. Dieses Skript macht mehrere wichtige Dinge:
    • Es generiert 10 Protokollnachrichten mit zufälligen Schweregraden (0 - 7).
    • Es enthält korrekte Zeitstempel im Syslog-Format.
    • Es verwendet den Befehl 'nc', um Protokolle über UDP an Port 1514 zu senden.
    • Es fügt eine Verzögerung von 1 Sekunde zwischen den Nachrichten hinzu, um die Visualisierung zu verbessern:
#!/bin/bash
for i in {1..10}; do
  severity=$(((RANDOM % 8)))
  timestamp=$(date +'%b %d %H:%M:%S')
  echo "<$((severity + 8))>$timestamp localhost sample_app[$i]: Sample log message $i with severity $severity" | nc -w1 -u 127.0.0.1 1514
  sleep 1
done
  1. Machen Sie das Skript ausführbar, damit Sie es direkt ausführen können. Der chmod-Befehl ändert die Dateiberechtigungen:
chmod +x ~/project/generate_logs.sh
  1. Führen Sie das Skript aus, um Beispielprotokolle an Graylog zu senden. Sie sehen keine direkte Ausgabe im Terminal, da die Protokolle an Graylog's Syslog-Eingang gesendet werden:
~/project/generate_logs.sh
  1. Jetzt überprüfen wir, ob die Protokolle in Graylog angekommen sind. Befolgen Sie diese Schritte in der Weboberfläche:

    • Öffnen Sie Ihren Browser und gehen Sie zu http://127.0.0.1:9000.
    • Klicken Sie auf "Search" im oberen Menü, um eingehende Nachrichten anzuzeigen.
    • Ihre Beispielprotokolle sollten innerhalb weniger Sekunden erscheinen.
    • Versuchen Sie, nach "sample_app" zu suchen, um nur Ihre Testprotokolle zu filtern und anzuzeigen.
  2. (Optional) Für umfassendere Tests können Sie zusätzliche Protokollnachrichten senden, die gängige Serveranwendungen simulieren. Diese Beispiele zeigen verschiedene Protokollformate, die Graylog verarbeiten kann:

## Apache-ähnliches Webserverprotokoll
echo '<13>$(date +"%b %d %H:%M:%S") localhost apache: 127.0.0.1 - - [$(date +"%d/%b/%Y:%H:%M:%S %z")] "GET / HTTP/1.1" 200 45' | nc -w1 -u 127.0.0.1 1514

## SSH-Anmeldeversuch (häufiges Sicherheitsereignis)
echo '<12>$(date +"%b %d %H:%M:%S") localhost sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2' | nc -w1 -u 127.0.0.1 1514

Protokolldaten abfragen

In diesem Schritt werden wir untersuchen, wie Sie Protokolldaten in Graylog mithilfe seiner Abfragesprache (Query Language) suchen und analysieren können. Graylog's Suchfunktion hilft Ihnen, schnell relevante Protokolle in großen Datenmengen zu finden. Wir werden die zuvor gesendeten Beispielprotokolle verwenden, um diese Techniken zu üben.

  1. Greifen Sie zunächst auf die Graylog-Weboberfläche unter http://127.0.0.1:9000 zu (Benutzername: admin, Passwort: admin). Hier findet alle Protokollanalyse in Graylog statt.

  2. Grundlegende Suchoperationen:

    • Klicken Sie auf "Search" im oberen Menü, um auf die Suchoberfläche zuzugreifen.
    • Geben Sie in der Suchleiste source:localhost ein, um alle Protokolle von unserer Testquelle anzuzeigen. Dies zeigt, wie Sie Protokolle nach ihrem Quellfeld filtern können.
    • Versuchen Sie diese grundlegenden Abfragen, um verschiedene Suchmuster zu verstehen:
      message:"Sample log message"  ## Findet Protokolle, die den genauen Ausdruck enthalten
      severity:3                   ## Filtert nach Schweregrad 3
      source:localhost AND severity:[2 TO 4]  ## Kombiniert Bedingungen
  3. Zeitraumfilterung:

    • Klicken Sie auf den Zeitraumauswahlknopf (Standard ist "Last 5 minutes"). Protokolle sind zeitabhängig, daher hilft dies, sich auf relevante Zeiträume zu konzentrieren.
    • Ändern Sie auf "Last 15 minutes", um alle Ihre Testprotokolle anzuzeigen, da diese kürzlich gesendet wurden.
    • Versuchen Sie den "Absolute"-Zeitraum, um genaue Start- und Endzeiten anzugeben, wenn Sie präzise Zeitfenster benötigen.
  4. Feldanalyse:

    • Klicken Sie auf eine beliebige Protokollnachricht, um ihre Felder anzuzeigen. Jedes Protokoll enthält mehrere Felder mit unterschiedlichen Informationen.
    • Beachten Sie die automatisch extrahierten Felder wie source, severity usw. Diese werden erstellt, wenn Graylog die Protokolle verarbeitet.
    • Klicken Sie auf die Registerkarte "Quick values", um die Werteverteilungen anzuzeigen – dies zeigt, welche Werte am häufigsten in Ihren Protokollen auftreten.
  5. Eine Suche speichern:

    • Klicken Sie nach dem Ausführen einer nützlichen Abfrage auf "Save search". Dies ist hilfreich, wenn Sie dieselbe Suche später erneut verwenden müssen.
    • Benennen Sie sie "Sample Log Analysis" für eine einfache Identifizierung.
    • Diese wird in Ihrem Abschnitt "Saved searches" für zukünftigen Zugriff angezeigt.
  6. Einen Suchabfrageschnellzugriff erstellen:

    • Klicken Sie auf "Search" → "Edit search shortcuts". Schnellzugriffe sparen Zeit, wenn Sie bestimmte Filter häufig verwenden.
    • Fügen Sie einen neuen Schnellzugriff namens "High Severity" mit der Abfrage severity:[4 TO 7] hinzu.
    • Jetzt können Sie diese gefilterte Ansicht schnell über die Suchdropdown-Liste zugreifen.
  7. (Optional) Versuchen Sie diese erweiterten Abfragen, um komplexere Suchmuster zu erkunden:

    _exists_:severity AND severity:>3  ## Protokolle, die ein Schweregradfeld mit Wert >3 haben
    message:/(sample|test)/i           ## Regulärer Ausdruckssuche (Groß-/Kleinschreibung wird ignoriert)
    NOT severity:5                     ## Schließt Protokolle mit Schweregrad 5 aus

Ein Dashboard erstellen

In diesem letzten Schritt werden Sie ein Graylog-Dashboard erstellen, um die gesammelten Protokolldaten zu visualisieren und zu analysieren. Dashboards sind leistungsstarke Tools, die Sicherheitsanalysten dabei helfen, die Systemaktivität auf einen Blick zu überwachen, Muster zu erkennen und potenzielle Sicherheitsrisiken schnell zu identifizieren.

Beginnen wir damit, auf die Graylog-Weboberfläche zuzugreifen, wo wir unser Dashboard erstellen werden:

  1. Greifen Sie auf die Graylog-Weboberfläche unter http://127.0.0.1:9000 zu (Benutzername: admin, Passwort: admin).

  2. Erstellen Sie ein neues Dashboard:

    • Klicken Sie auf "Dashboards" im oberen Menü – hier werden alle Ihre Dashboards verwaltet.
    • Klicken Sie auf "Create dashboard" – wir beginnen mit einer neuen Visualisierung von Grund auf.
    • Benennen Sie es "Security Monitoring Dashboard" – wählen Sie einen beschreibenden Namen, der seinen Zweck widerspiegelt.
    • Klicken Sie auf "Create" – damit wird Ihr leeres Dashboard initialisiert.
  3. Fügen Sie Widgets (Komponenten) zu Ihrem Dashboard hinzu. Widgets sind einzelne Elemente, die spezifische Datenvisualisierungen anzeigen:

    a. Nachrichtenanzahl-Diagramm (zeigt, wie viele Protokolle im Laufe der Zeit eingehen):

    • Klicken Sie auf "Add widget" → "Message Count".
    • Konfigurieren Sie es wie folgt:
      • Titel: "Log Volume" – benennt das Widget für leichte Referenzierung.
      • Zeitraum: "Last 15 minutes" – zeigt die jüngste Aktivität.
      • Intervall: "Minute" – gruppiert die Daten pro Minute für klare Trends.
    • Klicken Sie auf "Save".

    b. Häufige Werte (zeigt die häufigsten Werte in einem Feld):

    • Klicken Sie auf "Add widget" → "Quick Values".
    • Konfigurieren Sie es wie folgt:
      • Titel: "Top Sources" – zeigt, welche Systeme Protokolle generieren.
      • Feld: "source" – das Protokollfeld, das Ursprungsinformationen enthält.
      • Daten anzeigen als: "Pie chart" – visualisiert die Anteile klar.
    • Klicken Sie auf "Save".

    c. Feldstatistik (zusammenfasst numerische Daten):

    • Klicken Sie auf "Add widget" → "Field Statistics".
    • Konfigurieren Sie es wie folgt:
      • Titel: "Severity Levels" – überwacht, wie schwerwiegend die protokollierten Ereignisse sind.
      • Feld: "severity" – das Feld, das Schweregradbewertungen enthält.
      • Daten anzeigen als: "Bar chart" – vergleicht die Werte nebeneinander.
    • Klicken Sie auf "Save".
  4. Ordnen Sie Ihr Dashboard für optimale Sichtbarkeit an:

    • Ziehen Sie die Widgets per Drag-and-Drop an die gewünschten Positionen – platzieren Sie verwandte Widgets in der Nähe zueinander.
    • Vergrößern oder verkleinern Sie die Widgets, indem Sie an ihren Rändern ziehen – machen Sie wichtige Visualisierungen größer.
    • Klicken Sie auf "Done editing", wenn Sie fertig sind – dies fixiert Ihr Layout.
  5. Speichern Sie Ihr Dashboard:

    • Klicken Sie auf "Save dashboard" oben rechts – damit wird Ihre Arbeit gespeichert.
    • Fügen Sie eine Beschreibung hinzu: "Dashboard for monitoring security logs" – erklärt den Zweck des Dashboards.
    • Klicken Sie auf "Save".
  6. (Optional) Setzen Sie es aus Bequemlichkeit als Standard:

    • Klicken Sie auf das Sternsymbol neben dem Namen Ihres Dashboards.
    • Dadurch wird es Ihre Standardansicht beim Anmelden, was Ihnen Zeit bei täglichen Überprüfungen spart.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Graylog mithilfe von Docker Compose bereitstellen können und wie Sie essentielle Dienste wie MongoDB und Elasticsearch mit persistentem Speicher konfigurieren. Sie haben erfolgreich den Stack gestartet, auf die Weboberfläche zugegriffen und die Funktionalität der Container überprüft, um eine zentrale Protokollierungsplattform aufzubauen.

Das Lab hat Sie durch die Konfiguration von Protokolleingängen geführt, das Testen mit Beispieldaten und die Nutzung von Graylog's Abfragefunktionen für die Protokollanalyse. Sie haben auch ein anpassbares Dashboard erstellt, um Einblicke in die Protokolle zu visualisieren, was die praktischen Anwendungen von Graylog für die Überwachung und Fehlerbehebung zeigt.