SIEM on Amazon OpenSearch Serviceのデプロイ手順

AWS Control Tower環境にSIEM on Amazon OpenSearch Serviceをデプロイした時のまとめです。

SIEM on Amazon OpenSearch Serviceとは

AWS環境におけるログを集約し可視化してくれるOSSのSIEMソリューションです。 デプロイ手順やログ集約のための設定もドキュメントに記載されていて簡単に始めることができます。

詳しくは公式リポジトリにあるドキュメントを確認してください。 github.com

環境

  • AWS Control Tower環境で用意される監査(Audit)アカウント
  • 東京リージョン
  • OpenSearch Serviceはパブリックアクセス(Amazon VPC外)に配置

手順

AWS Control Towerのようなマルチアカウント環境下に展開する場合AWS CDKを使います。 ドキュメントのAWS CDKによるデプロイの通り実施します。

https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/docs/deployment_ja.md

1. EC2インスタンスを立てる

2. EC2インスタンスに接続

インスタンスが起動したことを確認したら、SSHで接続します。

ssh -i <PEMファイル> ec2-user@xxx.xxx.xxx.xxx

3. EC2インスタンスに開発環境やソースコードをダウンロードする

cd
sudo yum groups mark install -y "Development Tools"
sudo yum install -y amazon-linux-extras
sudo amazon-linux-extras enable python3.8
sudo yum install -y python38 python38-devel git jq tar
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
git clone https://github.com/aws-samples/siem-on-amazon-opensearch-service.git

4. 環境変数の設定

AWS_DEFAULT_ACCOUNTには監査アカウントのAWSアカウントID(12桁)を、 AWS_DEFAULT_REGIONにはデプロイ先のリージョンを指定します。 今回は東京リージョンにデプロイしたので下記となります。

export CDK_DEFAULT_ACCOUNT=123456789012
export AWS_DEFAULT_REGION=ap-northeast-1

5. AWS Lambdaデプロイパッケージの作成

cd siem-on-amazon-opensearch-service/deployment/cdk-solution-helper/
chmod +x ./step1-build-lambda-pkg.sh && ./step1-build-lambda-pkg.sh

6. AWS CDKの環境準備

chmod +x ./step2-setup-cdk-env.sh && ./step2-setup-cdk-env.sh
source ~/.bash_profile

7. AWS CDKでのインストールオプションの設定

cd ../../source/cdk/
source .env/bin/activate
cdk bootstrap

8. 設定ファイルのコピー

パブリックアクセス(Amazon VPC外)にデプロイする場合の設定ファイルの雛形をコピーします。

cp cdk.json.public.sample cdk.json

9. 設定ファイルの編集

AWS Organizationsを使っている場合、組織IDと各AWSアカウントのIDを設定ファイルに記載します。 設定ファイル内にサンプルも記載されているので、それを参考に書きます。

nano cdk.json
    "organizations": {
      "org_id": "o-12345678",
      "management_id": "111111111111",
      "member_ids": ["222222222222", "333333333333"]
    },

org_idには組織IDを指定します。AWS Organizationsにアクセスすると記載があります。

management_idには管理アカウントのIDを指定します。AWS Control Towerを有効化したアカウントのことです。

member_idsには管理アカウント以外の各AWSアカウントのIDを指定します。AWS SSOのダッシュボードで一覧できます。

10. JSONファイルのバリデーションを実行

JSONが表示され、特段エラーが出なければOKです。

cdk context  --j

11. AWS CDKの実行

parametersオプションにSIEM環境へのアクセスを許可するIPアドレスや、SIEMで検知したアラートの送信先となるメールアドレスを指定します。

cdk deploy --parameters AllowedSourceIpAddresses="xxx.xxx.xxx.xxx" --parameters SnsEmail="hogehoge@example.jp"

約30分たつとデプロイが完了します。 ターミナル上にOutputsとしてSIEM環境へのアクセス情報が表示されます。

Outputs:
aes-siem.DashboardsAdminID = ********
aes-siem.DashboardsPassword = *******
aes-siem.DashboardsUrl = *******
aes-siem.RoleDeploy = *******

なお、ここで見落としてもCloudFormationのスタックからaes-siemを開いて、「出力」タブを確認すると記載があります。

aes-siem-stack-output

SIEM環境(OpenSearch Dashboards)にアクセス

aes-siem.DashboardsUrlに記載のURLにアクセスするとOpenSearch Dashboardsのログイン画面が表示されます。 DashboardsAdminIDDashboardsPasswordを入力してログインします。

OpenSearch Dashboards > Dashboardsに定義済みのダッシュボードが表示されます。

OpenSearchDashboards

定義済みのダッシュボードが見当たらない場合

右上のユーザーアイコンからSwitch tenants > Globalに切り替えます。

Switch tenantsを選択

Globalを選択

ログの取り込み方法

SIEM環境にログを取り込むにはそれぞれ集約設定が必要になります。 S3にaes-siem-[AWS_Account]-logというバケットが作成されており、ここにログを集めることで可視化されるようになります。

ログの取り込み方もドキュメントに記載があります。

https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/docs/configure_aws_service_ja.md

まとめ

公式の手順通りに進めると問題なくデプロイできました。

ただ、OpenSearch ServiceはEC2インスタンスのように停止ができません。 構築したまま置いておくと結構費用が掛かるので検証が終わって不要な場合は忘れずに削除しておきます。

詳細はドキュメントの「クリーンアップ」に記載があります。

siem-on-amazon-opensearch-service/README_ja.md at main · aws-samples/siem-on-amazon-opensearch-service · GitHub