クイックスタート: 5分でWazuhを起動・実行する
ログを確認して、何者かが侵入を試みていることに気づいたときのゾッとする感覚を覚えていますか?私にとってそれは、真夜中にサーバーがSSHブルートフォース攻撃を受けた夜でした。そのため、私は初期設定の段階からセキュリティを最優先しています。そして、その大きな部分を占めるのが、アクティブなセキュリティ監視です。
今日は、OSSECから生まれた強力なオープンソースセキュリティプラットフォームであるWazuhのセットアップについて説明します。これは、あなたのシステムを常に監視するデジタルボディーガードのようなものだと考えてください。いくつかのステップで、基本的なエージェントをマネージャーに接続します。
1. Wazuhマネージャーのセットアップ(オールインワン)
すぐにデプロイするために、Wazuhマネージャー、インデクサー、ダッシュボードをすべて1台のLinuxマシンにインストールします。この「オールインワン」アプローチは、小規模な環境や概念実証のセットアップに適しています。ここでは、新品のUbuntu 22.04 LTSサーバーを使用していると仮定します。
まず、Wazuh GPGキーをインポートし、Wazuhリポジトリを追加します:
sudo apt update
sudo apt install curl apt-transport-https -y
curl -sO https://packages.wazuh.com/key/GPG-KEY-WAZUH
sudo apt-key add GPG-KEY-WAZUH
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee -a /etc/apt/sources.list.d/wazuh.list
次に、Wazuhマネージャー、インデクサー、ダッシュボードをインストールします:
sudo apt update
sudo WAZUH_VERSION=4.7.2 apt install wazuh-manager wazuh-indexer wazuh-dashboard -y
パッケージのインストールが完了したら、次のステップはインデクサーとダッシュボードの自己署名証明書を生成することです。その後、それらをデプロイする必要があります。生成時には、マネージャーの実際のIPを反映するようにIPアドレスを調整してください。
/usr/share/wazuh-indexer/bin/indexer-certs-tool.sh -ip <MANAGER_IP>
mv admin-key.pem admin.pem ca.pem certs.zip /etc/wazuh-indexer/
cd /etc/wazuh-indexer/
unzip certs.zip
chmod 500 admin-key.pem admin.pem
chmod 400 ca.pem
chown wazuh-indexer:wazuh-indexer admin-key.pem admin.pem ca.pem
rm certs.zip
次に、サービスを有効にして開始します:
sudo systemctl daemon-reload
sudo systemctl enable wazuh-indexer wazuh-manager wazuh-dashboard
sudo systemctl start wazuh-indexer wazuh-manager wazuh-dashboard
すべてのサービスが起動するまで数分待ちます。Wazuhダッシュボードにはhttps://<MANAGER_IP>でアクセスできるはずです。デフォルトの認証情報はユーザー名とパスワードの両方がadminです。これはすぐに変更してください!
2. クライアントへのWazuhエージェントのインストール
次に、監視したいシステム、例えば別のUbuntuサーバーにエージェントをインストールしましょう。
sudo apt update
sudo apt install curl apt-transport-https -y
curl -sO https://packages.wazuh.com/key/GPG-KEY-WAZUH
sudo apt-key add GPG-KEY-WAZUH
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee -a /etc/apt/sources.list.d/wazuh.list
sudo apt update
sudo WAZUH_VERSION=4.7.2 apt install wazuh-agent -y
次に、Wazuhマネージャーに接続するようにエージェントを設定します。/var/ossec/etc/ossec.confを編集し、<manager>のIPアドレスを変更します:
<ossec_config>
...
<client>
<server>
<address><MANAGER_IP></address>
<port>1514</port>
<protocol>udp</protocol>
</server>
...
</client>
</ossec_config>
最後に、エージェントを有効にして開始します:
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
数秒後、「Agents」の下にエージェントが表示されるはずです。おめでとうございます、これで最初のホストを監視できるようになりました!
詳細: Wazuhのコア機能を理解する
Wazuhは単なる高機能なログビューアーではありません。それは包括的なセキュリティプラットフォームです。そのコア機能を理解することで、その可能性を最大限に活用できるようになります。
エージェント-マネージャーアーキテクチャ
Wazuhはエージェント-マネージャーアーキテクチャを使用して動作します。サーバー、ラップトップ、コンテナなどのエンドポイントにインストールされたエージェントは、セキュリティデータを収集し、安全に中央のWazuhマネージャーに転送します。マネージャーは、常に更新される脅威インテリジェンスデータベース、ルールセット、デコーダーに対してこのデータを分析します。最終的に、アラートが生成され、Wazuhインデクサー(通常はOpenSearch)に保存され、Wazuhダッシュボード(OpenSearch Dashboards)を通じて視覚化されます。
重要な主要機能
- ファイル整合性監視 (FIM): これは非常に役に立ちます。Wazuhは、重要なシステムファイルやディレクトリの変更を監視します。設定ファイルが改ざんされたり、攻撃者が不審なファイルをドロップしたりした場合、すぐに知ることができます。私はこれを
/etc/passwd、/etc/sudoers、およびWebサーバーの設定ファイルの変更を追跡するために使用しています。 - ログデータ分析: システム上のすべてのイベントはログを生成します。Wazuhは、オペレーティングシステム、アプリケーション、ネットワークデバイスからのこれらのログを集約して分析します。セキュリティインシデント、エラー、ポリシー違反を示すパターンを検出します。SSHログインの失敗、ファイアウォールの拒否、疑わしいプロセス実行などを想定してください。
- 侵入検知 (IDS): ログデータとシステムコールを分析することで、Wazuhは一般的な攻撃パターン、ルートキットのインストール、侵入を示す疑わしいアクティビティを検出できます。
- 脆弱性検知: エージェントは、エンドポイントにインストールされているソフトウェアを既知の脆弱性(CVE)について定期的にスキャンし、マネージャーに報告することで、パッチ適用作業の優先順位付けを支援します。
- セキュリティ設定評価 (SCA): Wazuhは、セキュリティのベストプラクティス(例:CISベンチマーク)に対してシステムの設定を評価し、悪用される可能性のある誤設定を特定できます。
- コンプライアンス: PCI DSS、GDPR、HIPAA、NISTなどのコンプライアンス標準をすぐにサポートしており、安全な状態を維持し、レポートを生成するのに役立ちます。
ルールとデコーダー: 操作の頭脳
Wazuhは強力なルールベースエンジンを使用しています。デコーダーは最初に生のログデータを構造化されたイベントに解析します。次に、ルールはこれらの構造化されたイベントを事前定義された条件に対して評価します。イベントがルールに一致すると、アラートが生成されます。たとえば、デコーダーはSSHログイン試行から送信元IPとユーザー名を抽出するかもしれません。その後、同じIPから1分以内に5回以上のログイン失敗があった場合、ルールがアラートを発する可能性があります。
高度な使用法: セキュリティ体制のカスタマイズ
基本を理解したら、Wazuhを特定の環境と脅威モデルに合わせてカスタマイズしたいと思うでしょう。
カスタムルールの作成
組み込みのルールは広範ですが、すべての環境には独自のニーズがあります。おそらく、重要なセキュリティイベントをログに記録するカスタムアプリケーションがあるか、非常に特定のファイルへのアクセスを追跡する必要があるかもしれません。まさにここでカスタムルールが非常に貴重になります。これらのルールはマネージャーの/var/ossec/etc/rules/local_rules.xmlで定義され、デフォルトのルールよりも前に処理されます。
特定のユーザー(例:devops_admin)がシステムにログインした場合にアラートを出す、シンプルなカスタムルールの例を次に示します:
<group name="local,syslog,sshd,">
<rule id="100001" level="7">
<if_sid>5500</if_sid> <!-- SSHD認証成功 -->
<field name="user">^devops_admin$</field>
<description>ユーザー devops_admin がシステムにログインしました。</description>
<group>authentication_success,pci_dss_10.2.5,pci_dss_10.6.1,gdpr_IV.35.7,nist_800_53_AU.12,nist_800_53_AC.7,</group>
</rule>
</group>
カスタムルールを追加した後、Wazuhマネージャーを再起動することを忘れないでください: sudo systemctl restart wazuh-manager。
統合: アラートへの対応
アラートは、誰かがそれを見た場合にのみ役立ちます。Wazuhは、通知と自動化のために様々な外部ツールと統合できます:
- メール: 基本的ですが効果的です。
/var/ossec/etc/ossec.confで設定します。 - メッセージングプラットフォーム: Slack、Microsoft Teams、Telegramと統合してリアルタイム通知を行います。これには、Wazuhの
integratorモジュールを使用し、小さなスクリプトを作成することがよく含まれます。 - SIEM/SOARツール: 大規模な組織では、WazuhのアラートをSplunkのような集中型SIEM(Security Information and Event Management)や専用のElastic Stack(Wazuhの統合インデクサーとダッシュボードを使用しない場合)に供給するのが一般的です。あるいは、アラートはSOAR(Security Orchestration, Automation, and Response)プラットフォームに送信することもできます。
- チケットシステム: 重要なアラートのために、JiraやServiceNowで自動的にチケットを作成します。
たとえば、Slackチャンネルにアラートを送信するには、ossec.confに統合ブロックを追加します:
<integration>
<name>slack</name>
<hook_url>https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX</hook_url>
<level>10</level> <!-- レベル10以上のアラートのみを送信 -->
</integration>
アクティブレスポンス: 自動的に反撃する
これは、Wazuhがパッシブ監視からアクティブ防御へと移行する部分です。アクティブレスポンスにより、マネージャーは特定のアラートに応じてエージェント上で事前に定義されたスクリプトを実行できます。たとえば、あるIPアドレスがSSHログイン失敗を頻繁に引き起こした場合、Wazuhは影響を受けたホストのファイアウォールレベルでそのIPを自動的にブロックできます。これはFail2Banが行うことと似ていますが、集中管理され、ポリシーに基づいています。
アクティブレスポンススクリプトとそのトリガーはossec.confで定義します。一般的なアクティブレスポンスは、firewall-dropを使用して攻撃者のIPをブロックすることです。
堅牢なセキュリティ体制のための実践的なヒント
Wazuhをデプロイすることは最初のステップです。真に恩恵を受けるには、セキュリティ運用に組み込む必要があります。
- アラートに埋もれないで – チューニングする: 最初は、多くのノイズに悩まされるかもしれません。ルールをチューニングすることが重要です。対応不要な低優先度のアラートは抑制し、重要なアラートのレベルを上げましょう。環境における侵害や設定ミスを真に示唆する事柄に焦点を当ててください。Wazuhダッシュボードを使用してアラートパターンを分析し、ルールを洗練させましょう。
- システムをベースライン化する: 「正常な状態」がどのようなものかを理解しましょう。これは異常を特定するのに役立ちます。Webサーバーが突然
/tmpからコマンドを実行し始めたが、以前はそうしていなかった場合、それは大きな危険信号です。ベースライン化は、異常な状態を定義するのに役立ちます。 - アラートを定期的にレビューする: 設定して放置するだけではいけません。アラートのレビューを日次または週次のルーチンに組み込みましょう。これにより、脅威の状況を理解し、進化する攻撃ベクトルを特定するのに役立ちます。
- Wazuhを常に最新の状態に保つ: セキュリティの状況は日々変化しています。新しい脆弱性や攻撃手法が登場します。Wazuhマネージャーとエージェントを最新の状態に保つことで、現在の脅威を検出するための最新のルール、デコーダー、および機能が確保されます。
- エージェントデプロイの自動化を検討する: 大規模な環境では、エージェントの手動インストールは面倒です。Ansible、Puppet、Chefなどの構成管理ツールを検討して、エージェントのデプロイと設定を自動化しましょう。WazuhはAnsibleプレイブックも提供しています。
- 設定をバックアップする: Wazuhマネージャーの設定(
ossec.conf、ルール、デコーダー)は非常に重要です。定期的にバックアップされていることを確認してください。 - Wazuh自体を監視する: はい、自身のセキュリティ監視ソリューションを監視しましょう。エージェントがチェックインしているか、マネージャーサービスが稼働しているか、インデクサーのディスク容量が不足していないかを確認してください。
Wazuhのようなツールを導入するには継続的な取り組みが必要ですが、それがもたらす安心感と強化されたセキュリティ体制は非常に価値があります。これにより、損害が発生した後に受動的に問題を修正するのではなく、積極的に問題を検出し、さらには防止することへと移行できます。安全なセキュリティ運用を!

