English | Chinese (简体中文) | Chinese (繁體中文)
SIEM on Amazon OpenSearch Service は、セキュリティインシデントを調査するためのソリューションです。Amazon OpenSearch 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 の設定 | 高度なデプロイ | OpenSearch Serverless | ダッシュボード | サポートログタイプ | AWS Control Tower との統合 | Amazon Security Lake との統合 | よくある質問 | 変更履歴 |
SIEM on OpenSearch Service は以下のログを取り込むことができます。
AWS Service | Log | |
---|---|---|
セキュリティ、ID、およびコンプライアンス | AWS CloudHSM | HSM audit logs |
セキュリティ、ID、およびコンプライアンス | Amazon GuardDuty | GuardDuty findings |
セキュリティ、ID、およびコンプライアンス | Amazon Inspector | Inspector 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 |
管理とガバナンス | AWS Config | Configuration 履歴 Configuration スナップショット Config Rules |
管理とガバナンス | AWS Trusted Advisor | Trusted Advisor チェック結果 |
ネットワーキングとコンテンツ配信 | 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) テキスト / Parquet 形式 |
ネットワーキングとコンテンツ配信 | AWS Transit Gateway | VPC Flow Logs (Version6) テキスト / Parquet 形式 |
ネットワーキングとコンテンツ配信 | Elastic Load Balancing | Application Load Balancer access logs Network Load Balancer access logs Classic Load Balancer access logs |
ネットワーキングとコンテンツ配信 | AWS Client VPN | connection log |
ストレージ | 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 ElastiCache | ElastiCache for Redis SLOWLOG |
分析 | Amazon OpenSearch Service | Audit logs |
分析 | Amazon Managed Streaming for Apache Kafka (Amazon MSK) | Broker log |
コンピューティング | Linux OS via CloudWatch Logs |
/var/log/messages /var/log/secure |
コンピューティング | Windows Server 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 |
オープンソースソフトウェア | Apache Web Server | access log(CLF, combined, combinedio with XFF) error log |
オープンソースソフトウェア | NGINX Web Server | access log(combined with XFF) error log |
Experimental Support はログフィールドの正規化等を大きく変更する可能性があります
対応ログは、Elastic Common Schema に従って正規化しています。ログのオリジナルと正規化したフィールド名の対応表は こちら をご参照ください。
Product/Service | Pull Request | Doc | Contributor |
---|---|---|---|
TrendMicro Deep Security | #27 | README | @EijiSugiura |
Okta audit log | #168 | README | @yopiyama |
こちら をご参照ください
CloudFormation テンプレートを使って、SIEM on OpenSearch Service のドメインをパブリックアクセスに作成します。Amazon VPC 内へのデプロイやカスタマイズをする場合の手順は こちら をご参照ください。
IP アドレスに国情報や緯度・経度のロケーション情報を付与することができます。ロケーション情報は MaxMind 社の GeoLite2 Free をダウンロードして活用します。ロケーション情報を付与したい方は MaxMind にて無料ライセンスを取得してください。
実験的に IP アドレス、ドメイン名を元に脅威情報を付与することができます。脅威情報のソースとして、TXT 形式と STIX 形式で作成されたユーザー独自の IoC (Indicators of compromise)、または Tor Project、Abuse.ch Feodo Tracker、AlienVault OTX を選択することができます。IoC 数が多いとは Lambda の処理時間が増えるので、IoC は厳選して下さい。AlienVault OTX の IoC を利用される方は、AlienVault OTX で API キーを取得して下さい。IoC の詳細は IoC による脅威情報の付与 をご参照下さい。
注) CloudFormation テンプレートは OpenSearch Service を t3.medium.search インスタンスでデプロイします。無料利用枠ではありません。また SIEM は、多くのログを集約して負荷が高くなるため、小さい t3 を避けて、メトリクスを確認しつつ最適なインスタンスを選択してください。 インスタンスの変更、ディスクの拡張、UltraWarm の使用等は、AWS マネジメントコンソールから直接行ってください。SIEM on OpenSearch Service の CloudFormation テンプレートは OpenSearch Service に対しては初期デプロイのみで、ノードの変更、削除等の管理はしません。
SIEM on OpenSearch Service をデプロイするリージョンを選択してください。下記にテンプレートがない場合は CloudFormation テンプレート 全リージョン をご確認下さい。
(※) 大阪リージョンのみ導入時は r5.large.search インスタンスでデプロイされます
またはこちらの手順に従って CloudFormation のテンプレートを作成することもできます。
約30分で CloudFormation によるデプロイが完了します。次に、OpenSearch Dashboards の設定をします。
- 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 Amazon OpenSearch Service のワークショップ を用意しています。SIEM の構築、AWS リソースのログの取り込み、OpenSearch Dashboards の使い方、セキュリティインシデントの調査、ダッシュボードの作成、アラートの作成、Apache HTTPD サーバーのログの取り込みを体験できます。
SIEM on OpenSearch Service を新しいバージョンにアップデートする時は、OpenSearch / Elasticsearch のドメインをアップグレードしてから、初期インストールと同じ方法 (CloudFormation or AWS CDK) でアップデートしてください。SIEM の変更履歴は こちら から確認できます。
注) Global tenant の 設定やダッシュボード等は自動で上書きされるのでご注意ください。アップデート前に使用していた設定ファイルやダッシュボード等は S3 バケットの aes-siem-[AWS_Account]-snapshot/saved_objects/ にバックアップされるので、元の設定にする場合は手動でリストアしてください。
注) S3 バケットポリシー、KMS の キーポリシー、IAM ポリシー等は、CDK/CloudFormation で自動生成されています。手動で変更は非推奨ですが、変更している場合は上書きされるので、それぞれをバックアップをしてからアップデート後に差分を更新して下さい。または、CDK/CloudFormation のアップデート時に、パラメーターの LogBucketPolicyUpdate を
keep
とすることで現在のバケットポリシーが維持されます
OpenSearch Service を OpenSearch 1.0 - 2.9 または Elasticsearch 7.10 にアップグレードします。一部の Dashboard は OpenSearch Service 1.1 以上を前提にしています。推奨バージョンは OpenSearch 2.9 の「互換性モードを有効化」です。
- OpenSearch Service コンソール に移動
- [aes-siem] ドメインを選択
- [アクション] アイコンを選択して、プルダウンリストから [ドメインのアップグレード] を選択
- アップグレード先のバージョンで [OpenSearch 2.9] (推奨)、[OpenSearch 1.0 - 2.7] または [Elasticsearch 7.10] を選択
- OpenSearch の場合は、「互換性モードを有効化」にチェックを入れる (推奨)
- [送信] を選択
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 以外のログを取り込みたい方は、こちら をご参照ください。
SIEM と同一アカウント、同一リージョンに S3 バケットがある場合、OpenSearch にログを取り込むことができます。設定方法は 他の S3 バケットからニアリアルタイムの取り込み を参照して下さい。
Python スクリプトの es-loader をローカル環境で実行することで、すでに S3 バケット に保存されている過去のログを SIEM on OpenSearch Service に取り込むことができます。詳細は、S3 バケットに保存された過去データの取り込み を参照して下さい。
es-loader の不必要な呼び出しを避けるため、以下の条件で es-loader をスロットリングします。
- OpenSearch Service クラスターの合計空き容量が 200MB 以下の状態が 30 分間継続し、
aes-siem-TotalFreeStorageSpaceRemainsLowAlarm
が発報した場合。- OpenSearch クラスターのストレージの空き容量が不足している状態です。復旧するには空き容量を増やす必要があります。詳しくは使用可能なストレージ領域の不足を参照してください。
ログの取り込みを再開する場合は、AWS マネジメントコンソールや AWS CLI から Lambda 関数 aes-siem-es-loader
の予約済同時実行数を0から10に戻してください。
また、SQS の Dead Letter Queue からの取り込み を参考にデッドレターキュー (aes-siem-dlq) からメッセージを取り込んでください。
CloudFormation テンプレートで作成される AWS リソースは以下の通りです。AWS Identity and Access Management (IAM) のリソースは AWS マネジメントコンソールから確認してください。
AWS Resource | Resource Name | 目的 |
---|---|---|
OpenSearch Service | 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 を保存 |
Step Functions | aes-siem-ioc-state-machine | IoC のダウンロードと Database の作成 |
Lambda function | aes-siem-aws-api-caller | CDK/CloudFormation から AWS API の呼び出ししに利用 |
Lambda function | aes-siem-ioc-plan | IoC をダウンロードするための map を作成 |
Lambda function | aes-siem-ioc-createdb | IoC をダウンロード |
Lambda function | aes-siem-ioc-download | IoC の Database を作成 |
Lambda function | aes-siem-geoip-downloader | GeoIP のダウンロード |
Lambda function | aes-siem-es-loader | ログを正規化し OpenSearch Service へロード |
Lambda function | aes-siem-es-loader-stopper | 非常時に es-loader をスロットリングするため |
Lambda function | aes-siem-deploy-aes | OpenSearch Service のドメイン作成 |
Lambda function | aes-siem-configure-aes | OpenSearch Service の設定 |
Lambda function | aes-siem-index-metrics-exporter | OpenSearch Service の index に関する メトリクスを収集 |
Lambda function | aes-siem-BucketNotificationsHandler | ログ用 S3 バケットのイベント通知を設定 |
Lambda function | aes-siem-add-pandas-layer | es-loader にaws_sdk_pandas を Lambda レイヤーとして追加 |
AWS Key Management Service (AWS KMS) KMSキー & Alias |
aes-siem-key | ログの暗号化に使用 |
SSM Parameter Store | /siem/bucketpolicy/log/policy1-8 | ログ用 S3 バケットの Bucket Policy の更新時に一時的に使用 |
Amazon SQS Queue | aes-siem-sqs-splitted-logs | 処理するログ行数が多い時は分割。それを管理するキュー |
Amazon SQS Queue | aes-siem-dlq | OpenSearch Service のログ取り込み失敗用 Dead Letter Queue |
CloudWatch alarms | aes-siem-TotalFreeStorageSpaceRemainsLowAlarm | OpenSearch Service クラスターの合計空き容量が 200MB 以下の状態が 30 分間継続した場合に発報 |
CloudWatch dashboards | SIEM | SIEM on OpenSearch Service で利用するリソース情報のダッシュボード |
EventBridge events | aes-siem-EventBridgeRuleStepFunctionsIoc | aes-siem-ioc-state-machine を定期的に実行 |
EventBridge events | aes-siem-EventBridgeRuleLambdaGeoipDownloader | aes-siem-geoip-downloader を12時間毎に実行 |
EventBridge events | aes-siem-EventBridgeRuleLambdaMetricsExporter | aes-siem-index-metrics-exporter を1 時間毎に実行 |
EventBridge events | aes-siem-EsLoaderStopperRule | アラートイベントを es-loader-stopper に渡す |
Amazon SNS Topic | aes-siem-alert | OpenSearch Service の Alerting の Destinations で選択 |
Amazon SNS Subscription | inputed 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 キーのエイリアスが残っているため失敗します。次の 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.
This product uses Tor exit list created by The Tor Project, Inc and licensed under CC BY 3.0 US, available from https://www.torproject.org