LoginSignup
1
0

Google CloudにWazuhサーバーを構築する

Posted at

はじめに

会社でEDRを導入しようとしていくつかのソリューションを比較検討する中で、Open Sourceで構築できるサービスがないかも探してみたところ、Wazuhというサービスがあることを知りました。
検証環境をGoogle Cloud上に構成したので、備忘も兼ねて手順を残します。なお、Google Cloudを使った理由は、会社で使用しているメインのクラウドであることと、自身の勉強のためです。

本記事はGoogle Cloudを扱ったことがある人向けです。Google Cloud初めて触るという場合は、Udemyの以下の講座などで勉強するとよいと思います。

上のコースは初めてGoogle Cloudを触る人向け、多少触ったことがあるけど理解深めたい場合は下のコースの方が扱う範囲が広くて深いのでオススメです。

Wazuhとは

一言で言うと、Open SourceのXDR/SIEMソリューションです。

機能自体はOSSとして無料で使用できるものの、無料とは思えないほど高機能であり、例えば以下のようなことができます。

  • ログデータの分析
  • 侵入とマルウェアの検出
  • ファイルの整合性監視
  • 構成評価
  • 脆弱性の検出
  • 規制コンプライアンスのサポート

Wazuhは以下の4つのコンポーネントから構成されます。

  • Agent
  • Indexer
  • Server
  • Dashboard

image.png

Wazuh Agentはラップトップ、デスクトップ、サーバー、クラウドインスタンス、仮想マシンなどのエンドポイントにインストールされ、脅威の防御、検知、および応答機能を提供します。

Wazuh Indexerは拡張性の高い全文検索および分析エンジンで、Elastic Searchで構成されています。Wazuhサーバーによって生成されたアラートにインデックスを付け、保存する役割です。

Wazuh Serverはエージェントから受信したデータを分析します。脅威インテリジェンスを使用して、よく知られている侵害の指標(IOC)を探すために、デコーダとルールを介してそれを処理します。1台のサーバーで数百、数千のエージェントからのデータを分析でき、クラスタとしてセットアップすれば水平方向に拡張することも可能です。また、エージェントの管理にも使用され、必要に応じてリモートで設定やアップグレードを行う。

Wazuh Dashboardはデータの可視化と分析のためのウェブユーザーインターフェイスで、Kibanaで構成されています。セキュリティイベント、規制コンプライアンス(PCI DSS、GDPR、CIS、HIPAA、NIST 800-53など)、検出された脆弱なアプリケーション、ファイル整合性監視データ、構成評価結果、クラウドインフラ監視イベントなど、すぐに使えるダッシュボードが用意されています。また、Wazuhの構成を管理し、その状態を監視するためにも使用されます。

Wazuhサーバー構築

Google Cloud上にVMインスタンスを作成し、そこでWazuhを動かすことにします。Wazuhはdockerイメージも公式が用意しているので、Cloud Runとかで作成してもよいかもしれません(検証では試さなかった)。
なお、AWS上にVMインスタンスで構築する場合は公式のVMイメージが用意されているので、それをデプロイすればサクッと環境構築できるようです。

前提

今回はサクッと検証するためにVMインスタンス自体に外部IPを持たせます。本番運用する場合は、専用のVPCネットワークを構築してVMインスタンスやロードバランサを囲うサブネットを構築すべきでしょう。
また、single-nodeとmulti-nodeで構築可能ですが、今回はsingle-nodeです。

VPCネットワーク

VMインスタンスで利用するネットワークを用意します。既存のものを利用しても構いませんが、今回は専用で作りました。

ネットワーク名 wazuh-network
サブネット作成モード 自動
動的ルーティングモード リージョン
MTU 1460

次にWazuhの通信に必要なファイアウォールルールを追加します。こちらは既存ネットワークを使う場合も必要です。以下の3つを追加します。

  • Indexerとの通信
ルール名 wazuh-indexer-communication
ネットワーク wazuh-network
トラフィックの方向 上り
送信元IPv4範囲 0.0.0.0/0
プロトコル TCP
ポート 9200
  • AgentからServerへのコミュニケーション
ルール名 wazuh-agent-communication
ネットワーク wazuh-network
トラフィックの方向 上り
送信元IPv4範囲 0.0.0.0/0
プロトコル TCP
ポート 1514
  • ServerへAgentインストールしたエンドポイントをEnrollmentする
ルール名 wazuh-agent-enrollment
ネットワーク wazuh-network
トラフィックの方向 上り
送信元IPv4範囲 0.0.0.0/0
プロトコル TCP
ポート 1515

Compute Engine

Wazuhを構築するVMインスタンスを作成します。必要スペックは下図の通りですが、検証目的なので最小エージェント数で見積もればよいでしょう。90日も動かさないのでストレージも最小限で十分です。

image.png

以下の構成としました。

インスタンス名 wazuh-test
リージョン asia-northeast1
ゾーン asia-northeast1-b
マシン構成 汎用、Series N2D、カスタムマシン(4 vCPU、8 GB)
ブートディスク CentOS 7、20GB
アクセススコープ デフォルト
ファイアウォール HTTP, HTTPSトラフィックを許可
IPv4アドレス 内部外部共にエフェメラル

VMインスタンスが準備できたらSSHし、各コンポーネントをインストールしていきます。

Wazuh Indexerのインストール

基本的には以下の手順で順番に進めていけばOKです。

ただし、Google CloudのCentOS 7にはOpenSSLがインストールされていないので、まずはそちらが必要です。Update OpenSSL to 3.0 on CentOS7 などを参考に、最新のOpenSSLをインストールしましょう。

注意事項として、証明書作成時に使う config.yml と、Indexerの設定変更をする /etc/wazuh-indexer/opensearch.yml において、IP addressの値はVMの内部IPにする必要があります。また、single-nodeであってもCluster initializationの手順を実施しないとWazuh Serverのインストールを進められなくなります。

Wazuh Serverのインストール

基本的には以下の手順で順番に進めていけばOKです。

ここでの注意事項としては、Filebeatの設定ファイル /etc/filebeat/filebeat.yml においてindexer nodeのIPアドレスは内部IPとなります。ここを外部IPにすると filebeat test output でエラーが発生します。

Wazuh Dashuboardのインストール

以下の手順で順番に進めていけばOKです。特に詰まるポイントはないと思います。

Dashboardを起動することでVMの外部IPでWazuhのダッシュボードにアクセスできるようになりますが、Dashboardのインストール手順にも記載のあるように、最低限デフォルト認証情報は変更しておきましょう。
変更後のパスワードでログインすれば、以下のようにWazuh Dashboardへアクセスできます。Wazuhの世界へようこそ!

image.png

おわりに

これはクイックに検証用環境を作成する方法なので、本番環境で動かす場合はもっとセキュリティを意識した構成が必要となるでしょう。
Wazuhはとてつもなく機能が豊富なので使いこなすのは大変ですが、色々可能性を感じるので色々と機能を触ってみたいですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0