SIEM on Amazon OpenSearch Service は、セキュリティインシデントを調査するためのソリューションです。Amazon OpenSearch Service (Amazon Elasticsearch Service の後継) を活用して、AWS のマルチアカウント環境下で、複数種類のログを収集し、ログの相関分析や可視化をすることができます。デプロイは、AWS CloudFormation または AWS Cloud Development Kit (AWS CDK) で行います。30分程度でデプロイは終わります。AWS サービスのログを Simple Storage Service (Amazon S3) のバケットに PUT すると、自動的に ETL 処理を行い、SIEM on OpenSearch Service に取り込まれます。ログを取り込んだ後は、ダッシュボードによる可視化や、複数ログの相関分析ができるようになります。
Amazon OpenSearch Service のサービス名変更に伴い、SIEM on Amazon Elasticsearch Service から SIEM on Amazon OpenSearch Service に名前を変更しました。
Jump to | AWS サービス(ログ送信元)の設定 | SIEM の設定 | 高度なデプロイ | ダッシュボード | サポートログタイプ | よくある質問 | 変更履歴 |
SIEM on OpenSearch Service は以下のログを取り込むことができます。
AWS Service | Log | |
---|---|---|
セキュリティ、ID、およびコンプライアンス | Amazon GuardDuty | GuardDuty findings |
セキュリティ、ID、およびコンプライアンス | AWS Directory Service | Microsoft AD |
セキュリティ、ID、およびコンプライアンス | AWS WAF | AWS WAF Web ACL traffic information AWS WAF Classic Web ACL traffic information |
セキュリティ、ID、およびコンプライアンス | AWS Security Hub | Security Hub findings GuardDuty findings Amazon Macie findings Amazon Inspector findings AWS IAM Access Analyzer findings |
セキュリティ、ID、およびコンプライアンス | AWS Network Firewall | Flow logs Alert logs |
管理とガバナンス | AWS CloudTrail | CloudTrail Log Event CloudTrail Insight Event |
ネットワーキングとコンテンツ配信 | Amazon CloudFront | Standard access log Real-time log |
ネットワーキングとコンテンツ配信 | Amazon Route 53 Resolver | VPC DNS query log |
ネットワーキングとコンテンツ配信 | Amazon Virtual Private Cloud (Amazon VPC) | VPC Flow Logs (Version5) |
ネットワーキングとコンテンツ配信 | Elastic Load Balancing | Application Load Balancer access logs Network Load Balancer access logs Classic Load Balancer access logs |
ストレージ | Amazon FSx for Windows File Server | audit log |
ストレージ | Amazon Simple Storage Service (Amazon S3) | access log |
データベース | Amazon Relational Database Service (Amazon RDS) (Experimental Support) |
Amazon Aurora(MySQL) Amazon Aurora(PostgreSQL) Amazon RDS for MariaDB Amazon RDS for MySQL Amazon RDS for PostgreSQL |
分析 | Amazon Managed Streaming for Apache Kafka (Amazon MSK) | Broker log |
コンピューティング | Linux OS via CloudWatch Logs |
/var/log/messages /var/log/secure |
コンピューティング | Windows Servver 2012/2016/2019 via CloudWatch Logs |
System event log Security event log |
コンテナ | Amazon Elastic Container Service (Amazon ECS) via FireLens |
Framework only |
エンドユーザーコンピューティング | Amazon WorkSpaces | Event log Inventory |
Experimental Support はログフィールドの正規化等を大きく変更する可能性があります
対応ログは、Elastic Common Schema に従って正規化しています。ログのオリジナルと正規化したフィールド名の対応表は こちら をご参照ください。
こちら をご参照ください
CloudFormation テンプレートを使って、SIEM on OpenSearch Service のドメインをパブリックアクセスに作成します。Amazon VPC 内へのデプロイやカスタマイズをする場合の手順は こちら をご参照ください。
IP アドレスに国情報や緯度・経度のロケーション情報を付与することができます。ロケーション情報は MaxMind 社の GeoLite2 Free をダウンロードして活用します。ロケーション情報を付与したい方は MaxMind にて無料ライセンスを取得してください。
注) CloudFormation テンプレートは OpenSearch Service を t3.medium.search インスタンスでデプロイします。無料利用枠ではありません。また SIEM は、多くのログを集約して負荷が高くなるため、小さい t3 を避けて、メトリクスを確認しつつ最適なインスタンスを選択してください。 インスタンスの変更、ディスクの拡張、UltraWarm の使用等は、AWS マネジメントコンソールから直接行ってください。SIEM on OpenSearch Service の CloudFormation テンプレートは OpenSearch Service に対しては初期デプロイのみで、ノードの変更、削除等の管理はしません。
SIEM on OpenSearch Service をデプロイするリージョンを選択してください。
リージョン | CloudFormation |
---|---|
アジアパシフィック (東京) ap-northeast-1 | |
アジアパシフィック (大阪) ap-northeast-3 (※) | |
米国東部 (バージニア北部) us-east-1 | |
米国西部 (オレゴン) us-west-2 | |
欧州 (フランクフルト) eu-central-1 | |
欧州 (ロンドン) eu-west-2 |
(※) 大阪リージョンのみ導入時は r5.large.search インスタンスでデプロイされます
ご希望のリージョンがこのリストない場合は、手動で次のテンプレートを選択してください。
https://aes-siem-<REGION>.s3.amazonaws.com/siem-on-amazon-opensearch-service.template
次の手順に従って CloudFormation のテンプレートを作成することもできます。
クイックスタートでデプロイされた方は CloudFormation テンプレートの作成はスキップしてください。
AWS CloudShell または Amazon Linux 2 を実行している Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使って CloudFormation テンプレートを作成します
前提の環境)
- AWS CloudShell または Amazon Linux 2 on Amazon EC2
- "Development Tools"
- Python 3.8
- Python 3.8 libraries and header files
- git
上記がインストールされてない場合は以下を実行
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
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
GitHub レポジトリからコードを clone します
cd
git clone https://github.com/aws-samples/siem-on-amazon-opensearch-service.git
export TEMPLATE_OUTPUT_BUCKET=<YOUR_TEMPLATE_OUTPUT_BUCKET> # Name for the S3 bucket where the template will be located
export AWS_REGION=<AWS_REGION> # region where the distributable is deployed
注) $TEMPLATE_OUTPUT_BUCKET は S3 バケット名です。事前に作成してください。デプロイ用のファイルの配布に使用します。ファイルはパブリックからアクセスできる必要があります。テンプレート作成時に使用する build-s3-dist.sh は S3 バケットの作成をしません。
cd ~/siem-on-amazon-opensearch-service/deployment/cdk-solution-helper/
chmod +x ./step1-build-lambda-pkg.sh && ./step1-build-lambda-pkg.sh && cd ..
chmod +x ./build-s3-dist.sh && ./build-s3-dist.sh $TEMPLATE_OUTPUT_BUCKET
aws s3 cp ./global-s3-assets s3://$TEMPLATE_OUTPUT_BUCKET/ --recursive --acl bucket-owner-full-control
aws s3 cp ./regional-s3-assets s3://$TEMPLATE_OUTPUT_BUCKET/ --recursive --acl bucket-owner-full-control
注) コマンドを実行するために S3 バケットへファイルをアップロードする権限を付与し、アップロードしたファイルに適切なアクセスポリシーを設定してください。
コピーしたテンプレートは、https://s3.amazonaws.com/$TEMPLATE_OUTPUT_BUCKET/siem-on-amazon-opensearch-service.template
にあります。このテンプレートを AWS CloudFormation に指定してデプロイしてください。
約30分で CloudFormation によるデプロイが完了します。次に、OpenSearch Dashboards (Kibana の後継) の設定をします。
- AWS CloudFormation コンソールで、作成したスタックを選択。画面右上のタブメニューから「出力」を選択。OpenSearch Dashboards のユーザー名、パスワード、URL を確認できます。この認証情報を使って OpenSearch Dashboards にログインしてください
- 最初のログイン時に [Select your tenant] と表示されるので、[Global] を選択してください。作成済みのダッシュボード等を利用できます。
- [Select your tenant] で [Global] を選択せずに、[Private] を選んで、各ユーザー専用のダッシュボード等を用意して、カスタマイズをすることもできます。以下は、その方法で、Global を選んだ場合は設定不要です。
- OpenSearch Dashboards の Dashboard等 のファイルをここ からダウンロードします。ダウンロードしたファイルを解凍してください
- OpenSearch Dashboards のコンソールに移動してください。画面左側に並んでいるアイコンから「Stack Management」 を選択してください、「Saved Objects」、「Import」、「Import」の順に選択をして、先ほど解凍したZIPファイルの中ある「dashboard.ndjson」をインポートしてください
- インポートした設定ファイルを反映させるために一度ログアウトしてから、再ログインをしてください
S3 バケットの aes-siem-[AWS アカウント ID]-log にログを出力してください。ログは自動的に SIEM on OpenSearch Service に取り込まれて分析ができるようになります。
AWS の各サービスのログを S3 バケットへの出力する方法は、こちら をご参照ください。
SIEM on OpenSearch Service または SIEM on Amazon ES を新しいバージョンにアップデートする時は、OpenSearch / Elasticsearch のドメインをアップグレードしてから、初期インストールと同じ方法 (CloudFormation or AWS CDK) でアップデートしてください。SIEM の変更履歴は こちら から確認できます。
注) Global tenant の 設定やダッシュボード等は自動で上書きされるのでご注意ください。アップデート前に使用していた設定ファイルやダッシュボード等は S3 バケットの aes-siem-[AWS_Account]-snapshot/saved_objects/ にバックアップされるので、元の設定にする場合は手動でリストアしてください。
OpenSearch Service の 1.0 か、Elasticsearch の 7.10 にアップグレードします
- OpenSearch Service コンソール に移動
- [aes-siem] ドメインを選択
- [アクション] アイコンを選択して、プルダウンリストから [ドメインのアップグレード] を選択
- アップグレード先のバージョンで [OpenSearch 1.0] または、[Elasticserch 7.10] を選んで、[送信] を選択
CloudFormation で初期インストールした場合は次へ進み、AWS CDK で初期インストールしている場合は 高度なデプロイ のアップデートを参照してください。
CloudFormation のテンプレートを指定して更新します。テンプレートの URL は下記です。
https://aes-siem-<REGION>.s3.amazonaws.com/siem-on-amazon-opensearch-service.template
- CloudFormation コンソール に移動
- [aes-siem] のスタックを選択
- 画面右上の [更新する] を選択
- スタックの更新で下記を選択
- テンプレートの準備: [既存テンプレートを置き換える]
- テンプレートソース: [Amazon S3 URL]
- Amazon S3 URL:
- [次へ] を選択
- 残りの全てデフォルト値で変更せず最後まで選択して完了
以上でアップデートは完了です。
OpenSearch Service のアクセスポリシーの変更、インスタンスのスペック変更、AZ の追加と変更、UltraWarm への変更等の OpenSearch Service ドメイン自体の変更は、AWS マネジメントコンソールの OpenSearch Service コンソール から実行してください
SIEM on OpenSearch Service はログをインデックスに保存しており、デフォルトでは毎月1回ローテーションをしています。この期間を変更や、AWS 以外のログを取り込みたい方は、こちら をご参照ください。
Python スクリプトの es-loader をローカル環境で実行することで、すでに S3 バケット に保存されている過去のログを SIEM on OpenSearch Service に取り込むことができます。
CloudFormation テンプレートで作成される AWS リソースは以下の通りです。AWS Identity and Access Management (IAM) のリソースは AWS マネジメントコンソールから確認してください。
AWS Resource | Resource Name | 目的 |
---|---|---|
OpenSearch Service 1.0 or Elasticsearch 7.X | aes-siem | SIEM 本体 |
S3 bucket | aes-siem-[AWS_Account]-log | ログを集約するため |
S3 bucket | aes-siem-[AWS_Account]-snapshot | OpenSearch Service の手動スナップショット取得 |
S3 bucket | aes-siem-[AWS_Account]-geo | ダウンロードした GeoIP を保存 |
Lambda function | aes-siem-es-loader | ログを正規化し OpenSearch Service へロード |
Lambda function | aes-siem-deploy-aes | OpenSearch Service のドメイン作成 |
Lambda function | aes-siem-configure-aes | OpenSearch Service の設定 |
Lambda function | aes-siem-geoip-downloader | GeoIP のダウンロード |
Lambda function | aes-siem-BucketNotificationsHandler | ログ用 S3 バケットのイベント通知を設定 |
AWS Key Management Service (AWS KMS) CMK & Alias |
aes-siem-key | ログの暗号化に使用 |
Amazon SQS Queue | aes-siem-sqs-splitted-logs | 処理するログ行数が多い時は分割。それを管理するキュー |
Amazon SQS Queue | aes-siem-dlq | OpenSearch Service のログ取り込み失敗用 Dead Ltter Queue |
CloudWatch Events | aes-siem-CwlRuleLambdaGeoipDownloader | aes-siem-geoip-downloader を12時間毎に実行 |
Amazon SNS Topic | aes-siem-alert | OpenSearch Service の Alerting の Destinations で選択 |
Amazon SNS Subscription | inputd email | Alert の送信先メールアドレス |
- AWSマネジメントコンソールの CloudFormation からスタックの aes-siem を削除
- 手動で次の AWS リソースを削除
- OpenSearch Service ドメイン: aes-siem
- Amazon S3 バケット: aes-siem-[AWS_Account]-log
- Amazon S3 バケット: aes-siem-[AWS_Account]-snapshot
- Amazon S3 バケット: aes-siem-[AWS_Account]-geo
- AWS KMS カスタマーマネジメントキー: aes-siem-key
- 削除は注意して行ってください。ログをこのカスタマーマネジメントキーで暗号化していると、キーの削除後はそのログは読み込むことができなくなります。
- SIEM on OpenSearch Service を Amazon VPC 内にデプロイした場合は以下の AWS リソースも削除
- Amazon VPC: aes-siem/VpcAesSiem (VPC を新規に作成した場合)
- SecurityGroup: aes-siem-vpc-sg
注) SIEM on OpenSearch Service をすぐに再デプロイする場合は、KMS CMK のエイリアスが残っているため失敗します。次の AWS CLI コマンドで キーエイリアスを削除してください
export AWS_DEFAULT_REGION=<AWS_REGION>
aws kms delete-alias --alias-name "alias/aes-siem-key"
See CONTRIBUTING for more information.
This library is licensed under the MIT-0 License. See the LICENSE file.
This product uses GeoLite2 data created by MaxMind and licensed under CC BY-SA 4.0, available from https://www.maxmind.com.