MCPcopy Index your code
hub / github.com/aws-samples/siem-on-amazon-opensearch-service

github.com/aws-samples/siem-on-amazon-opensearch-service @v2.10.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.10.5 ↗ · + Follow
530 symbols 1,459 edges 79 files 27 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SIEM on Amazon OpenSearch Service

English | Japanese (日本语) | Chinses (繁体中文)

SIEM on Amazon OpenSearch Service 是一套免费而完整的安全性事件管理(SIEM)解决方案。让你可从多个AWS账户中收集各种日志类型,并通过日志关联与可视化协助调查安全事件。可以在约30分钟内,透过AWS Cloud开发套件(AWS SDK)或AWS CloudFormation轻松完成SIEM部署。当AWS服务日志存放到指定的Amazon Simple Storage Service (Amazon S3)存储桶后,会自动触发专门的AWS Lambda 函数,并将日志加载至 SIEM on OpenSearch Service 当中。您通过仪表板浏览各项关联记录,以便作出分析及应对。

前往 | 配置AWS服务日志来源 | OpenSearch Service上更改SIEM的配置 | 高级部署 | 仪表板 | 支持的日志类型 (英语) | FAQ | 变更日志 (英语) |

Sample dashboard

基本架构

基本架构

支持日志类型

SIEM on OpenSearch Service 能够加载并关联以下日志类型。

Amazon 服务 日志
Security, Identity, & Compliance AWS CloudHSM HSM audit logs
Security, Identity, & Compliance Amazon GuardDuty GuardDuty 问题清单
Security, Identity, & Compliance Amazon Inspector Inspector 问题清单
Security, Identity, & Compliance AWS Directory Service Microsoft AD
Security, Identity, & Compliance AWS WAF AWS WAF Web ACL 流量信息

AWS WAF Classic Web ACL 流量信息| |Security, Identity, & Compliance|AWS Security Hub|Security Hub 问题清单

GuardDuty 问题清单

Amazon Macie 问题清单

Amazon Inspector 问题清单

AWS IAM Access Analyzer 问题清单| |Security, Identity, & Compliance|AWS Network Firewall|Flow logs

Alert logs| |Management & Governance|AWS CloudTrail|CloudTrail Log Event

CloudTrail Insight Event| |Management & Governance|AWS Trusted Advisor|Trusted Advisor Check Result| |Networking & Content Delivery|Amazon CloudFront|标准访问日志

实时日志| |Networking & Content Delivery|Amazon Route 53 Resolver|VPC DNS 查询日志| |Networking & Content Delivery|Amazon Virtual Private Cloud (Amazon VPC)|VPC Flow Logs (Version5)

Text / Parquet Format| |Networking & Content Delivery|AWS Transit Gateway|VPC Flow Logs (Version6)

Text / Parquet Format| |Networking & Content Delivery|Elastic Load Balancing|Application Load Balancer 访问日志

Network Load Balancer 访问日志

Classic Load Balancer 访问日志| |Networking & Content Delivery|AWS Client VPN|connection log 连接日志| |Storage|Amazon FSx for Windows File Server|audit log| |Storage|Amazon Simple Storage Service (Amazon S3)|访问日志| |Database|Amazon Relational Database Service (Amazon RDS)

(试验中)|Amazon Aurora(MySQL)

Amazon Aurora(PostgreSQL)

Amazon RDS for MariaDB

Amazon RDS for MySQL

Amazon RDS for PostgreSQL| |Analytics|Amazon Managed Streaming for Apache Kafka (Amazon MSK)|Broker log| |Compute|Linux OS

通过 CloudWatch Logs|/var/log/messages

/var/log/secure| |Compute|Windows Servver 2012/2016/2019

通过 CloudWatch Logs|System event log

Security event log| |Containers|Amazon Elastic Container Service (Amazon ECS)

通过 FireLens|仅框架| |End User Computing|Amazon WorkSpaces|Event log

Inventory| |Open Source Software|Apache Web Server|access log(CLF, combined, combinedio with XFF)

error log| |Open Source Software|NGINX Web Server|access log(combined with XFF)

error log|

我们以后有机会修改 Database (试验中) 日志存放内容来优化功能。

以上日志将根据 Elastic Common Schema 进行标準化。请浏览此处浏览此处去了解相关字段名称对照表。

仪表板

详见 此处

入门教程

在本教程中,我们将通过CloudFormation模板在OpenSearch Service上建立可被公开访问的SIEM系统。如果您需要在Amazon VPC内部署SIEM,或者调整其他自定义,请参阅高级部署说明

