top of page

実践:Wazuhでサーバの監査環境を構築してみる

  • 5月5日
  • 読了時間: 6分

Hi, there.


本日は、過去に投稿した「Splunkを使用した監査環境の構築」のWazuh版です。

Splunkの環境構築時に作成した監査対象サーバーを流用し、Splunkとの見え方の違いを見ていきたいと思います。


Wazuhには、中央コンポーネントを同一ホストにまとめた all-in-one 構成が案内されています。そのため、Splunk や Elastic と比べると最初から 監査項目の型をかなり持っており、ログを見るだけではなく、ファイル改ざん、設定不備、脆弱性まで含めて「そのホストが今どういう状態か」を見せるのが得意です。


今回の構成

今回の構成もシンプルです。

  • Wazuhサーバー

    Ubuntu Server 24.04 LTS

    Wazuh all-in-one 構成

    • 名前:wazuh

    • タイプ:Linux

    • バージョン:Ubuntu (64-bit)

    • メモリ:4096MB

    • CPU:2

    • 仮想ディスク:20GB


  • 監査対象サーバー

    前回の Splunk 編で作成した Ubuntu Server 24.04 LTS


ネットワークの構成

仮想マシン作成後、それぞれのマシンが疎通できるようにsplunkの環境構築で用いた内部ネットワークを流用します。


設定 → ネットワーク → アダプター1 を開き、次のように設定します。

  • ネットワークアダプターを有効化:オン

  • 割り当て:内部ネットワーク

  • 名前:splunk-lab


固定IPアドレスを設定する

監査対象サーバーは前回と同じ 192.168.56.20 です。今回追加する Wazuh サーバーは、IP が重複しないように 192.168.56.40 を使います。


まず Wazuh サーバーで、以下を実行しネットワークインターフェースを調べます。

ip a

Wazuh サーバーで netplan 設定ファイルを編集します。

sudo nano /etc/netplan/50-cloud-init.yaml

以下の内容にします。

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.56.40/24

保存後、適用します。

sudo netplan apply

2台が相互通信できることを確認する

Wazuh サーバーで次を実行します。

ping -c 4 192.168.56.20

監査対象サーバーで次を実行します。

ping -c 4 192.168.56.40

両方で応答が返れば、2台は同一ネットワーク上で通信できています。ここまで完了したら、Wazuh の導入へ進みます。


Step 1. 監視サーバーに Wazuh all-in-one を導入する

まずはWazuhサーバーを作ります。Wazuh の quickstart では、installation assistant を使って all-in-one 構成を導入できます。


次を実行します。

curl -sO https://packages.wazuh.com/4.14/wazuh-install.shsudo bash ./wazuh-install.sh -a

これで、Wazuh server、indexer、dashboard などの中央コンポーネントが導入されます。quickstart では、この all-in-one 構成を学習や小規模用途向けの最短手順として案内しています。


インストール完了後、ダッシュボードの URL、管理者ユーザー、パスワードが表示されるので控えておきます。


Step 2.ホストPCからアクセスできるようにファイアウォールを開ける

Wazuh dashboard の既定ポートは 443 です。Wazuh のアーキテクチャ資料では、Wazuh server API は既定で 55000/TCP、Wazuh dashboard は 443/TCP を使います。

sudo ufw allow 443/tcp
sudo ufw allow 1514/tcp
sudo ufw allow 1515/tcp
sudo ufw allow 55000/tcp
sudo ufw enable
sudo ufw status

Step 3. Wazuh dashboard にログインする

ブラウザから監視サーバーへアクセスします。

証明書警告が出ることがありますが、学習環境なら内容を確認したうえで進みます。admin と表示されたパスワードでログインできれば、中央側の構築は完了です。


Step 4. 監査対象サーバーに Wazuh agent をインストールする

監査対象サーバー側でWazuh Agentをインストールするために、Wazuh の公式リポジトリを追加します。

sudo apt update
sudo apt install -y gnupg apt-transport-https curl

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://packages.wazuh.com/key/GPG-KEY-WAZUH \
  | sudo gpg --dearmor -o /etc/apt/keyrings/wazuh.gpg

sudo chmod 644 /etc/apt/keyrings/wazuh.gpg

echo "deb [signed-by=/etc/apt/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" \
  | sudo tee /etc/apt/sources.list.d/wazuh.list > /dev/null

sudo apt update

