ウェブサイト検索

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


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

このチュートリアルはこれらのOSバージョンのために存在します

  • Ubuntu 24.04 (ノーブル ナンバット)
  • Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)

このページで

  1. 前提条件
  2. Zeekのインストール
  3. Zeekの設定
  4. Zeekログを解析するためにzeek-cutを使用する
  5. Zeekの出力をJSONに設定する
  6. jqを使用してZeekのJSON形式を解析する
  7. 結論

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/null

Zeekの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ログを表示し、その出力を&apos;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.log

Zeekの出力を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 deploy

Zeekのデプロイメント中に次の出力が表示されます。

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

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

jqを使用して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スタックなどの集中ロギングシステムに送信することで、次のステップに進むことができます。

関連記事: