eastonwag/cloud-threat-detection
GitHub: eastonwag/cloud-threat-detection
在 AWS 上实现云安全威胁检测与自动化事件响应的端到端监控流水线,支持对高危安全事件的自动遏制与通知。
Stars: 0 | Forks: 0
# 云威胁检测与自动化响应流水线
## 概述
本项目在 AWS 上实现了一个端到端的云安全监控系统。它收集 API 活动 和网络流量 (VPC Flow Logs),使用 GuardDuty 和 Security Hub 检测威胁,通过 EventBridge 根据严重性级别路由发现的问题,并通过 Step Functions 和 Lambda 自动执行事件响应剧本——所有这一切对于 HIGH/CRITICAL 级别的发现均无需人工干预。
**构建目的:** 展示云安全工程深度——SIEM 概念、AWS 原生威胁检测、自动化事件响应以及基础设施即代码。
## 技术栈
- **基础设施:** Terraform (模块化)
- **检测:** AWS GuardDuty, AWS Security Hub
- **日志来源:** AWS CloudTrail (多区域), VPC Flow Logs
- **事件路由:** AWS EventBridge
- **响应编排:** AWS Step Functions
- **响应操作:** AWS Lambda (Python 3.12)
- **通知:** AWS SNS
## 前置条件
- AWS 账户(建议使用专属账户——每个账户的 GuardDuty 提供 30 天免费试用)
- Terraform >= 1.6.0
- 已配置 AWS CLI
- Python 3.12(用于 Lambda 开发)
- 手动创建 bootstrap 资源(见部署说明)
## 部署说明
### 1. Bootstrap 远程状态(仅一次)
```
# 创建 S3 state bucket
aws s3api create-bucket \
--bucket -tfstate \
--region us-east-1
aws s3api put-bucket-versioning \
--bucket -tfstate \
--versioning-configuration Status=Enabled
aws s3api put-bucket-encryption \
--bucket -tfstate \
--server-side-encryption-configuration \
'{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]}'
# 创建 DynamoDB lock table
aws dynamodb create-table \
--table-name terraform-lock \
--attribute-definitions AttributeName=LockID,AttributeType=S \
--key-schema AttributeName=LockID,KeyType=HASH \
--billing-mode PAY_PER_REQUEST \
--region us-east-1
```
### 2. 配置变量
```
cp environments/dev/terraform.tfvars.example environments/dev/terraform.tfvars
# 使用您的值编辑 terraform.tfvars
```
### 3. 初始化并应用
```
cd environments/dev
terraform init
terraform plan
terraform apply
```
## 测试
无需真实攻击即可生成模拟的 GuardDuty 发现:
```
# 获取您的 detector ID
DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text)
# 生成样本 findings
aws guardduty create-sample-findings \
--detector-id $DETECTOR_ID \
--finding-types \
"UnauthorizedAccess:EC2/SSHBruteForce" \
"UnauthorizedAccess:IAMUser/ConsoleLoginSuccess.B" \
"Recon:EC2/PortProbeUnprotectedPort"
```
运行此命令后:
1. 检查 GuardDuty 控制台中的发现
2. 检查 EventBridge — HIGH 级别的发现应触发 Step Functions
3. 检查 Step Functions 控制台 — 查看在各状态间的执行进度
4. 检查 CloudWatch 控制面板以获取更新的指标
## 响应剧本
当触发 HIGH/CRITICAL 级别的 GuardDuty 发现时:
1. ** enrichment(信息富集)** — Lambda 查找受影响资源的额外上下文
2. **通知** — SNS 向安全团队发送即时警报
3. **遏制** — 根据资源类型:
- EC2:应用隔离安全组,为实例打上 `QUARANTINED` 标签
- IAM:向用户/角色附加全拒绝内联策略
4. **记录** — 将结构化响应记录写入 S3 以备审计追踪
MEDIUM 级别的发现仅进行通知 — 不进行自动遏制。
请参阅 [`docs/mitre-mapping.md`](docs/mitre-mapping.md) 了解各类发现对应的 MITRE ATT&CK 技术。
## 预估成本
| 服务 | 成本 |
|---|---|
| GuardDuty (30 天试用期后) | ~$1-3/天 |
| Step Functions | 可忽略不计 |
| Lambda | 免费套餐 |
| **总计(运行 2 周)** | **~$20-45** |
## 卸载/销毁
```
cd environments/dev
terraform destroy
```
随后手动禁用 GuardDuty,并删除 bootstrap S3 存储桶和 DynamoDB 表。
## 已知局限性
- 单一 AWS 账户(未配置 AWS Organizations — 否则将支持 GuardDuty 委派管理员)
- 无 Kubernetes/EKS 监控(特意排除)
- Step Functions 响应剧本处理 EC2 和 IAM 发现;S3 发现仅进行通知
- 未包含 OpenSearch(改用 CloudWatch Logs Insights)
## 未来改进
- 采用 AWS Organizations 的多账户设置
- EKS 威胁检测
- 在 EC2 隔离前进行自动化取证快照
- 通过 SNS HTTP endpoint 集成 Slack/PagerDuty
- OpenSearch SIEM 控制面板
- 对 CloudTrail S3 日志执行 Athena 查询
标签:AMSI绕过, AWS, DPI, ECS, Terraform, 威胁检测, 自动化响应