クイックスタート: わずか5分で動くWazuhサーバーの構築
急ぎの検証環境が必要な場合や、数台の社内サーバーを保護したい場合、公式のAll-in-Oneスクリプトを利用するのが最も手軽な近道です。このスクリプトは、OpenSearch(Wazuh Indexer)、Wazuh Server、Wazuh Dashboardを一括で自動取得・展開してくれます。設定ミスが起きやすいYAMLファイルを手動で修正し続ける必要はありません。
CentOS Stream 9における最小要件は、4 vCPUおよび8GB RAMです。OpenSearchはメモリ消費量が比較的多いため、このスペックを下回ると稼働中にサービスがクラッシュするリスクが高くなります。
# 1. システムの更新とcurl、tarのインストール
sudo dnf update -y && sudo dnf install -y curl tar
# 2. 公式All-in-Oneスクリプトのダウンロード
curl -sO https://packages.wazuh.com/4.8/wazuh-install.sh
# 3. 全コンポーネントの自動インストールを実行
sudo bash ./wazuh-install.sh -a
パッケージの取得と構築処理には約4〜6分かかります。完了すると、ターミナル上にDashboardへのログイン情報が表示されます。デフォルトユーザーはadminで、ランダム生成されたパスワードが付与されます。このパスワードは忘れずに展開して保存しておきましょう:
# ランダム生成されたパスワードの確認
sudo tar -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt -O
次にブラウザを開き、https://<IP_SERVER>にアクセスします。自己署名SSL証明書の警告をスキップすれば、Wazuhの中央WebUIへ直接アクセスできます。
システム構成と確実なセットアップ手順
かつてCentOS 8がEOLを迎えた際、私たちのチームはわずか7日間で5台の本番サーバーをRocky Linuxへ緊急移行せざるを得ませんでした。そのとき痛感した教訓は、「OSの再インストールは半日もあれば終わるが、移行期にセキュリティログが見えず、ボットネットによるポートスキャンに晒されているかどうかも把握できない状態こそが最大の恐怖である」ということでした。それ以来、CentOS Stream 9をはじめとするRHEL系ディストリビューションを立ち上げる際には、OpenSSHの次に有効化するサービスとして必ずWazuhを選んでいます。
1. Wazuhシステムを支える3大コンポーネント
- Wazuh Indexer: OpenSearchベースのフォークです。主な役割は、毎秒数百万行に及ぶログデータの保存、インデックス作成、高速なクエリ検索です。
- Wazuh Server: 分析エンジンとなる「頭脳」です。Agentから送られてくるログを受信し、ルールセット(デコーダーおよびルール)との照合、ファイル完全性監視(FIM)、即時ブロック処理(Active Response)を実行します。
- Wazuh Dashboard: CVE脆弱性のアラート、MITRE ATT&CKマッピング、PCI-DSSやISO 27001などのコンプライアンスレポートを可視化するWebUIです。
2. CentOS Stream 9におけるFirewalldポート開放
CentOS Stream 9では、デフォルトでSSH以外のポートがブロックされています。サーバー群が正常に通信できるよう、以下の3つのポートを確実に開放してください:
# Port 1514 (TCP): Agentからのログ受信
# Port 1515 (TCP): キー配布および新規Agentの登録
# Port 443 (TCP): Web経由でのWazuh Dashboardアクセス
sudo firewall-cmd --permanent --add-port=1514/tcp
sudo firewall-cmd --permanent --add-port=1515/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
3. 監視対象ノードへのWazuh Agentのインストール
監視対象となるCentOS/RHELサーバーへ切り替えます。リポジトリを追加し、wazuh-agentパッケージをインストールします:
# WazuhのGPGキーとリポジトリの追加
sudo rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat <<EOF | sudo tee /etc/yum.repos.d/wazuh.repo
[wazuh]
name=Wazuh repository
baseurl=https://packages.wazuh.com/4.x/yum/
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
EOF
# Wazuh ServerのIPを指定してAgentをインストール
sudo WAZUH_MANAGER='192.168.1.100' dnf install -y wazuh-agent
# サービスのリロードとOS起動時の自動起動を有効化
sudo systemctl daemon-reload
sudo systemctl enable --now wazuh-agent
応用: FIMの有効化とSSHブルートフォース攻撃IPの自動遮断
収集されたログをDashboard上で眺めるだけでは不十分です。SIEMの真価は能動的な防御力、すなわちWebソースコードの改ざんを即座に検知し、パスワード総当たり攻撃を仕掛けてくる不審なIPを瞬時に排除する点にあります。
1. ファイル完全性監視(FIM)の有効化
監視対象サーバー上の/var/ossec/etc/ossec.confを開き、<syscheck>ブロックを探します。重要なディレクトリを指定して、ファイルの上書きや変更をリアルタイムで検知できるようにします:
<syscheck>
<!-- Webソースコードおよびシステムバイナリのリアルタイムスキャン -->
<directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories realtime="yes" check_all="yes">/var/www/html</directories>
<!-- ディスクI/O負荷を抑えるため一時ログ系ファイルを除外 -->
<ignore>/etc/mtab</ignore>
<ignore>/etc/hosts.deny</ignore>
</syscheck>
2. SSH認証失敗5回以上のIPを自動ブロック
Wazuh Manager側に戻ります。標準で用意されているfirewall-dropスクリプトを活用し、iptables/firewalld層で該当パケットを即時破棄します:
<!-- Wazuh Server上の /var/ossec/etc/ossec.conf に設定 -->
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5712</rules_id> <!-- SSHブルートフォース攻撃検知ルールで発動 -->
<timeout>1800</timeout> <!-- 攻撃元IPを30分間ブロック -->
</active-response>
ファイルを編集したら、Managerを再起動して設定を反映させます:
sudo systemctl restart wazuh-manager
CentOS 9でのWazuh運用における実践ノウハウ
- 安易にSELinuxを無効化しない: 接続エラーに遭遇した際、反射的に
setenforce 0を実行してしまう例が散見されます。しかし、これはLinuxカーネルの堅牢な防壁を自ら破棄する行為です。まずはsudo ausearch -m avc -ts recentで拒否されたルールを正確に特定し、audit2allow -M wazuh_customを使って正規のポリシーを生成・適用してください。 - ログ肥大化によるディスク枯渇に注意: デフォルトではIndexerが途切れることなくログを蓄積し続けます。毎週50〜100GBのペースでログが書き込まれると、わずか1ヶ月でディスクが逼迫します。DashboardからIndex Lifecycle Management (ILM)を速やかに設定し、7日経過後のログ圧縮や30日超過ログの自動削除を組み込んでおきましょう。
- OpenSearchのメモリ割り当てを適切に制限: 8GB RAMのノードでは、Indexerのヒープサイズを物理メモリの50%(4GB)に固定するのが基本です。
/etc/wazuh-indexer/jvm.optionsを以下のように編集します:
# /etc/wazuh-indexer/jvm.options 内の設定
-Xms4g
-Xmx4g
ヒープ上限を4GBに抑えることで、カーネルやWazuh Managerに十分な空きメモリを確保できます。これにより、深夜にLinuxのOOM Killerによってプロセスが不意に強制終了されるトラブルを未然に防止できます。

