So installierst du das Zeek Network Security Monitoring Tool auf Ubuntu 24.04

Zeek (früher Bro) ist eine kostenlose und quelloffene Plattform zur Überwachung der Netzwerksicherheit. Es ist ein leistungsstarker passiver Netzwerkverkehrsanalysator, der verdächtige oder bösartige Aktivitäten untersucht. Zeek kann als Netzwerksicherheitsmonitor (NSM) eingesetzt werden und unterstützt eine breite Palette von Verkehrsanalysen, von der Sicherheitsdomäne bis hin zur Leistungsmessung und Fehlerbehebung.

In diesem Tutorial lernst du, wie du das Netzwerksicherheitsmonitoring-Tool Zeek auf dem Ubuntu 24.04 Server installierst. Außerdem erfährst du, wie du Zeek im Clustermodus laufen lässt, wie du das Zeek-Protokoll mit dem Befehl „zeek-cut“ auswertest und wie du das Zeek-JSON-Protokoll mit dem Dienstprogramm „jq“ generierst und auswertest.

Voraussetzungen

Bevor du beginnst, solltest du sicherstellen, dass du Folgendes hast:

  • Einen Ubuntu 24.04 Server
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten

Installieren von Zeek

Zeek ist ein Unix-ähnliches Betriebssystem zur Überwachung der Netzwerksicherheit. Es kann auf verschiedene Arten installiert werden. In diesem Beispiel installierst du Zeek auf dem Ubuntu 24.04 Server mit dem APT-Paketmanager vom OpenSUSE Build Service.

Führe zunächst den folgenden Befehl aus, um das Zeek-Repository zu deinem Ubuntu-System hinzuzufügen.

echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list

Lade nun den GPG-Schlüssel für das Zeek-Repository herunter und füge ihn mit dem unten stehenden Befehl hinzu.

curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_24.04/Release.key | \
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null

Sobald der Zeek-GPG-Schlüssel und das Repository hinzugefügt sind, führe den Befehl„apt“ aus, um dein Ubuntu-Paket zu aktualisieren.

sudo apt update

Repo hinzufügen

Du kannst nun den Befehl„apt“ ausführen, um das Paket„zeek“ zu überprüfen. Du wirst mehrere Versionen von Zeek sehen.

sudo apt search zeek
sudo apt-cache policy zeek

Scheck zeek

Als nächstes installierst du Zeek mit dem folgenden„apt„-Befehl. In diesem Beispiel installierst du Zeek LTS.

sudo apt install zeek

Gib„Y“ ein, um die Installation zu bestätigen.

zeek installieren

Nachdem die Installation abgeschlossen ist, füge das Verzeichnis„/opt/zeek/bin“ über die Datei„~/.bashrc“ zum Systempfad hinzu. Lade dann die Datei„~/.bashrc“ erneut, um deine Änderungen zu übernehmen. Nun kannst du die Zeek-Befehlszeile über dein Terminal ausführen.

echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
source ~/.bashrc

Zum Schluss führst du den Befehl„zeek“ aus, um die Zeek-Version und die grundlegenden Befehle und Optionen zu überprüfen.

zeek --version
zeek --help

Du wirst eine Ausgabe wie die folgende sehen:

zeek Hilfe

Zeek einrichten

Nachdem Zeek installiert ist, musst du festlegen, wie Zeek in deiner Infrastruktur laufen soll. Du kannst wählen, ob du Zeek im Einzelplatz- oder im Clustermodus betreiben willst. Für große Einsätze kannst du den Clustermodus verwenden, bei dem die Zeek-Komponenten auf separaten Servern installiert werden. Für diesen Test werden wir Zeek im Clustermodus mit einem einzelnen Server einrichten und ausführen.

Überprüfe die IP-Adresse deines Servers mit dem folgenden„ip„-Befehl. In diesem Beispiel haben wir einen Ubuntu-Server mit der IP-Adresse„192.168.10.60„.

ip a

