So installierst du das Zeek Network Security Monitoring Tool unter Debian 12

Zeek (früher Bro) ist eine kostenlose und quelloffene Plattform zur Überwachung der Netzwerksicherheit. Es ist ein leistungsfähiger passiver Netzwerkverkehrsanalysator, mit dem verdächtige oder bösartige Aktivitäten untersucht werden können. 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 dieser Anleitung zeige ich dir Schritt für Schritt, wie du Zeek Network Security Monitoring auf einem Debian 12 Server installierst. Du installierst Zeek und konfigurierst Zeek im Clustermodus. Dann lernst du, wie du das TSV-Protokollformat von Zeek über die Befehlszeile zeek-cut analysieren kannst. Außerdem lernst du, wie du die Zeek-Logausgabe als JSON einrichtest und das Zeek-JSON-Log über die jq-Befehlszeile parst.

Voraussetzungen

Bevor du beginnst, solltest du sicherstellen, dass du folgende Voraussetzungen erfüllst:

  • Einen Debian 12 Server.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.

Hinzufügen des Repositorys

Zeek kann auf einem Linux-System installiert werden, indem du es manuell kompilierst oder ein Repository eines Drittanbieters verwendest. In dieser Anleitung wirst du Zeek mit Hilfe eines Repositorys eines Drittanbieters über die APT installieren.

Führe zunächst den folgenden Befehl aus, um den GPG-Schlüssel und das Repository für das Zeek-Paket hinzuzufügen.

curl -fsSL https://download.opensuse.org/repositories/security:zeek/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
echo 'deb http://download.opensuse.org/repositories/security:/zeek/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list

Aktualisiere nun dein Debian-Repository, indem du den folgenden Befehl apt update ausführst.

sudo apt update

Repo hinzufügen

Zeek installieren

Nachdem du das Zeek-Repository hinzugefügt hast, kannst du jetzt mit der Installation von Zeek auf deinem Debian-Rechner beginnen. Im folgenden Schritt installierst du Zeek und fügst das Zeek-Installationsverzeichnis zum Systempfad hinzu.

Führe den Befehl apt install aus, um Zeek auf deinem Debian-Rechner zu installieren. Es gibt mehrere Versionen von Zeek, z. B. die neueste Version, LTS und nightly. In diesem Beispiel wirst du zeek-lts installieren.

sudo apt install zeek-lts

Gib y ein, um mit der Installation fortzufahren.

zeek installieren

Nach der Installation von zeek, die standardmäßig in das Zielverzeichnis /opt/zeek erfolgt, führst du folgenden Befehl aus Führe den folgenden Befehl aus, um das Verzeichnis /opt/zeek/bin über die Datei ~/.bashrc zum Systempfad hinzuzufügen.

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

Lade dann die Datei ~/.bashrc neu und überprüfe die System-PATH-Variable mit dem folgenden Befehl. Du solltest das Verzeichnis /opt/zeek/bin im Systempfad sehen.

source ~/.bashrc
echo $PATH

PFAD einrichten

Zuletzt überprüfst du Zeek, indem du den folgenden Befehl ausführst. Damit überprüfst du den Speicherort der Zeek-Binärdatei, überprüfst die Zeek-Version und gibst die Zeek-Hilfemeldung aus.

which zeek
zeek --version
zeek --help

In der folgenden Ausgabe solltest du sehen, dass Zeek 5.0 unter /usr/zeek/bin/zeek installiert ist. Außerdem solltest du Optionen für den Zeek-Befehl haben.

Zeek-Version prüfen

Zeek konfigurieren

Nachdem Zeek installiert ist, musst du im nächsten Schritt die Installation von Zeek konfigurieren. Du kannst Zeek in verschiedenen Modi ausführen, z. B. im Kommandozeilenmodus, im Einzelplatzmodus und im Clustermodus.

Im folgenden Beispiel erfährst du, wie du Zeek im Clustermodus mit einem einzelnen Server betreiben kannst.

Bevor du Zeek konfigurierst, führe den folgenden Befehl aus, um deine Netzwerkschnittstellen und IP-Adresse zu überprüfen.