您可以将国家/地区信息与纬度/经度位置信息添加至各个IP地址。要获取位置信息,SIEM on OpenSearch Service将下载并使用 MaxMind 提供的GeoLite2 Free。如果您希望添加其他位置信息,请从MaxMind获取免费许可证。

注意: CloudFormation模板将使用(t3.medium.search实例)部署OpenSearch Service。我们建议使用t3以上的高性能类实例来架构你的生產环境SIEM,因为在日志聚合过程中需要较为强大的处理性能。 您可以使用Amazon管理控制台更改实例类型、扩展存储卷或使用经济实惠的 UltraWarm 储存节点。请注意,SIEM on OpenSearch Service的CloudFormation模板在设计上仅适用於初始部署目的,无法实现节点更改/删除等管理操作。

1. 快速入门

通过以下选项,选择SIEM on OpenSearch Service部署所在的区域: If there is no region below, please check CloudFormation Template For All Regions.

区域 CloudFormation Template URL
中国 (北京) cn-north-1 Deploy in cn-north-1 https://aes-siem-solutions-cn-north-1.s3.cn-north-1.amazonaws.com.cn/siem-on-amazon-opensearch-service-china.template
中国 (宁夏) cn-northwest-1 Deploy in cn-northwest-1 https://aes-siem-cn-northwest-1.s3.cn-northwest-1.amazonaws.com.cn/siem-on-amazon-opensearch-service-china.template
美国东部 (弗吉尼亚北部) us-east-1 Deploy in us-east-1 https://aes-siem-us-east-1.s3.amazonaws.com/siem-on-amazon-opensearch-service.template
亚太地区 (香港) ap-east-1 Deploy in ap-east-1 https://aes-siem-ap-east-1.s3.amazonaws.com/siem-on-amazon-opensearch-service.template
亚太地区 (新加坡) ap-southeast-1 Deploy in ap-southeast-1 https://aes-siem-ap-southeast-1.s3.amazonaws.com/siem-on-amazon-opensearch-service.template
亚太区域 (东京) ap-northeast-1 Deploy in ap-northeast-1 https://aes-siem-ap-northeast-1.s3.amazonaws.com/siem-on-amazon-opensearch-service.template

或者,您可以按照以下步骤创建自己的模板。

2. 创建CloudFormation模板

如果您已经在第1步中使用CloudFormation模板部署了SIEM on OpenSearch Service,请直接跳过此步骤。

2-1. 先决条件

我们需要使用以下实例与工具创建CloudFormation模板:

  • 运行Amazon Linux 2023的Amazon EC2实例
  • "Development Tools"
  • Python 3.14
  • Python 3.14 库与头文件
  • git

如果尚未安装以上工具,请运行下列命令:

sudo dnf install -y python3.14 python3.14-devel python3.14-pip git jq tar

2-2. 复製SIEM on OpenSearch Service

如果尚未安装以上工具,请运行下列命令:

cd
git clone https://github.com/aws-samples/siem-on-amazon-opensearch-service.git

2-3. 设置环境变量

export TEMPLATE_OUTPUT_BUCKET=<YOUR_TEMPLATE_OUTPUT_BUCKET> # Name of the S3 bucket where the template is loaded
export AWS_REGION=<AWS_REGION> # Region where the distribution is deployed

注意: $TEMPLATE_OUTPUT_BUCKET是S3存储桶名称,你需要预先建立好这S3存储桶。此存储桶会用来存放部署过程中需要分发的文件,因此需要开放公开访问。这里的build-s3-dist.sh脚本(用於创建模板)不会创建任何S3存储桶

2-4. 打包AWS Lambda函数并建立模板

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

2-5. 将程序上传至您的Amazon S3存储桶

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存储桶。在文件上传之后,还应确保为文件设置正确的访问策略。

2-6. 部署SIEM on OpenSearch Service

模板将被上传到 示例 https://customers3bucket.s3.Region.amazonaws.com.cn/$TEMPLATE_OUTPUT_BUCKET/siem-on-amazon-opensearch-service.template 位置。使用AWS CloudFormation即可部署这套模板。

3. 配置OpenSearch Dashboards

SIEM on OpenSearch Service大概需要30分钟来完成部署。随后即可着手配置OpenSearch Dashboards。

