PeteAndrews1289/aws-hybrid-cloud-security-lab

GitHub: PeteAndrews1289/aws-hybrid-cloud-security-lab

一个 AWS 混合云安全实验室项目,演示 VPC 网络分段、CloudTrail 日志采集与 Splunk SIEM 分析的完整安全监控工作流。

Stars: 0 | Forks: 0

# AWS 混合云安全实验室 ![经过脱敏处理的 AWS 混合云证据概览](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d615190890f846082894fc38f8d9109b7d811c5f6fa4b6438da3cca3efbd9921.svg) ## 概述 本项目展示了一个实践性的 AWS 安全实验室,旨在构建一个小型的混合云环境模型,包含网络分段、受监控的工作负载以及云活动分析。该实验室关注一个常见的云安全问题:基础设施可以通过基本的访问控制进行部署,但防御者仍需要集中的可见性,以了解更改、失败的操作、身份活动以及暴露的服务。 该环境使用了自定义的 AWS VPC(包含公有子网和私有子网)、EC2 实例、安全组、CloudTrail、CloudWatch、S3 日志存储、AWS CLI 自动化以及用于 SIEM 风格分析的 Splunk Enterprise。本代码仓库包含设置说明、安全分析笔记、可重用的检测查询、安全的聚合图表,以及一份详实的证据与局限性记录。 最终的实验室展示了预防和检测两方面的思考:网络分段限制了暴露,CloudTrail 捕获了 AWS API 活动,Splunk 仪表板使活动审查变得更加容易,而调查结果则指出了在更强的安全运营中需要额外日志记录和加固的领域。 ## 核心功能 - 构建了包含公有和私有子网的自定义 AWS VPC,以演示网络分段。 - 部署了公有和私有 EC2 实例,以验证暴露边界。 - 配置了路由表、Internet Gateway 和安全组。 - 通过源 IP 限制了对公有 EC2 实例的 SSH 访问。 - 保持私有 EC2 实例不直接暴露于公共互联网。 - 启用 CloudTrail 并审查了 AWS API 活动。 - 使用 CloudWatch 获取基本的 EC2 指标和环境可见性。 - 使用 AWS CLI 自动化从 S3 检索 CloudTrail 日志。 - 将 CloudTrail JSON 日志导入 Splunk Enterprise。 - 使用 `spath` 和 `mvexpand` 解析嵌套的 CloudTrail 记录。 - 构建了用于 AWS API 活动、EC2 事件、失败操作和趋势的 Splunk 仪表板。 - 针对失败的 API 调用、EC2 状态更改和安全组更改创建了告警说明。 - 记录了有关主机级别日志记录、SSH 可见性和网络流可见性方面的差距。 ## 架构 实验室从分段的 AWS 网络开始。一个公有子网托管了一个可通过互联网访问的 EC2 实例,用于 Web 验证;而私有子网则托管了一个内部 EC2 实例,不直接暴露于公共网络。AWS CloudTrail 记录控制面活动并将日志存储在 S3 中。这些日志通过 AWS CLI 下载并在 Splunk Enterprise 中进行分析,其中的搜索、仪表板和告警提供了安全可见性。 ``` flowchart LR User[Lab Operator] -->|HTTP validation| PublicEC2[Public EC2 Instance] User -->|Restricted SSH| PublicEC2 subgraph AWS[AWS Lab Environment] VPC[Custom VPC] PublicSubnet[Public Subnet] PrivateSubnet[Private Subnet] IGW[Internet Gateway] PublicEC2 PrivateEC2[Private EC2 Instance] SG[Security Groups] CloudTrail[AWS CloudTrail] CloudWatch[Amazon CloudWatch] S3[S3 Log Bucket] end IGW --> PublicSubnet VPC --> PublicSubnet VPC --> PrivateSubnet PublicSubnet --> PublicEC2 PrivateSubnet --> PrivateEC2 SG --> PublicEC2 SG --> PrivateEC2 CloudTrail --> S3 PublicEC2 --> CloudWatch PrivateEC2 --> CloudWatch S3 -->|aws s3 sync| LocalLogs[Downloaded CloudTrail Logs] LocalLogs --> Splunk[Splunk Enterprise] Splunk --> Dashboards[Dashboards] Splunk --> Alerts[Alert Notes] ``` ## 工具与技术 ### 云 / 基础设施 - AWS VPC - 公有和私有子网 - Internet Gateway - 路由表 - EC2 - 安全组 - Amazon S3 ### 安全工具 - AWS CloudTrail - Splunk Enterprise - Splunk 搜索处理语言 (SPL) - Nmap 验证笔记 ### 编程 / 脚本 - AWS CLI - 使用 `aws s3 sync` 的基于 Shell 的日志检索 - Splunk 中的 JSON 解析 ### 监控 / 日志记录 - Amazon CloudWatch EC2 指标 - CloudTrail 事件历史记录 - 基于 S3 的 CloudTrail 日志存储 - Splunk 仪表板和告警 ### 自动化 / CI/CD - 用于可重复 CloudTrail 日志收集的 AWS CLI 自动化 - 本实验室不包含 CI/CD 流水线 ## 演示的安全概念 本项目演示了网络分段、最小权限访问、云日志记录、SIEM 集成、检测工程和安全差距分析。AWS 部分展示了子网部署、路由表、公网 IP 分配和安全组如何影响暴露面。 监控部分展示了 CloudTrail 如何捕获 AWS 控制面活动,同时也强调了其局限性。CloudTrail 对于 API 活动和身份归因非常有用,但它无法捕获主机级别的事件,例如 SSH 会话、shell 命令、操作系统登录失败或进程活动。 Splunk 部分展示了实际的 SIEM 工作:摄入 CloudTrail 日志、解析嵌套的 JSON、编写检测搜索、构建仪表板,以及识别在实际安全运营工作流中至关重要的监控差距。 ## 实施步骤 1. 创建了自定义的 AWS VPC。 2. 添加了公有和私有子网。 3. 配置了路由表和 Internet Gateway。 4. 将公有和私有 EC2 实例部署到独立的网络分段中。 5. 配置了安全组以限制入站访问。 6. 验证了通过 HTTP 的公共 Web 访问。 7. 确认了私有实例无法直接通过互联网访问。 8. 启用 CloudTrail 以捕获 AWS API 活动。 9. 审查了 CloudTrail 事件历史记录和 CloudWatch EC2 指标。 10. 使用 AWS CLI 从 S3 检索 CloudTrail 日志。 11. 在 Splunk 中上传并解析了 CloudTrail 日志。 12. 构建了用于 API 活动、EC2 活动、失败操作和服务趋势的仪表板面板。 13. 记录了关键发现、可见性差距和安全建议。 ## 结果 / 发现 该项目产出了一个限时的 AWS 基础设施实验室,以及一个用于在 Splunk 中审查 CloudTrail 活动的批量 SIEM 工作流。保留的样本包含 40 条 CloudTrail 管理事件,并支持本代码仓库中的实施声明;但其规模不足以得出统计结论。 Splunk 分析显示了常见的 AWS API 活动,例如 `DescribeAlarms`、`DescribeAddresses`、`DescribeSecurityGroups` 和 `GetBucketLogging`。它还揭示了 `GetInsightSelectors` 返回 `InsightNotEnabledException` 的情况,展示了对配置错误或失败操作的基本搜索。 实验室还发现了重要的可见性差距。CloudTrail 提供了强大的 AWS 控制面可见性,但它没有捕获 SSH 登录尝试、操作系统级别的命令或网络扫描详细信息。因此,本项目建议添加主机级别日志、VPC Flow Logs、Systems Manager Session Manager 和集中的端点遥测数据。 ## 证据 - [`docs/evidence-and-limitations.md`](docs/evidence-and-limitations.md) 区分了观察、解释和范围限制。 - [`siem-project/detection-queries.md`](siem-project/detection-queries.md) 包含了可重用的 SPL。 - [`siem-project/siem/splunk-dashboards.png`](siem-project/siem/splunk-dashboards.png) 展示了聚合仪表板。 - [`siem-project/siem/alerts-overview.png`](siem-project/siem/alerts-overview.png) 展示了三个计划告警概念。 - [`automation/s3-log-sync.sh`](automation/s3-log-sync.sh) 是一个可运行的、参数化的批量收集助手。 旧版控制台和原始事件截图已从当前分支中移除,因为它们暴露了过期的凭证标识符、账户标识符和公共网络详细信息。Git 历史记录对代码仓库所有者仍然可恢复,但作品集视图现在遵循更安全的披露做法。 ## 挑战与经验教训 - 分段减少了暴露,但必须添加监控才能检测滥用行为。 - CloudTrail 日志在进行事件级别的 Splunk 分析之前需要进行解析。 - 失败的 API 调用可以揭示配置问题或可疑的尝试。 - 应尽可能减少公共 SSH,或将其替换为 AWS Systems Manager Session Manager。 - 云原生日志需要与主机和网络遥测数据相结合,以实现更强的检测覆盖。 ## 与安全角色的相关性 该项目很好地契合了安全工程师、云安全分析师、SOC 分析师和检测工程师的职责。它展示了实际的 AWS 网络设计、暴露验证、CloudTrail 分析、SIEM 摄入、仪表板创建和安全建议。 它也与 DevSecOps 和云运营角色相关,因为它展示了安全设计决策、可重复的 AWS CLI 工作流以及对可见性差距的清晰记录。 ## 未来改进 - 使用 AWS Systems Manager Session Manager 替换直接的 SSH 访问。 - 启用 VPC Flow Logs 以实现网络级别的可见性。 - 添加来自 EC2 实例的主机级别日志记录。 - 自动转发日志,而不是手动上传下载的 CloudTrail 文件。 - 为检测查询添加独立的 `.spl` 文件。 - 添加经过脱敏处理的 CloudTrail 示例日志。 - 添加 Terraform 或 CloudFormation 以重建环境。 - 使用 IAM 滥用场景和权限提升检测来扩展实验室。 - 添加合成的 CloudTrail 测试夹具和自动化的 SPL 结果验证。
标签:AWS, Cutter, DPI, 安全实验室, 漏洞探索, 网络隔离, 足迹分析