ネットワークセキュリティ · 1 min read · Sep 12, 2025

Ubuntu 24.04にZeekネットワークセキュリティ監視ツールをインストールする方法

Zeek(以前はBro)は、ネットワークセキュリティ監視のための無料でオープンソースのプラットフォームです。これは、疑わしいまたは悪意のある活動を調査する強力なパッシブネットワークトラフィックアナライザーです。Zeekはネットワークセキュリティモニター(NSM)として使用でき、セキュリティドメインからパフォーマンス測定やトラブルシューティングまで、幅広いトラフィック分析をサポートしています。

このチュートリアルでは、Ubuntu 24.04サーバーにZeekネットワークセキュリティ監視ツールをインストールする方法を学びます。また、Zeekをクラスターモードで実行する方法、’zeek-cut’コマンドでZeekログを解析する方法、’jq’ユーティリティでZeek JSONログを生成および解析する方法も学びます。

前提条件

始める前に、次のものを用意してください:

  • Ubuntu 24.04サーバー
  • 管理者権限を持つ非ルートユーザー

Zeekのインストール

ZeekはUnix系オペレーティングシステム用のネットワークセキュリティ監視ツールです。複数の方法でインストールできます。この例では、OpenSUSEビルドサービスからAPTパッケージマネージャを使用して、Ubuntu 24.04サーバーにZeekをインストールします。

まず、以下のコマンドを実行して、ZeekリポジトリをUbuntuシステムに追加します。

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

次に、以下のコマンドでZeekリポジトリのGPGキーをダウンロードして追加します。

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

ZeekのGPGキーとリポジトリが追加されたら、以下の’ apt ‘コマンドを実行して、Ubuntuパッケージを更新します。

sudo apt update

次に、以下の’ apt ‘コマンドを実行して、’ zeek ‘パッケージを確認します。複数のZeekバージョンが表示されます。

sudo apt search zeek  
sudo apt-cache policy zeek

check zeek

次に、以下の’ apt ‘コマンドでZeekをインストールします。この例では、Zeek LTSをインストールします。

sudo apt install zeek

インストールを確認するために’ Y ‘を入力します。

install zeek

インストールが完了したら、’ ~/.bashrc ‘ファイルを通じて、’ /opt/zeek/bin ‘ディレクトリをシステムPATHに追加します。そして、’ ~/.bashrc ‘ファイルを再読み込みして新しい変更を適用します。これで、ターミナルを通じてZeekコマンドラインを実行できます。

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

最後に、以下の’ zeek ‘コマンドを実行して、Zeekのバージョンと基本的なコマンドおよびオプションを確認します。

zeek --version  
zeek --help

以下のような出力が表示されます:

zeek help

Zeekの設定

Zeekがインストールされたら、インフラストラクチャ上でZeekがどのように実行されるかを設定する必要があります。Zeekをスタンドアロンまたはクラスターモードで実行することを選択できます。大規模な展開の場合、Zeekコンポーネントを別々のサーバーにインストールするクラスターモードを使用できます。このテスト目的のために、単一のサーバーでクラスターモードを設定して実行します。

以下の’ ip ‘コマンドでサーバーのIPアドレスを確認します。この例では、UbuntuサーバーのIPアドレスは’ 192.168.10.60 ‘です。

ip a

nano ‘エディタでZeekネットワーク設定’ /opt/zeek/etc/networks.cfg ‘を開きます。

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

ターゲットサーバーのネットワークサブネットを以下のように入力します。

192.168.10.0/24 ローカルネットワーク

ファイルを保存して、終了します。

次に、’ nano ‘を使用してZeekノード設定’ /opt/zeek/etc/node.cfg ‘を開きます。

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

以下の行をコメントアウトして、Zeekスタンドアロンモードを無効にします。デフォルトでは、Zeekはデフォルトの’ localhost ‘とネットワークインターフェース’ eth0 ‘でスタンドアロンモードで実行されています。

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

以下の設定を貼り付けて、単一のサーバー内でクラスターモードでZeekを実行します。IPアドレスをUbuntuサーバーのIPアドレスに変更してください。以下のように、Zeekクラスターモードにはloggermanagerproxyworkersなどの複数のコンポーネントがあります。

# 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

完了したら、ファイルを保存して、エディタを終了します。