注意: OpenSearch Service 的 OpenSearch 控制面板默认安装包括地图服务,但印度和中国区域的域除外。所以在OpenSearch Service 并不能直接提供地图显示功能。如果需要显示地图,需要自行安装WMS地图服务器。

  1. 导航至Amazon CloudFormation控制台,选择我们刚刚创建的堆栈,尔后选择右上选项卡清单中的“Outputs”选项。在这里,您将找到用户名、密码与OpenSearch Dashboards的URL。使用相应凭证登录至OpenSearch Dashboards。

  2. 要导入仪表板等OpenSearch Dashboards配置文件,请下载 saved_objects.zip,而后执行解压。

  3. 导航至OpenSearch Dashboards控制台,点击左侧窗格中的“Management”,而后选择 "Saved Objects" --> "Import" --> "Import"。选择解压后文件夹中的 dashboard.ndjson 文件,而后登出并再次登录,确保所导入的配置正确起效。

4. 将日志加载至OpenSearch Service

要将日志加载至SIEM on OpenSearch Service,我们只需要将日志PUT进名为 aes-siem--log.的S3存储桶内。在此之后,各日志将自动被加载至SIEM on OpenSearch Service。关於如何将Amazon服务日志输出至S3存储桶的更多操作细节,请参阅此处

更新SIEM

如果您希望将SIEM on OpenSearch Service更新为最新版本,请升级OpenSearch/Elasticsearch域,而后按初始设置方式(使用CloudFormation或AWS CDK)进行更新。您可以在此处查看SIEM变更日志。

升级OpenSearch Service域(Domain)

将OpenSearch升级至1.0版本:

  1. 导航至 OpenSearch Service控制台
  2. 选定域: [aes-siem]
  3. 选择 [Actions] 图标,而后在下拉清单中选择 [Upgrade domain]
  4. 在 "Version to upgrade to"部分,选择 [OpenSearch 2.19] 后选择[Submit]

如果您选择使用CloudFormation进行初始设置,请继续执行下一步。如果您使用AWS CDK进行初设置,请参阅高级部署中的 “使用AWS CDK更新SIEM” 部分。

更新CloudFormation堆栈(Stack)

您可以按以下方式指定CloudFormation模板,藉此更新CloudFormation堆栈: CloudFormation Template For All Regions.

  1. 导航至 CloudFormation控制台
  2. 选择堆栈 [aes-siem]
  3. 在屏幕右上方选择 [Update]
  4. 在Update stack中,执行以下操作:
    • 准备模板: [Replace current template]
    • 模板来源: [Amazon S3 URL]
    • Amazon S3 URL:
    • 选择 [Next]
  5. 其餘设置全部保留为默认形式,而后点击 Next 即可完成。

至此,更新过程即完成。

变更配置

在部署之后,变更OpenSearch Service域资源

如果您希望对OpenSearch Service域做出变更,例如变更OpenSearch Service的访问策略、变更实例类型、变更可用区或添加新可用区,或者变更UltraWarm,请通过 OpenSearch Service 管理控制台 执行变更操作。

管理SIEM索引与定製化设置

SIEM on OpenSearch Service将日志保存在索引当中,并每月轮换一次。如果要更改这一时间间隔或者从非Amazon服务处加载日志,请参阅此处

通过批处理方式加载已存储的日志

您可以在本地环境中执行Python脚本es-loader,藉此将存储在S3存储桶内的过往日志加载至SIEM on OpenSearch Service当中。

由CloudFormation模板创建的Amazon资源

以下为CloudFormation模板所能创建的Amazon资源列表。您可以从Amazon管理控制台内找到各项Amazon身份与访问管理(IAM)资源。

AWS 资源 资源名称 用途
OpenSearch Service aes-siem SIEM 本体
S3 存储桶 aes-siem-[AWS_Account]-log 用於收集日志
S3 存储桶 aes-siem-[AWS_Account]-snapshot 用於捕捉OpenSearch Service手动快照
S3 存储桶 aes-siem-[AWS_Account]-geo 用於存储下载得到的GeoIP
Step Functions aes-siem-ioc-state-machine For downloading IoC and creating database
Lambda 函数 aes-siem-ioc-plan For creating map to download IoC
Lambda 函数 aes-siem-ioc-createdb For downloading IoC
Lambda 函数 aes-siem-ioc-download For creating IoC Database
Lambda 函数 aes-siem-geoip-downloader 用於下载GeoIP
Lambda 函数 aes-siem-es-loader 用於标準化日志,并将结果加载至OpenSearch Service
Lambda 函数 aes-siem-deploy-aes 用於创建OpenSearch Service域
Lambda 函数 aes-siem-configure-aes 用於配置OpenSearch Service
Lambda 函数 aes-siem-BucketNotificationsHandler 用於为存储日志的S3存储桶配置发现通知
Lambda 函数 aes-siem-add-pandas-layer For adding aws_sdk_pandas as Lambda layer to es-loader
AWS Key Management Service

