drdre4664/AWS-cloud-threat-detection

GitHub: drdre4664/AWS-cloud-threat-detection

通过 Terraform 在 AWS 上快速部署对齐 CIS 标准的云原生威胁检测与告警监控栈。

Stars: 0 | Forks: 0

# AWS 云威胁检测 ## 概述 在 AWS 上部署云原生安全监控栈的基础设施即代码。 利用 CloudTrail、CloudWatch 和 SNS 告警,自动检测可疑活动,包括未经授权的 API 调用、IAM 变更、root 账户 使用以及安全组修改。 ## 架构 ``` AWS Account Activity │ ▼ CloudTrail ──► S3 Bucket (encrypted log storage) │ ▼ CloudWatch Logs ──► Metric Filters ──► Alarms ──► SNS ──► Email Alert ``` ## 检测到的威胁场景 | 场景 | 严重程度 | 检测方法 | |----------|----------|-----------------| | root 账户登录 | 严重 | 基于 CloudTrail 的 CloudWatch 指标过滤器 | | IAM 策略变更 | 高 | 基于 CloudTrail 的 CloudWatch 指标过滤器 | | 安全组修改 | 高 | 基于 CloudTrail 的 CloudWatch 指标过滤器 | | 未经授权的 API 调用 | 中 | 基于 CloudTrail 的 CloudWatch 指标过滤器 | | 禁用用户 MFA | 高 | 基于 CloudTrail 的 CloudWatch 指标过滤器 | | S3 存储桶策略变更 | 高 | 基于 CloudTrail 的 CloudWatch 指标过滤器 | ## 仓库结构 - `terraform/` — 用于部署完整监控栈的 IaC - `alerts/` — CloudWatch 告警示例 payload - `docs/` — 威胁检测方法学与操作手册 ## 展示的技能 - 云安全架构 (AWS) - 基础设施即代码 - 威胁检测工程 - CloudTrail 日志分析 - CloudWatch 告警与监控 - 安全事件关联 ## 前置条件 - 已配置 AWS CLI - 已安装 Terraform - 具有相应权限的 AWS 账户 ## 部署方式 ``` cd terraform terraform init terraform plan terraform apply ``` ## 销毁方式 ``` cd terraform terraform destroy ``` ## 经验总结 ### CloudTrail 与 CloudWatch —— 截然不同的两项职责 ### 过滤器模式决定一切 metric filter 模式决定了具体能检测到什么内容。在使用 `CreateUser` 和 `DeleteUser` 进行测试时,IAM 告警并未触发——因为这些事件未包含在过滤器模式中。该过滤器仅监控策略变更(`CreatePolicy`、`AttachRolePolicy`、`PutUserPolicy` 等)。这是一个极其重要的教训:如果你的过滤器模式未覆盖该事件,无论发生什么,告警都不会触发。务必验证你的模式是否与实际的 CloudTrail 事件名称匹配。 ### CloudTrail 到 CloudWatch 的传输延迟 事件并不会从 CloudTrail 瞬间传输至 CloudWatch。由于 CloudTrail 是批量投递日志,因此会存在 5 到 15 分钟的延迟。在真实的 SOC 环境中,这是预期之内且可接受的——告警会在事件发生后的几分钟内触发,而非几秒内。若要实现真正的实时检测,AWS GuardDuty 处理 CloudTrail 事件的速度快于手动的 CloudWatch pipeline。 ### 触发并验证全部 4 个告警 成功触发并接收到了全部 4 条检测规则的 SNS 邮件通知: - **root 账户使用** —— 以 root 账户登录 AWS 控制台 - **IAM 策略变更** —— 执行了 `aws iam create-policy` 和 `aws iam delete-policy` - **安全组变更** —— 执行了 `aws ec2 create-security-group` 和 `aws ec2 delete-security-group` - **未经授权的 API 调用** —— 对不存在的 role 执行了 6 次 `aws sts assume-role`,引发 `AccessDenied` 错误 ### 阈值设计至关重要 root、IAM 和安全组告警在阈值为 1 时触发——零容忍,一次事件即足够。未经授权的 API 调用告警在阈值为 5 时触发——因为少数几次拒绝调用属于正常的噪音,但 5 分钟内出现 5 次则表明存在主动探测。阈值校准是由分析师根据各类事件的信噪比做出的决策。 ### 控制台验证 —— 可视化确认 Terraform 构建的资源 使用 Terraform 完成部署后,通过 AWS 控制台逐一验证了每个资源: - **CloudTrail → Trails** —— 确认 `cloud-threat-detection-trail` 处于活跃状态,已启用多区域,已连接 S3 存储桶,并且已关联 CloudWatch 日志组 - **CloudWatch → Log groups** —— 确认 `/aws/cloudtrail/cloud-threat-detection` 日志组下拥有 4 个活跃的日志流,正在实时接收事件 - **CloudWatch → Log groups → Metric filters 标签页** —— 直接在控制台中查看了全部 4 个过滤器模式,确认了与 Terraform 部署的 JSON 字段模式完全一致 - **CloudWatch → Alarms** —— 实时监测了全部 4 个告警,观察到每次测试触发后,状态从“数据不足”转变为“告警中” 这是一项关键实践——Terraform 告诉你它*意图*部署什么,而控制台则确认了实际存在且正在运行的内容。两者结合能让你充分确保检测栈处于正常运行状态。 ### Terraform 使其可重复且可审计 整个检测栈——CloudTrail trail、开启加密及阻止公共访问的 S3 存储桶、CloudWatch 日志组、用于日志投递的 IAM role、4 个 metric filter、4 个告警、SNS topic 以及邮件订阅——全都定义在一个 Terraform 文件中。一条 `terraform apply` 即可部署所有内容。一条 `terraform destroy` 便能将其彻底清除。每一项配置决策都经过了版本控制且可审计,这正是 CIS AWS Foundations Benchmark 等合规框架所要求的。 ### CIS Benchmark 对齐 实现的 4 条检测规则与 CIS AWS Foundations Benchmark 的控制项对齐: - root 使用 → CIS 3.3 - IAM 变更 → CIS 3.4 - 安全组变更 → CIS 3.10 - 未经授权的 API 调用 → CIS 3.1 声称你的控制项与 CIS 对齐,意味着你正在实施业界公认的安全标准,而不是在自行编造规则。
标签:AMSI绕过, AWS, DPI, ECS, Terraform, 威胁检测