Ubuntu 24.04にZeekネットワークセキュリティモニタリングツールをインストールする方法
Ubuntu 24.04にZeekネットワークセキュリティモニタリングツールをインストールする方法
このチュートリアルはこれらのOSバージョンのために存在します
- Ubuntu 24.04 (ノーブル ナンバット)
- Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
このページで
- 前提条件
- Zeekのインストール
- Zeekの設定
- Zeekログを解析するためにzeek-cutを使用する
- Zeekの出力をJSONに設定する
- jqを使用してZeekのJSON形式を解析する
- 結論
Zeek(以前はBro)は、ネットワークセキュリティ監視のための無料でオープンソースのプラットフォームです。これは疑わしい活動や悪意のある活動を調査する強力なパッシブネットワークトラフィックアナライザーです。Zeekはネットワークセキュリティモニター(NSM)として使用でき、セキュリティ領域からパフォーマンス測定およびトラブルシューティングまで、幅広いトラフィック分析をサポートしています。
このチュートリアルでは、Ubuntu 24.04サーバーにZeekネットワークセキュリティモニタリングツールをインストールする方法を学びます。また、Zeekをクラスターモードで実行する方法、'zeek-cut'コマンドを使用してZeekログを解析する方法、'jq'ユーティリティを使用してZeek JSONログを生成および解析する方法も学びます。
前提条件
始める前に、次のものを用意してください:
- Ubuntu 24.04サーバー
- 管理者権限を持つ非ルートユーザー
Zeekをインストールする
ZeekはUnix系オペレーティングシステム用のネットワークセキュリティ監視ツールです。複数の方法を使ってインストールできます。この例では、APTパッケージマネージャーを使用してOpenSUSEビルドサービスから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/nullZeekのGPGキーとリポジトリが追加されたら、以下の「apt」コマンドを実行してUbuntuパッケージを更新してください。
sudo apt update以下の 'apt' コマンドを実行して、'zeek' パッケージを確認できます。複数の Zeek のバージョンが表示されます。
sudo apt search zeek
sudo apt-cache policy zeek次に、以下の「apt」コマンドを使用してZeekをインストールします。この例では、Zeek LTSをインストールします。
sudo apt install zeek'Y' を入力してインストールを確認してください。
インストールが完了したら、'/opt/zeek/bin' ディレクトリを '~/.bashrc' ファイルを通じてシステムの PATH に追加します。そして、新しい変更を適用するために '~/.bashrc' ファイルを再読み込みします。これで、ターミナルを通じて Zeek コマンドラインを実行できるようになります。
echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
source ~/.bashrc最後に、以下の 'zeek' コマンドを実行して、Zeek のバージョンと基本コマンドおよびオプションを確認してください。
zeek --version
zeek --help
次のような出力が表示されます:
Zeekの設定
Zeekをインストールした後、Zeekがインフラストラクチャでどのように動作するかを設定する必要があります。Zeekをスタンドアロンモードまたはクラスターモードで実行することを選択できます。大規模な展開の場合、Zeekのコンポーネントを別のサーバーにインストールするクラスターモードを使用できます。このテストの目的のために、単一のサーバーを使用してクラスターモードでZeekを設定し、実行します。
次の「ip」コマンドを使用して、サーバーのIPアドレスを確認してください。この例では、UbuntuサーバーのIPアドレスは「192.168.10.60」です。
ip a/opt/zeek/etc/networks.cfgをnanoエディタで開きます。
sudo nano /opt/zeek/etc/networks.cfgターゲットサーバーのネットワークサブネットを以下のように入力してください。
192.168.10.0/24 Local Networkファイルを保存して、作業が完了したらエディタを終了してください。
今、nanoを使ってZeekノードの設定ファイル<em>/opt/zeek/etc/node.cfg</em>を開いてください。
sudo nano /opt/zeek/etc/node.cfg次の行にコメントを付けてZeekのスタンドアロンモードを無効にします。デフォルトでは、Zeekはスタンドアロンモードでデフォルトのlocalhostおよびネットワークインターフェースeth0で実行されています。
#[zeek]
#type=standalone
#host=localhost
#interface=eth0次の構成を貼り付けて、単一のサーバー内でクラスターモードのZeekを実行します。UbuntuサーバーのIPアドレスに変更することを忘れないでください。以下のように、Zeekのクラスターモードには、logger、manager、proxy、およびworkersといった複数のコンポーネントがあります。
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の構文を確認します。適切な設定があれば、「スクリプトは正常です」という出力が表示されます。
zeekctl check今、あなたのZeekインストールをデプロイするために'deploy'コマンドを実行してください。これにより、Zeekロガー、マネージャー、プロキシ、およびワーカーが起動します。
zeekctl deploy以下のコマンドで各Zeekコンポーネントをチェックできます。
zeekctl status下記の出力を見ると、各Zeekコンポーネントが動作していることがわかります。これは、Zeekクラスターの単一ノードのデプロイメントが成功したことを意味します。
Zeekログを解析するためにzeek-cutを使用する
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.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-cut'コマンドを使用してTSVログを処理し、似たような出力を得ることもできます。
zeek-cut id.orig_h query answers < dns.logZeekの出力をJSONに設定する
Zeekは、TSVやJSONなどの複数のログ形式をサポートしています。このセクションでは、JSON形式のZeekログを生成する方法を学びます。その後、ログを簡単に読むために'jq'コマンドラインを使用してJSONログを解析する方法を学びます。
次の「nano」エディタを使用して、Open Zeekの設定「/opt/zeek/share/zeek/site/local.zeek」を開きます。
sudo nano /opt/zeek/share/zeek/site/local.zeek次の行のコメントを解除して、出力ログをJSONに有効にします。
@load policy/tuning/json-logsファイルを保存してエディタを終了してください。
次に、以下の'zeekctl'コマンドを実行して、変更を適用し展開してください。そして、プロセスが完了すると、JSONログ形式がZeekによって生成されます。
zeekctl deployZeekのデプロイメント中に次の出力が表示されます。
次に、以下の 'cat' コマンドを実行して、Zeek ログファイルを確認します。Zeek ログが現在 JSON 形式であることがわかります。
cat /opt/zeek/logs/current/dns.logjqを使用してZeekのJSON形式を解析する
jqパッケージを以下の’apt’コマンドでインストールしてください。
sudo apt install jq -yインストールが完了したら、'cd'コマンドを使って'/opt/zeek/logs/current'ディレクトリに移動します。
cd /opt/zeek/logs/current/JSON形式のログを解析するには、以下の「jq」コマンドを実行してください。
jq . dns.logコンパクトな出力が必要な場合は、次のように'-c'オプションを使用してください。
jq . -c dns.log最後に、以下の「jq」コマンドでJSONログファイルを指定することもできます。
jq -c '[."id.orig_h", ."query", ."answers"]' dns.log結論
おめでとうございます!Ubuntu 24.04サーバーにZeekネットワーク監視ツールのインストールを完了しました。単一ノード/サーバーでのZeekクラスターモードの展開方法、zeek-cutユーティリティを使用してZeekログを解析し、TSV(タブ区切り値)形式を生成する方法、JSON形式でのZeekログ生成、およびjqユーティリティを使用してJSONログを解析する方法を学びました。ここからは、JSONログまたはZeekログをGraylogやELK/EFKスタックなどの集中ロギングシステムに送信することで、次のステップに進むことができます。