(AWS KMS) CMK 与别名|aes-siem-key|用於加密日志| |Amazon SQS Queue|aes-siem-sqs-splitted-logs|如果日志中包含多个待处理行,则将各行划分为多个部分;代表用於协调的队列| |Amazon SQS Queue|aes-siem-dlq|在将日志加载至OpenSearch Service中发生失败时,使用的死信队列| |CloudWatch alarms|aes-siem-TotalFreeStorageSpaceRemainsLowAlarm|Triggered when total free space for the OpenSearch Service cluster remains less than 200MB for 30 minutes| |CloudWatch dashboards|SIEM|Dashboard of resource information used by SIEM on OpenSearch Service| |EventBridge events|aes-siem-EventBridgeRuleStepFunctionsIoc|For executing aes-siem-ioc-state-machine regularly| |EventBridge events|aes-siem-EventBridgeRuleLambdaGeoipDownloader| 用於每天执行aes-siem-geoip-downloader| |EventBridge events|aes-siem-EventBridgeRuleLambdaMetricsExporter| For executing aes-siem-geoip-downloader every 1 hour| |EventBridge events|aes-siem-EsLoaderStopperRule|For passing alarm events to es-loader-stopper| |Amazon SNS Topic|aes-siem-alert|被选定为OpenSearch Service中的警报发送目的地| |Amazon SNS Subscription|inputd email|作为警报发送目标的电子邮件地址|

资源清理

  1. 导航至CloudFormation控制台并删除堆栈: aes-siem
  2. 手动删除以下Amazon资源:
    • 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
      • 请谨慎执行删除操作。在删除此客户託管密钥之后,您将无法访问使用此密钥进行加密的日志记录。
  3. 如果您将SIEM on OpenSearch Service部署至Amazon VPC之内,请同时删除以下Amazon资源:
    • Amazon VPC: aes-siem/VpcAesSiem (如果您创建了新VPC)
    • SecurityGroup: aes-siem-vpc-sg

注意: 如果您希望在删除之后立即重新部署SIEM on OpenSearch Service,请使用以下Amazon CLI命令删除密钥别名。否则由於KMS CMK别名仍然存在,重新部署将提示失败

export AWS_DEFAULT_REGION=<AWS_REGION>
aws kms delete-alias  --alias-name  "alias/aes-siem-key"

安全性

详见 贡献 以获取更多详细信息。

许可证

此解决方案遵循 MIT-0 授权许可证。详见 LICENSE 文件。

此產品使用MaxMind创建的GeoLite2数据,并遵循 CC BY-SA 4.0许可证,详见https://www.maxmind.com

This pr

Core symbols most depended-on inside this repo

json
called by 15
source/lambda/es_loader/siem/__init__.py
output_message
called by 14
source/lambda/deploy_es/index.py
dict_to_list
called by 9
source/lambda/es_loader/siem/sf_config_snapshot.py
ssm_put_parameter
called by 8
source/lambda/deploy_es/index.py
get_value_from_etl_config
called by 8
source/lambda/es_loader/index.py
auth_aes
called by 6
source/lambda/deploy_es/index.py
_insert_ipaddr
called by 6
source/lambda/ioc_database/lambda_function.py
process_record
called by 6
source/lambda/es_loader/index.py

Shape

Function 285
Method 196
Class 45
Route 4

Languages

Python92%
TypeScript8%

Modules by API surface

source/lambda/es_loader/siem/utils.py55 symbols
source/lambda/es_loader/siem/__init__.py52 symbols
source/lambda/deploy_es/index.py42 symbols
source/lambda/aws_api_caller/index.js40 symbols
source/lambda/ioc_database/lambda_function.py38 symbols
source/cdk-deployment-samples/deployment_samples/deployment_samples_stack.py34 symbols
source/lambda/es_loader/index.py20 symbols
source/lambda/index_metrics_exporter/index.py14 symbols
source/cdk/mysiem/aes_siem_stack.py13 symbols
source/lambda/es_loader/siem/ioc.py11 symbols
source/lambda/geoip_downloader/index.py9 symbols
source/lambda/es_loader/siem/xff.py9 symbols

For agents

$ claude mcp add siem-on-amazon-opensearch-service \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page