続いて、監視サーバーの IP を指定して agent をインストールします。

sudo WAZUH_MANAGER="192.168.56.40" apt-get install -y wazuh-agent

その後、サービスを有効化して起動します。

sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

状態確認です。

sudo systemctl status wazuh-agent

Wazuh の Linux agent 導入手順では、このように deployment variables を使って manager への接続先を指定できます。必要なら、意図せずバージョンが動かないように hold しておくと検証しやすくなります。

echo "wazuh-agent hold" | sudo dpkg --set-selections

Step 5. Wazuh dashboard で agent の登録を確認する

監視サーバーの Wazuh dashboard へ戻り、ホーム画面を確認します。しばらくすると、前回の Splunk 編で使った Ubuntu サーバーが一覧に現れます。


以下のような表示になります。



「Active」の部分をクリックすると次のような画面になり、監視対象サーバーが登録されていることが分かります。


Step 6. 前回の Splunk 編と同じ監査操作を実行する

ここでも、比較を揃えるために、前回と同じ痕跡を出します。監査対象サーバーで以下を実行します。

sudo useradd wazuh_test_user
sudo passwd wazuh_test_user
sudo ls /root
sudo cat /etc/shadow >/dev/null
sudo systemctl restart ssh

さらに、別端末からわざと SSH ログインを数回失敗させます。

これにより、少なくとも以下のような監査対象イベントが発生します。

  • 認証失敗

  • sudo や root 周辺の操作

  • ユーザー追加

  • sshd 再起動


結果は、Threat HuntingのメニューでEventタブを開くことで確認できます。

以下の図ではユーザー登録とパスワード変更のログが出力されていることがわかります。



Step 7. File Integrity Monitoring を確認する

Wazuh の強みがよく見えるのが、FIM(File Integrity Monitoring)です。これは、重要ファイルやディレクトリの変更、作成、削除を検知する仕組みです。Wazuh は初回スキャンでベースラインを作り、その後はチェックサムや属性差分で変化を見ます。


ここは、Splunk や Elastic とかなり印象が変わるところです。単なるログではなく、設定ファイルそのものが変わったという事実が前に出てきます。




Step 8. Security Configuration Assessment を確認する

Wazuh のもう一つの特徴が SCA(Security Configuration Assessment) です。これは、ホストの設定が安全なベースラインに沿っているかを評価する機能です。


確認手順は単純です。

  1. 対象 agent を開く

  2. Configuration Assessment または SCA 画面を開く

  3. Fail している項目を確認する


つまり、Wazuh では「何か起きたか」だけでなく、そもそも起きやすい状態になっていないかまで、自然に監査対象へ入ってきます。Wazuh の installation guide と quickstart は、こうしたホスト監視の拡張を中央構成から行える前提で設計されています。



Step 9. Vulnerability Detection を確認する

さらに Wazuh では、脆弱性候補も確認できます。agent が収集したソフトウェア情報をもとに、脆弱性データと突き合わせて、対象ホストに紐づく CVE 候補を出します。


確認手順:

  1. Vulnerability 関連画面を開く

  2. host を audit-target に絞る

  3. パッケージや CVE を確認する


これもまた、前回の Splunk 編とは見え方がかなり違う部分です。Wazuh では、ホストの健全性そのものが前に出ます。



まとめ


今回は、Splunk 編で利用した Ubuntu サーバーをそのまま活用し、同様の証跡を残したうえで、それらが Wazuh ではどのように可視化されるのかを確認しました。

実際に触れてみると、Splunk は SIEM としての性格がより明確である一方、Wazuh は SIEM にとどまらず、脆弱性管理やエージェント監視も含めた、より統合的なセキュリティ監視基盤という印象を受けました。


正直なところ、無償で利用できることから、当初は機能面にそれほど大きな期待をしていませんでした。しかし、実際に構築し、操作してみると、その印象は大きく変わりました。無料で使えるツールとは思えないほど多機能で、監視・可視化・運用支援のいずれの面でも、十分に実用的な力を持っていると感じます。


できることが多い分、全体像を理解して使いこなすには多少の慣れが必要ですが、それだけに、自分の監視目的に合わせて設計できれば非常に強力です。小規模な検証環境からでも始めやすく、学習用途はもちろん、実運用を見据えた監視基盤の入口としても、Wazuh はかなり有力な選択肢だと感じました。


参考




bottom of page