
Zeek support for Community ID flow hashing.
Dieses Zeek-Paket bietet Unterstützung für Community ID Fluss-Hashing, eine standardisierte Methode zur Kennzeichnung von Verkehrsflüssen in Netzwerkmonitoren. Wenn das Paket geladen ist, fügt es ein community_id-Zeichenkettenfeld zu conn.log hinzu.
Hinweis
Zeek 6 und spätere Versionen enthalten Community-ID-Unterstützung. Sie benötigen dieses Paket bei Verwendung dieser Zeek-Versionen nicht mehr. Weitere Einzelheiten finden Sie in der Dokumentation.
Dieses Paket implementiert ein BiF zur Umsetzung der Hashing-Logik und benötigt daher eine binäre Kompilierung, ist also auch ein Zeek-Plugin. Hier ist ein Beispiel für ein daraus resultierendes conn.log:
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path conn
#open 2018-01-31-13-06-56
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p proto service duration orig_bytes resp_bytes conn_state local_orig local_resp missed_bytes history orig_pkts orig_ip_bytes resp_pkts resp_ip_bytes tunnel_parents community_id
#types time string addr port addr port enum string interval count count string bool bool count string count count count count set[string] string
1071580904.891921 CPcWB54kqKkvkdNEXe 128.232.110.120 34855 66.35.250.204 80 tcp - 0.311104 496 1731 SF - - 2227 ShADadfF 6 816 6 2051 - 1:LQU9qZlK+B5F3KDmev6m5PMibrg=
#close 2018-01-31-13-06-56
Das Paket unterstützt Community ID in der notice.log von Zeek für Notices mit einem Verbindungskontext. Wenn Sie diese Funktionalität nutzen möchten, platzieren Sie die folgende Zeile in Ihrer local.zeek- oder ähnlichen standortspezifischen Konfiguration:
@load zeek-community-id/notice
Diese Zeile hat keine Wirkung, wenn das Community-ID-Paket selbst nicht geladen ist. Dieser Zusatzskript-Ansatz stellt sicher, dass Benutzer, die die ID nicht in ihrer notice.log haben möchten, nicht mit einer zusätzlichen Spalte belastet werden, die immer ungenutzt ist.
Die Community-ID-Spezifikation sieht derzeit Unterstützung für eine Reihe von Protokollkonstellationen vor, für die Zeek keinen Zustand auf Flussebene verfolgt, weil seine Analyzer nichts mit dem Datenverkehr anzufangen wüssten. Für solche Flüsse löst Zeek niemals die verbindungsbezogenen Ereignisse aus, die das Paket verwendet, daher gibt es ohnehin keine Ausgabe in conn.log. (Wenn es Protokolle gäbe, die Zeek auf Flussebene verfolgt, die das Plugin aber nicht unterstützt, wäre die gemeldete ID leer.) Wir unterstützen derzeit TCP und UDP über IPv4 oder IPv6 sowie ICMPv4 und ICMPv6. Wir unterstützen nicht andere Transportschicht-Protokolle (wie SCTP) oder allgemeine IP-Adresspaar-Flüsse für nicht unterstützte Transportschicht-Protokolle.
Der Name des Pakets lautet zeek-community-id; der Name des Plugins lautet Corelight::CommunityID. Sie können die Konfigurationsoptionen des Pakets im entsprechenden Zeek-Skript einsehen.
Das Community-ID-Paket funktioniert mit jeder Zeek-Version ab 2.6.4. Da sich die Zeek-Codebasis seitdem erheblich verändert hat, bietet das Paket Kompatibilitätszweige, die bestimmte Zeek-Versionsbereiche unterstützen und eine Balance zwischen lesbarem Code und einfacher Installation sowie Zweigverwaltung herstellen.
Auf den zeek/x.y- und master-Zweigen kennzeichnen Git-Tags die Community-ID-Releases. Beispielsweise ist 3.1.0 die erste Version auf dem zeek/3.1-Zweig und funktioniert mit jedem Zeek der 3.1-Serie. Die nächste Community-ID-Version für die Zeek-3.1-Serie wird 3.1.1 heißen und ebenfalls auf diesem Zweig leben, gefolgt von 3.1.2 usw. (Daher ist dies keine semantische Versionierung.)
Jeder Zweig deklariert außerdem ein Zeek-Versionskompatibilitätsfenster in zkg.meta, sodass eine Installation bei einer inkompatiblen Zeek-Version unterbleibt. Beispielsweise erfordert der master-Zweig derzeit mindestens Zeek 3.2.0, ohne Obergrenze.
Hier ist eine Übersicht, wie Zeek-Versionen, Git-Tags und Git-Zweige zusammenpassen:
| Zeek-Version | Git-Tag | Git-Zweig |
|---|---|---|
| 2.6.4 - 3.0.x | 3.0.y | zeek/3.0 |
| 3.1.x | 3.1.y | zeek/3.1 |
| 3.2.x - master | 3.2.y | master |
Das Paket enthält btests, die das Laden des Plugins verifizieren und die enthaltenen Test-Pcaps durch Zeek laufen lassen, um die als Baseline hinterlegte Zeek-Konsolenausgabe zu prüfen. Sie können diese ausführen, indem Sie im tests-Verzeichnis btest -c btest.cfg eingeben.
Bei Fragen und Feedback wenden Sie sich bitte an die Zeek-Mailingliste oder den Zeek-Slack. Github-Issues und PRs sind willkommen.