ip a

Du solltest die Liste der verfügbaren Schnittstellen auf deinem System mit detaillierten Informationen zu einer Server-IP-Adresse wie die folgende sehen:

ip prüfen

Öffne die Netzwerkkonfiguration für Zeek /opt/zeek/etc/networks.cfg mit dem folgenden nano-Editor-Befehl.

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

Füge dein internes Netzwerk-Subnetz wie folgt ein. Du kannst auch mehrere Subnetze einfügen.

10.0.0.0/8          Private IP space
172.16.0.0/12       Private IP space
192.168.0.0/16      Private IP space

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

Öffne nun die Zeek-Konfiguration /opt/zeek/etc/node.cfg mit dem folgenden nano-Editor-Befehl.

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

Standardmäßig läuft Zeek im Standalone-Modus. Füge das # hinzu, um den Standalone-Modus von Zeek zu deaktivieren.

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

Füge die folgende Konfiguration ein, um Zeek im Clustermodus mit einem einzelnen Server zu betreiben. Achte darauf, dass du die IP-Adresse des Servers mit deinen Daten abänderst.

Mit der folgenden Konfiguration führst du Zeek im Clustermodus aus, der aus mehreren Komponenten besteht, z. B. zeek-logger, zeek-manager, zeek-proxy und zeek-worker.

# logger
[zeek-logger]
type=logger
host=192.168.10.15
# manager
[zeek-manager]
type=manager
host=192.168.10.15

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

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

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

Speichere und schließe die Feineinstellung, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um auf die Zeek-Kontrollshell zuzugreifen.

zeekctl

Führe den Befehl check aus, um deine Zeek-Konfiguration zu überprüfen.

check

Wenn alles gut läuft, solltest du sehen, dass alle Komponenten des Zeek-Skripts in Ordnung sind:

Zeek-Konfiguration prüfen

Als Nächstes führst du den Befehl deploy aus, um Zeek auf deinem Rechner zu starten und auszuführen. Der Befehl deploy entspricht dem Befehl install und start in Zeek.

deploy

Du solltest sehen, dass jede Komponente des Zeek-Clusters gestartet wird:

Zeek einsetzen

Überprüfe abschließend alle Komponenten deines Zeek-Clusters, indem du den folgenden Statusbefehl ausführst.

status

Wenn deine Installation erfolgreich war, solltest du sehen, dass alle Komponenten des Zeek-Clusters laufen.

Zeek-Status prüfen

Gib exit ein, um dich von der Zeek-Kontrollshell abzumelden.

Zu diesem Zeitpunkt läuft der Zeek-Cluster bereits. Er überwacht auch die Zielnetzwerkschnittstelle und das Subnetz und erstellt Protokolldateien im Verzeichnis /opt/zeek/logs.

Anleitung zu den Zeek-Protokollen

Nachdem du Zeek konfiguriert hast, kannst du im nächsten Schritt die von Zeek erzeugten Protokolldateien im Verzeichnis /opt/zeek/logs/current einsehen. Standardmäßig erzeugt Zeek Logdateien im TSV-Format (Tab-getrennte Werte).

Wenn Zeek läuft, überwacht es die Zielnetzwerkschnittstelle auf deinem System und erstellt Protokolldateien im Verzeichnis /opt/zeek/logs/current/.

Verschiebe dein Arbeitsverzeichnis in das Verzeichnis /opt/zeek/logs/current/ und führe den unten stehenden Befehl ls aus.

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

Du solltest mehrere von Zeek generierte Logdateien sehen. Es kann sein, dass einige Protokolldateien auf deinem System fehlen, weil der Zieldienst nicht verfügbar ist.

Zeek-Logdateien prüfen

Nachfolgend findest du einige wichtige Protokolldateien, die du kennen musst:

  • conn.log: Das Verbindungsprotokoll sowohl für TCP als auch für UDP. Diese Protokolldatei enthält die wichtigsten Informationen wie Zeitstempel, Verbindungsdauer, Dienst und vieles mehr.
  • dns.log: Das DNS-Protokoll (Domain Name System).
  • http.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.

