Wazuhで構築するSIEM:Linuxサーバーの一元監視を実現する「盾」

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Quick start:5分で完了するWazuh All-in-oneの導入

急いでいる場合や、すぐに試してみたい場合は、自動インストールスクリプトが最適です。かつて、午前2時にSSHのブルートフォース攻撃を連続で受け、苦い思いをしたことがあります。一晩中その対応に追われた後、二度と無意味な徹夜をしないために、すぐにWazuhを導入しました。

ハードウェア要件:Ubuntu 20.04/22.04、最低4GBのRAMと2つのCPU。ただし、長期的に運用する場合は、よりスムーズな動作のために8GBのRAMを割り当てることをお勧めします。

curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh && sudo bash wazuh-install.sh -a

インストールには通常3〜5分かかります。完了すると、スクリプトが**ユーザー名(admin)**と**パスワード**を表示します。`https://<あなたのIP>`にアクセスするだけで、ダッシュボードの探索を開始できます。

なぜWazuhはLinux管理者に選ばれるのか?

以前は、`/var/log/auth.log`や`syslog`を確認するために、各ノードに個別にSSHでログインしていました。サーバーが1〜2台ならこれでもいいのですが、数十台になると手動管理は悲劇です。Wazuhは、生のログデータを価値のあるセキュリティ情報に変換することで、この問題を解決します。

  • 侵入検知 (HIDS): ユーザーの異常な振る舞いやシステムプロセスをリアルタイムで監視します。
  • 脆弱性管理: 古いソフトウェアパッケージを自動的にスキャンします。CVEデータベースと照合し、新しいパッチが利用可能になるとすぐに警告を発します。
  • ファイル整合性監視 (FIM): 誰かが`/etc/passwd`に悪意のあるコードを挿入したり、Nginxの設定ファイルを変更したりした場合、数秒以内に通知が届きます。
  • アクティブリスポンス (Active Response): 侵入の兆候を検知した際、攻撃者のIPを自動的にブロックすることでシステムを自己防衛します。

エージェントのインストール:サーバーをセンターに接続する

マネージャーの構築が終わったら、サテライトサーバーに「目と耳」となるエージェントをインストールする必要があります。コマンドを手動で入力する代わりに、ダッシュボードのインターフェースを活用しましょう。「**Deploy new agent**」を選択し、OS(Ubuntu、CentOS、Windows)を選んで、生成されたコマンドをコピーします。

以下はUbuntuサーバーへのインストールコマンドの例です:

wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.7.2-1_amd64.deb
sudo WAZUH_MANAGER='<WAZUH_SERVERのIP>' dpkg -i wazuh-agent_4.7.2-1_amd64.deb
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

コマンド実行後、数秒でそのサーバーのステータスがダッシュボード上で**Active**になります。システムファイルの変化からログインログまで、あらゆる動きが手元で把握できるようになります。

アクティブリスポンスの有効化:攻撃者を自動的に阻止する

これはWazuhの最も価値のある機能です。ハッカーがパスワードを推測するのをただ見ているのではなく、システムが自動的に`iptables`を使用してそのIPを即座にBANするように設定します。実際、この機能により、ボットネットによる自動ブルートフォース攻撃を95%削減できました。

マネージャー側の設定ファイル`/var/ossec/etc/ossec.conf`を開きます。`<active-response>`セクションを探し、ルール5712(SSHブルートフォース)を処理するために以下の設定を追加します:

<command>
  <name>firewall-drop</name>
  <executable>firewall-drop</executable>
  <timeout_allowed>yes</timeout_allowed>
</command>

<active-response>
  <command>firewall-drop</command>
  <location>local</location>
  <rules_id>5712</rules_id>
  <timeout>1800</timeout>
</active-response>

上記の設定により、ルール5712に違反したIPは30分間ブロックされます。変更を適用するために、`systemctl restart wazuh-manager`を実行するのを忘れないでください。

実運用における重要な教訓

大規模・小規模なプロジェクトで長年Wazuhを導入してきた経験から、システムが負担にならないようにするための実運用における重要な教訓を4つまとめました:

1. ログノイズの制御

Wazuh Indexerは、すべてを保存しようとするとすぐにリソースを消費します。中規模のシステムでも、ロードバランサーのヘルスチェックだけで毎日数GBのログが生成されることがあります。これらの無益なログをフィルタリングし、ディスク容量を節約するためにレベル5(Level 5)以上の警告のみを保持するようにしましょう。

2. 脆弱性スキャンの最適化

SSHログを見るためだけにエージェントをインストールしないでください。`ossec.conf`で`vulnerability-detector`機能を有効にしましょう。ただし、スキャンはオフピークの時間帯にスケジュールすることをお勧めします。継続的なスキャンは、スペックの低いサーバーのCPU使用率を100%まで押し上げる可能性があります。

3. 厳格な権限管理

チーム全体で一つの`admin`アカウントを共有することは絶対に避けてください。各部署に固有のロールを作成しましょう。例えば、開発チームにはアプリケーションログの閲覧権限のみを与え、アクティブリスポンスへの介入権限はセキュリティチームのみに限定すべきです。

4. バックアップ戦略

カスタムルールやデコーダーの作成に何週間も費やしながら、バックアップを忘れる人が多くいます。`/var/ossec/etc/`ディレクトリは定期的にバックアップしてください。サーバーのトラブルやアップグレードの際、すべてを一から作り直す手間が省けます。

Wazuhは非常に強力ですが、その効果を最大限に引き出すには、運用の細部における丁寧さが求められます。上記のガイドが、強固な監視システムの構築に役立つことを願っています。ハッキングされてからセキュリティを心配し始めるのでは遅すぎます。

Share: