OluwapelumiAdeoye/Cloud-SIEM--Wazuh-
GitHub: OluwapelumiAdeoye/Cloud-SIEM--Wazuh-
在 AWS 上构建的端到端云端威胁检测 pipeline,通过 Wazuh SIEM 实时分析 CloudTrail 日志并发出基于 MITRE ATT&CK 映射的邮件告警。
Stars: 0 | Forks: 0
# AWS 上的云端 SIEM 实验环境
一个完全从零开始构建的、功能完备的云端威胁检测 pipeline,使用 Wazuh、AWS CloudTrail、S3、SQS、EC2 和 SNS —— 完全通过 CLI 操作。
## 功能简介
监控 AWS 账户中的每一个 API 调用,实时分析日志,触发映射到 MITRE ATT&CK 的自定义检测规则,并通过 SNS 发送电子邮件警报。
```
CloudTrail → S3 → SQS → Wazuh (EC2) → Detection Rules → SNS → Email
```
## 架构
| 组件 | 作用 |
|-----------|------|
| AWS CloudTrail | 记录所有区域的所有 API 调用,并启用日志文件验证 |
| S3 Bucket | 存储压缩的 CloudTrail 日志 —— 阻止公共访问,配置了仅限 CloudTrail 的存储桶策略 |
| SQS Queue | 将 S3 事件通知排队 —— Wazuh 每 5 分钟轮询一次 |
| EC2 (Wazuh) | All-in-one SIEM —— 在 Ubuntu 22.04 上集成了 Manager、Indexer 和 Dashboard |
| IAM Role | 最小权限 —— 仅拥有 S3/SQS 的只读访问权限,无硬编码凭证 |
| SSM Session Manager | 零开放端口的 EC2 访问 —— 所有会话均经过审计 |
| SNS Topic | 针对 10 级以上规则触发的实时电子邮件警报 |
## 检测规则
| 规则 ID | 描述 | 等级 | MITRE |
|---------|-------------|-------|-------|
| 100010 | 检测到 AWS root 账户登录 | 12 — 高危 | T1078 |
| 100011 | S3 存储桶策略被修改 | 14 — 严重 | T1530 |
| 100012 | 附加了 IAM 策略 —— 存在权限提升风险 | 10 — 中危 | T1548 |
## 安全设计决策
- **最小权限 IAM** —— Wazuh EC2 角色仅拥有对 S3 和 SQS 的只读访问权限
- **无硬编码凭证** —— 由 EC2 实例角色处理身份验证,临时凭证会自动轮换
- **零开放端口** —— 没有 SSH,没有端口 22。EC2 完全通过 SSM Session Manager 进行访问
- **日志完整性** —— 启用了 CloudTrail 日志文件验证,每个文件均带有 SHA-256 哈希值
- **事件驱动架构** —— S3 在新日志到达时通知 SQS,Wazuh 采取响应式机制而非盲目轮询
- **阻止公共访问** —— S3 存储桶在存储桶级别进行了安全加固,而不仅仅是在策略级别
## 项目结构
```
siem_aws/
├── cloudtrail-bucket-policy.json # S3 bucket policy — CloudTrail write only
├── sqs-policy.json # SQS policy — S3 bucket notifications only
├── ec2-trust-policy.json # IAM trust policy — EC2 assume role
├── s3-notification.json # S3 → SQS event notification config
├── vars.sh # Environment variables (do not commit secrets)
├── screenshots/ # Dashboard, alert, and CLI screenshots
└── docs/ # Full project write-up
```
## 构建阶段
**阶段 1 — AWS 基础设施**
- 配置了带有公共访问阻止和仅限 CloudTrail 存储桶策略的 S3 存储桶
- 配置了带有日志文件验证的多区域 CloudTrail
- 将 SQS 队列连接到 S3 事件通知
- 配置了具有最小权限和 EC2 实例配置文件的 IAM 角色
**阶段 2 — EC2 与 Wazuh 安装**
- EC2 t3.medium,Ubuntu 22.04,20GB EBS,2GB swap
- Wazuh 4.7.5 all-in-one 安装 (Manager + Indexer + Dashboard)
- 使用 SSM Session Manager 实现零端口访问
**阶段 3 — CloudTrail 日志摄取**
- 在 `ossec.conf` 中配置了 Wazuh `aws-s3` wodle
- 5 分钟轮询间隔
- 通过实时 CloudTrail 事件验证了端到端的 pipeline
**阶段 4 — 自定义检测规则**
- 使用 Wazuh XML 编写了三条自定义规则
- 为提高效率,基于基础 CloudTrail 规则 (SID 80202) 进行链接
- 映射到 MITRE ATT&CK 框架
- 进行了实时测试 —— 规则 100012 成功捕获了真实的 IAM 策略附加操作
**阶段 5 — SNS 电子邮件警报**
- 在 `/var/ossec/integrations/custom-sns` 处配置了自定义集成脚本
- 使用 EC2 实例角色通过 AWS CLI 发布到 SNS 主题
- 在 10 级以上警报时触发
- 已进行测试 —— 收到了包含完整取证详情的实时电子邮件
## 关键概念
- **隐式拒绝** —— 所有 AWS 服务默认拒绝,每一项权限都必须显式声明
- **爆炸半径缩减** —— 最小权限机制限制了任何组件遭到破坏时所受的损害
- **事件驱动架构** —— 对事件做出响应,拒绝盲目轮询
- **检测工程** —— 针对真实世界攻击技术的自定义规则
- **防止警报疲劳** —— 阈值设置为 10 级以上,低严重性事件仅记录不发送电子邮件
## 技术栈
`AWS CloudTrail` · `S3` · `SQS` · `EC2` · `IAM` · `SSM` · `SNS` · `Wazuh 4.7.5` · `Ubuntu 22.04` · `AWS CLI v2`
## 作者
由 Oluwapelumi Adeoye 构建 —— 个人云端安全项目。
[LinkedIn](www.linkedin.com/in/oluwapelumiadeoyedavid/) · [Notion 文章](https://oluwapelumi-adeoye.notion.site/Cloud-Based-SIEM-Security-Information-and-Event-Management-System-hosted-on-AWS-36d282b9dd9180758c06c52851195c4f)
标签:AMSI绕过, AWS, CSV导出, DPI, Wazuh, 威胁检测, 漏洞探索