次に、以下の’ zeekctl ‘コマンドを実行して、Zeekの構文を確認します。適切な設定があれば、出力に’ scripts are ok ‘と表示されます。

zeekctl check

check zeek config

次に、’ deploy ‘コマンドを実行して、Zeekのインストールを展開します。これにより、Zeekのlogger、manager、proxy、およびworkersが起動します。

zeekctl deploy

deploy zeek

以下のコマンドで各Zeekコンポーネントを確認できます。

zeekctl status

以下の出力では、各Zeekコンポーネントが実行中であることがわかります。これは、Zeekクラスター単一ノードの展開が成功したことを意味します。

check zeek status

zeek-cutを使用してZeekログを解析する

Zeekをインストールして展開したので、ネットワークのログファイルが’ /opt/zeek/logs/current ‘ディレクトリに生成されます。知っておくべき複数のZeekログファイルがあります。このセクションでは、’zeek-cut’ユーティリティを使用してTSV(タブ区切り値)形式でログを生成する方法を学びます。

以下の’ls’コマンドでZeekログディレクトリ’ /opt/zeek/logs/current ‘を確認します。

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

以下のような複数のログファイルが表示されます:

  • conn.log: TCPおよびUDPの接続ログ。このログファイルは、タイムスタンプ、接続の持続時間、サービスなどの最も有用な情報を提供します。
  • dns.log: DNS(ドメインネームシステム)ログファイル
  • http.log: ハイパーテキスト転送プロトコル(HTTP)ログ
  • ssh.log: SSH接続を追跡するためのセキュアシェル(SSH)ログ。
  • ssl.log: HTTPSログも含むセキュアソケットレイヤー(SSL)ログ

次に、’ /opt/zeek/logs/current ‘ディレクトリに移動し、’ cat ‘コマンドを実行してZeekログを表示し、出力を’ zeek-cut ‘コマンドでパイプしてTSV(タブ区切り値)形式に解析します。

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

この例では、’ id.orig_h ‘、’ query ‘、および’ answers ‘のフィールドからの値を表示します。

zeek log

また、以下のように’ zeek-cut ‘コマンドを使用して、TSVログを処理し、同様の出力を得ることもできます。

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

zeek-cut log

Zeekの出力をJSONに設定する

Zeekは、TSVやJSONなどの複数のログ形式をサポートしています。このセクションでは、ZeekログをJSON形式で生成する方法を学びます。その後、’jq’コマンドラインでJSONログを解析して、ログを簡単に読む方法を学びます。

以下の’ nano ‘エディタでZeek設定’/opt/zeek/share/zeek/site/local.zeek’を開きます。

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

以下の行のコメントを解除して、出力ログをJSONに有効にします。

@load policy/tuning/json-logs

ファイルを保存して、エディタを終了します。

次に、以下の’ zeekctl ‘コマンドを実行して、変更を適用して展開します。プロセスが完了すると、ZeekによってJSONログ形式が生成されます。

zeekctl deploy

Zeekの展開中に以下の出力が表示されます。

deploy zeek

次に、以下の’ cat ‘コマンドを実行して、Zeekログファイルを確認します。Zeekログが現在JSON形式になっていることがわかります。

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

jqでZeek JSON形式を解析する

以下の’ apt ‘コマンドで’ jq ‘パッケージをインストールします。

sudo apt install jq -y

インストールが完了したら、’cd’コマンドで’/opt/zeek/logs/current’ディレクトリに移動します。

cd /opt/zeek/logs/current/

JSON形式のログを解析するには、以下の’jq’コマンドを実行します。

jq . dns.log

json log parsing with jq

コンパクトな出力が必要な場合は、以下のように’-c’オプションを使用します。

jq . -c dns.log

最後に、以下の’jq’コマンドでJSONログファイルを指定することもできます。

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

jq show specific key-value

結論

おめでとうございます!Ubuntu 24.04サーバーにZeekネットワーク監視ツールのインストールが完了しました。単一ノード/サーバーでのZeekクラスターモードの展開、TSV(タブ区切り値)形式での’ zeek-cut ‘ユーティリティを使用したZeekログの解析、JSON形式でのZeekログの生成、’jq’ユーティリティを使用したJSONログの解析を学びました。ここから、JSONログやZeekログをGraylogやELK/EFKスタックなどの集中ログシステムに送信する次のステップに進むことができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。