Analyse der Zeek-Logs TSV (Tab-getrennte Werte) über Zeek-cut

Standardmäßig erzeugt Zeek Logdateien im TSV-Format (Tab-separated values). Im folgenden Schritt analysierst du die Zeek-Logdateien im TSV-Format über die Befehlszeile zeek-cut.

Führe den folgenden cat-Befehl aus, um die Logdatei dns.log anzuzeigen.

cat dns.log

In der folgenden Ausgabe solltest du mehrere Felder wie ts, uid, id.orig_p, id.resp_h, id.resp_p, proto und viele mehr sehen.

cat log files

Als Nächstes führst du den folgenden Befehl aus, um das TSV-Log-Format von Zeek zu parsen. Damit sendest du die Ausgabe über die Pipe „|“ an den Befehl zeek-cut.

In diesem Beispiel nimmst du drei Felder aus der Logdatei, wie id.orig_h, query und answers.

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

Du solltest eine ähnliche Ausgabe wie die folgende sehen:

zeek-cut verwenden

Du kannst auch das Redirect-Symbol verwenden, um die TSV-Logdatei über zeek-cut zu verarbeiten, wie im folgenden Befehl.

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

Die Ausgabe sollte ähnlich sein.

zeek-cut verwenden

Konfigurieren der Zeek-Logdateien in JSON

Im folgenden Schritt wirst du Zeek so konfigurieren, dass es Logdateien im JSON-Format erzeugt. Dazu musst du die Datei local.zeek ändern und das Zeek-Skript tuning/json-logs in deine Zeek-Installation laden.

Öffne die Datei /opt/zeek/share/zeek/site/local.zeek mit dem folgenden nano-Editor-Befehl.

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

Füge die folgende Konfiguration am Ende der Zeile ein.

@load tuning/json-logs

Speichere und schließe die Datei, wenn du fertig bist.

Führe nun den unten stehenden Befehl zeekctl aus, um deine zeek-Installation neu zu verteilen.

zeekctl deploy

Du solltest sehen, dass zeek jetzt neu installiert wird. Sobald der Prozess abgeschlossen ist, erstellt zeek JSON-Logdateien.

Zeek Deploy neu starten

Bevor du das JSON-Protokollformat analysierst, installiere jq auf deinem Rechner, indem du den folgenden apt-Befehl ausführst.

sudo apt install jq -y

jq installieren

Sobald jq installiert ist, wechsle in das Verzeichnis /opt/zeek/logs/current/. Das Verzeichnis /opt/zeek/logs/current enthält die Logdateien von zeek im JSON-Format und wird automatisch von zeek erstellt.

cd /opt/zeek/logs/current/

Führe den Befehl cat aus, um die Logdatei dns anzusehen.

cat dns.log

Die JSON-Ausgabe wird auf deinem Terminalbildschirm angezeigt.

zeek json log

Als Nächstes führst du den Befehl jq aus, um das JSON-Protokoll dns.log zu verarbeiten.

jq . dns.log

json log parsen

Oder du kannst dir das kompakte Format mit der Option -c wie folgt anzeigen lassen.

jq . -c dns.log

jq-Ausgabe als Spalte

Zum Schluss führst du den folgenden Befehl aus, um einen bestimmten Schlüssel/Wert aus der JSON-Datei dns.log anzuzeigen.

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

Du solltest eine Ausgabe wie die folgende sehen.

Bestimmtes Feld prüfen jq

Fazit

Herzlichen Glückwunsch! Du hast jetzt das Netzwerküberwachungsprogramm Zeek erfolgreich auf dem Debian 12 Server installiert. Du hast Zeek installiert, Zeek im Clustermodus laufen lassen, einige Zeek-Logdateien kennengelernt und gelernt, wie du Zeek-Logdateien im TSV-Format mit zeek-cut analysieren kannst. Außerdem hast du das Zeek-Log in JSON geändert und gelernt, wie man das JSON-Format des Zeek-Logs mit jq-Befehlszeilen auswertet.

Das könnte dich auch interessieren …