Öffne die Zeek-Netzwerkkonfiguration„/opt/zeek/etc/networks.cfg“ mit dem Editor„nano„.

sudo nano /opt/zeek/etc/networks.cfg

Gib dein Netzwerk-Subnetz der Zielserver wie folgt ein.

192.168.10.0/24 Local Network

Speichere die Datei und beende den Editor, wenn du fertig bist.

Öffne nun die Zeek-Knotenkonfiguration„/opt/zeek/etc/node.cfg“ mit„nano„.

sudo nano /opt/zeek/etc/node.cfg

Kommentiere die folgenden Zeilen, um den Standalone-Modus von Zeek zu deaktivieren. Standardmäßig läuft Zeek im Standalone-Modus mit dem Standard„localhost“ und der Netzwerkschnittstelle„eth0„.

#[zeek]
#type=standalone
#host=localhost
#interface=eth0

Füge die folgende Konfiguration ein, um Zeek im Clustermodus auf einem einzelnen Server zu betreiben. Achte darauf, dass du die IP-Adresse mit der IP-Adresse deines Ubuntu-Servers abgleichst. Wie du unten sehen kannst, hat der Zeek-Cluster-Modus mehrere Komponenten wie Logger, Manager, Proxy und Worker.

# logger
[zeek-logger]
type=logger
host=192.168.10.60

# manager
[zeek-manager]
type=manager
host=192.168.10.60

# proxy
[zeek-proxy]
type=proxy
host=192.168.10.60

# worker
[zeek-worker]
type=worker
host=192.168.10.60
interface=eth0

# worker localhost
[zeek-worker-lo]
type=worker
host=localhost
interface=lo

Wenn du fertig bist, speichere die Datei und beende den Editor.

Als Nächstes führst du den Befehl„zeekctl“ aus, um deine Zeek-Syntax zu überprüfen. Wenn du alles richtig konfiguriert hast, bekommst du die Meldung„scripts are ok„.

zeekctl check

Zeek-Konfiguration prüfen

Führe nun den Befehl„deploy“ aus, um deine Zeek-Installation zu starten. Damit werden der Zeek-Logger, der Manager, der Proxy und die Worker gestartet.

zeekctl deploy

Zeek einsetzen

Du kannst jede Zeek-Komponente mit dem unten stehenden Befehl überprüfen.

zeekctl status

In der unten stehenden Ausgabe kannst du sehen, dass jede Zeek-Komponente läuft. Das bedeutet, dass die Einrichtung des Zeek-Clusters mit einem Knoten erfolgreich war.

Zeek-Status prüfen

Zeek-cut zum Parsen von Zeek-Logs verwenden

Nachdem du Zeek installiert und eingesetzt hast, werden die Logdateien deines Netzwerks im Verzeichnis„/opt/zeek/logs/current“ erstellt. Es gibt mehrere Zeek-Logdateien, die du kennen und im Auge behalten musst. In diesem Abschnitt erfährst du, wie du das Dienstprogramm „zeek-cut“ verwendest, um Logs im TSV-Format (Tab Separated Value) zu erstellen.

Überprüfe das Zeek Logs-Verzeichnis„/opt/zeek/logs/current“ mit dem Befehl „ls“ unten.

ls -ah /opt/zeek/logs/current/

Du wirst mehrere Logdateien sehen, wie zum Beispiel :

  • conn.log: Das Verbindungsprotokoll sowohl für TCP als auch für UDP. Diese Logdatei enthält die wichtigsten Informationen wie Zeitstempel, Verbindungsdauer, Service und vieles mehr
  • dns.log: Die DNS (Domain Name System) Protokolldatei
  • http.log.log: Das HyperText Transfer Protocol (HTTP) Protokoll
  • ssh.log: Das Secure Shell (SSH)-Protokoll zur Verfolgung von SSH-Verbindungen.
  • ssl.log: Das Secure Socket Layer (SSL)-Protokoll, das auch das HTTPS-Protokoll enthält

Protokolle zeek

