
Zeek による Community ID フローハッシュのサポート。
この Zeek パッケージは、Community ID フローハッシュのサポートを提供します。これは、ネットワークモニターでトラフィックフローにラベルを付ける標準化された方法です。このパッケージを読み込むと、conn.log に community_id 文字列フィールドが追加されます。
メモ
Zeek 6 以降のバージョンには Community ID のサポートが含まれています。 これらの Zeek バージョンを使用する場合、このパッケージは必要ありません。 詳細については、ドキュメント を参照してください。
このパッケージは、ハッシュロジックを実装するために BiF を実装しています。そのためバイナリコンパイルが必要であり、Zeek プラグインでもあります。以下は、結果として得られる 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
このパッケージは、接続コンテキストを持つ notice について、Zeek の notice.log で Community ID をサポートします。この機能を使用する場合は、local.zeek または同様のサイトローカル設定に次の行を追加してください:
@load zeek-community-id/notice
この行は、Community ID パッケージ自体が読み込まれていない場合は効果がありません。この追加スクリプト方式により、notice.log に ID を不要とするユーザーは、常に未使用の追加列でログが煩雑になることを防げます。
Community ID 仕様は現在、Zeek がフローレベルの状態を追跡しないいくつかのプロトコル構成のサポートを想定しています。これは、Zeek のアナライザがそのようなトラフィックをどう処理すればよいのか分からないためです。そのようなフローでは、Zeek はパッケージが使用する接続関連イベントを決してトリガーしないため、いずれにせよ conn.log に出力はありません。(Zeek がフローレベルで追跡するがプラグインがサポートしないプロトコルがある場合、報告される ID は空になります。)現在、IPv4 または IPv6 上の TCP と UDP、および ICMPv4 と ICMPv6 をサポートしています。その他のトランスポート層プロトコル(SCTP など)、またはサポートされていないトランスポート層プロトコルに関する一般的な IP アドレスペアフローはサポートして_いません_。
パッケージ名は zeek-community-id、プラグイン名は Corelight::CommunityID です。パッケージの設定オプションは、対応する Zeek スクリプト で確認できます。
Community ID パッケージは、2.6.4 以降のすべての Zeek バージョンで動作します。その後、Zeek のコードベースは大幅に変更されたため、このパッケージは特定の Zeek バージョン範囲をサポートする互換性ブランチを提供し、読みやすいコードとインストールおよびブランチ管理の容易さのバランスを取っています。
zeek/x.y ブランチと master ブランチでは、git タグが Community ID リリースを識別します。たとえば、3.1.0 は zeek/3.1 ブランチの最初のリリースであり、3.1 系列の任意の Zeek で動作します。Zeek 3.1 系列向けの次の Community ID リリースは 3.1.1 と呼ばれ、このブランチにも置かれ、その後 3.1.2 などと続きます。(したがって、これはセマンティックバージョニングではありません。)
各ブランチはまた、zkg.meta に Zeek バージョンの互換性ウィンドウを宣言しているため、互換性のない Zeek バージョンと組み合わせた場合はインストールされません。たとえば、master ブランチは現在、上限なしで少なくとも Zeek 3.2.0 を必要とします。
Zeek バージョン、git タグ、git ブランチの対応関係の概要は次のとおりです:
| Zeek バージョン | Git タグ | Git ブランチ |
|---|---|---|
| 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 |
このパッケージには、プラグインの読み込みを検証し、同梱のテスト pcap を Zeek で処理して、ベースライン化された Zeek コンソール出力を確認する btest が含まれています。これらは、tests ディレクトリで btest -c btest.cfg を実行することで実行できます。
質問やフィードバックについては、Zeek メーリングリスト または Zeek Slack までお問い合わせください。GitHub の issue と PR も歓迎します。