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インスタンスを立てる
- t2.micro
- Admin権限を持ったロールをインスタンスに付与する
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
を開いて、「出力」タブを確認すると記載があります。
SIEM環境(OpenSearch Dashboards)にアクセス
aes-siem.DashboardsUrl
に記載のURLにアクセスするとOpenSearch Dashboardsのログイン画面が表示されます。
DashboardsAdminID
とDashboardsPassword
を入力してログインします。
OpenSearch Dashboards > Dashboardsに定義済みのダッシュボードが表示されます。
定義済みのダッシュボードが見当たらない場合
右上のユーザーアイコンからSwitch tenants
> Global
に切り替えます。
ログの取り込み方法
SIEM環境にログを取り込むにはそれぞれ集約設定が必要になります。
S3にaes-siem-[AWS_Account]-log
というバケットが作成されており、ここにログを集めることで可視化されるようになります。
ログの取り込み方もドキュメントに記載があります。
まとめ
公式の手順通りに進めると問題なくデプロイできました。
ただ、OpenSearch ServiceはEC2インスタンスのように停止ができません。 構築したまま置いておくと結構費用が掛かるので検証が終わって不要な場合は忘れずに削除しておきます。
詳細はドキュメントの「クリーンアップ」に記載があります。