Wechsle nun in das Verzeichnis„/opt/zeek/logs/current“ und führe den Befehl„cat“ aus, um die Zeek-Protokolle anzuzeigen, und leite die Ausgabe mit dem Befehl„zeek-cut“ weiter, um sie in das TSV-Format (Tab Separated Value) zu parsen.

cd /opt/zeek/logs/current/

cat dns.log | zeek-cut id.orig_h query answers
cat dns.log | zeek-cut query answers id.orig_h

In diesem Beispiel zeigen wir dir die Werte der Felder„id.orig_h“,„query“ und„answers„.

zeek log

Du kannst auch den Befehl„zeek-cut“ wie den folgenden verwenden, um die TSV-Protokolle zu verarbeiten und eine ähnliche Ausgabe zu erhalten.

zeek-cut id.orig_h query answers < dns.log

zeek-cut log

Zeek-Ausgabe in JSON einrichten

Zeek unterstützt mehrere Protokollformate, darunter TSV und JSON. In diesem Abschnitt erfährst du, wie du ein Zeek-Protokoll im JSON-Format erstellst. Anschließend erfährst du, wie du JSON-Logs mit der Befehlszeile „jq“ analysieren kannst, damit du deine Logs einfach lesen kannst.

Öffne die Zeek-Konfiguration „/opt/zeek/share/zeek/site/local.zeek“ mit dem folgenden „nano“-Editor.

sudo nano /opt/zeek/share/zeek/site/local.zeek

Entferne das Kommentarzeichen in der folgenden Zeile, um die Ausgabe des Logs in JSON zu aktivieren.

@load policy/tuning/json-logs

Speichere die Datei und beende den Editor.

Führe nun den Befehl„zeekctl“ aus, um deine Änderungen anzuwenden und zu verteilen. Sobald der Prozess abgeschlossen ist, wird Zeek das JSON-Protokollformat erzeugen.

zeekctl deploy

Du kannst die folgende Ausgabe während der Zeek-Bereitstellung sehen.

Zeek einsetzen

Als Nächstes führst du den Befehl„cat“ aus, um die Zeek-Logdatei zu überprüfen. Du wirst sehen, dass das Zeek-Protokoll jetzt im JSON-Format vorliegt.

cat /opt/zeek/logs/current/dns.log

Analysieren des Zeek JSON-Formats mit jq

Installiere das Paket„jq“ mit dem unten stehenden „apt“-Befehl.

sudo apt install jq -y

Sobald die Installation abgeschlossen ist, wechsle mit dem Befehl „cd“ in das Verzeichnis „/opt/zeek/logs/current“.

cd /opt/zeek/logs/current/

Um die Logs im JSON-Format zu analysieren, führst du den unten stehenden Befehl „jq“ aus.

jq . dns.log

json log parsing mit jq

Wenn du eine kompakte Ausgabe haben möchtest, verwende die Option „-c“ wie im Folgenden beschrieben:

jq . -c dns.log

Schließlich kannst du mit dem unten stehenden Befehl „jq“ auch Dateien mit JSON-Logdateien angeben.

jq -c '[."id.orig_h", ."query", ."answers"]' dns.log

jq show specific key-value

Fazit

Herzlichen Glückwunsch! Du hast die Installation des Zeek Network Monitoring Tools auf dem Ubuntu 24.04 Server abgeschlossen. Du hast gelernt, wie du den Zeek-Cluster-Modus auf einem einzelnen Knoten/Server einsetzt, wie du das Zeek-Protokoll mit dem Dienstprogramm„zeek-cut“ analysierst, um das TSV-Format (Tab Separated Value) zu erzeugen, wie du das Zeek-Protokoll im JSON-Format erzeugst und wie du das JSON-Protokoll mit dem Dienstprogramm „jq“ analysierst. Von hier aus kannst du zum nächsten Schritt übergehen, indem du dein JSON-Protokoll oder die Zeek-Protokolle an ein zentrales Logging-System wie Graylog und ELK/EFK Stack sendest.

Das könnte dich auch interessieren …