SIEM on Amazon OpenSearch Service 架构深度解析:一张图看懂 S3→Lambda→OpenSearch 日志流水线
【免费下载链接】siem-on-amazon-opensearch-serviceA solution for collecting, correlating and visualizing multiple types of logs to help investigate security incidents.项目地址: https://gitcode.com/gh_mirrors/si/siem-on-amazon-opensearch-service
SIEM on Amazon OpenSearch Service是 AWS 官方推出的一套开源安全日志分析解决方案,核心价值在于:把散落在多个 AWS 账户、多个区域的 CloudTrail、GuardDuty、VPC Flow Logs、WAF、Security Hub 等数十种安全日志,通过一条S3→Lambda→OpenSearch的自动化日志流水线集中采集、标准化和关联分析,帮助安全团队快速调查安全事件。整套方案借助 CloudFormation 或 CDK 约 30 分钟即可完成部署,无需自建服务器,非常适合希望以低成本搭建云上 SIEM 平台的中小团队。
下面我们就用一张官方架构图,把这条日志流水线的每一个环节拆开讲清楚。
第一层:多账户多区域的日志收集层
流水线的起点是日志收集层。在业务账户(BU/Develop/Products 账户)中,各 AWS 服务产生的日志通常有两条进入 S3 的路径:
- 直接导出:CloudTrail、VPC Flow Logs、S3 访问日志等服务,可配置直接写入各自的 S3 日志桶。
- 流式接入:通过 Amazon Kinesis Data Firehose 接收实时日志流,再落盘到 S3,适合吞吐量大、需要近实时的场景。
这些分散的日志桶可以通过跨账户、跨区域的方式汇聚到日志账户下的集中式 S3 日志桶(Centralized Log Bucket),形成"日志枢纽",为后续统一处理奠定基础。
第二层:es-loader 核心处理层
这是整条日志流水线的"心脏",也是本文的重点。
S3 事件触发 Lambda
当新日志文件被写入集中式 S3 日志桶时,S3 的对象创建事件通知会自动触发名为aes-siem-es-loader的 Lambda 函数,日志被实时拉入处理流程,无需人工干预。
日志类型识别与解析
es-loader 首先根据日志文件在 S3 中的路径和文件名判断日志类型(如cloudtrail、vpcflow、waf),这一映射关系定义在配置文件中(aws.ini 与可选的 user.ini)。随后,针对不同格式的日志——JSON、CSV、文本、XML、多行日志(如 Windows 事件日志)甚至 Parquet——分别调用对应的解析器进行拆解,相关实现可参考 fileformat_base.py 及其子类。
按 ECS 标准规范化字段
为了让不同来源的日志可以"放在一起查",es-loader 会按照Elastic Common Schema(ECS)将原始字段统一映射为标准字段。例如把各种日志里的 IP 统一映射为source.ip、destination.ip,把时间统一为@timestamp。这一步是 SIEM 能够跨日志类型做关联分析的关键,也是该项目区别于简单"日志搬运工"的核心所在。
富集:GeoIP 地理信息与 IoC 威胁情报
除了解析,es-loader 还会在写入前做两步"增值"处理:
- GeoIP 富集:通过 geodb.py 下载并使用 MaxMind GeoLite2 库(City/ASN),为日志中的 IP 补充国家、城市、经纬度、自治域信息,让攻击来源一目了然。
- IoC 威胁情报:通过 ioc.py 加载自定义的失陷指标(TXT/STIX 2.x 格式)以及 Tor、Feodo Tracker、AlienVault OTX 等情报源,在写入时自动标记命中的恶意 IP 和域名,帮助第一时间发现可疑行为。
写入 OpenSearch Service
处理完成的日志最终被批量写入Amazon OpenSearch Service,并按日志类型自动创建索引(索引可按天/月轮转)。es-loader 的完整调度逻辑见 index.py。
第三层:可视化与告警层
数据进入 OpenSearch 后,就到了分析师最常接触的可视化与告警层:
- OpenSearch Dashboards:项目预置了覆盖 CloudTrail、GuardDuty、Security Hub、VPC Flow Logs、WAF、ELB、RDS 等数十个场景的仪表盘(配置文件位于 saved_objects),开箱即用。下面是两个代表性示例。
- 告警闭环:基于 OpenSearch 查询结果触发告警,通过 Amazon SNS 以邮件、短信等方式通知安全团队,形成"检测—响应"闭环。
一条流水线,几十种日志源
得益于统一的流水线设计,该项目支持非常广泛的日志类型,包括:CloudTrail、GuardDuty、Security Hub、Inspector、WAF、Network Firewall、VPC Flow Logs、CloudFront、Route 53 Resolver、ELB/ALB、RDS(MySQL/PostgreSQL)、ElastiCache、MSK、FSx、WorkSpaces,以及 Linux/Windows 系统日志、Apache/NGINX 访问日志等,完整清单可查看 suppoted_log_type.md。
从部署到自定义:30 分钟快速上手
一键部署:在支持的区域选择对应 CloudFormation 模板(见 cloudformation_list.md)一键创建堆栈,约 30 分钟完成。需要 VPC 私有子网、多账户聚合等高级场景时,可使用 CDK 方式部署,具体步骤见 deployment.md。
灵活配置:想改索引轮转周期、日志路径、排除规则?无需改代码,只需按 aws.ini 的结构新建user.ini(优先级更高),以 Lambda Layer 方式挂载即可,详细说明见 configure_siem.md。下图展示了通过 Parameter Store 配置日志排除规则的界面:
总结
整体来看,SIEM on Amazon OpenSearch Service的 S3→Lambda→OpenSearch 流水线,用最少的组件完成了"采集—解析—规范化—富集—存储—可视化"的全链路:S3 负责低成本汇聚,Lambda(es-loader)承担全部解析与增强逻辑,OpenSearch 提供检索与可视化能力。对于正在 AWS 上寻找高性价比、可快速落地的安全日志分析方案,这条流水线非常值得一试。
【免费下载链接】siem-on-amazon-opensearch-serviceA solution for collecting, correlating and visualizing multiple types of logs to help investigate security incidents.项目地址: https://gitcode.com/gh_mirrors/si/siem-on-amazon-opensearch-service
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考