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, 威胁检测, 自动化响应