Tejakarthik200212/cloud-soc-detection-lab

GitHub: Tejakarthik200212/cloud-soc-detection-lab

在 Azure 上通过 Terraform 自动化搭建的云端 SOC 实验环境,结合 Wazuh SIEM 和模拟攻击,用于培养和展示云安全检测工程与事件响应技能。

Stars: 0 | Forks: 0

# 云端 SOC 检测实验室 — Azure 一个基于 Microsoft Azure 搭建的实操型微型安全运营中心 (Security Operations Center):包含一个刻意 设计的易受攻击目标环境、针对它的真实模拟攻击、自托管的 Wazuh SIEM 进行检测,以及完整的事件响应文档——旨在 培养和展示实用的云安全和检测工程技能。 !\[架构图](docs/architecture-diagram.png) ## 本项目展示了什么 * **基础设施即代码** — 整个环境(VNet、NSG、虚拟机、 存储、日志记录)均通过 Terraform 进行创建和销毁 * **SIEM 部署与运营** — 安装、配置并调优了 自托管的 Wazuh SIEM,包括编写和调试自定义检测规则 * **进攻性安全基础** — 在自有实验室环境中执行了侦察、SSH 暴力破解、SQL injection 以及云存储错误配置 * **检测工程** — 验证了 Wazuh 的默认规则集和 自定义编写的规则都能正确检测到暴力破解攻击,并诊断出 文档与实际系统行为之间存在的真实 rule-ID 不匹配问题 * **云安全监控** — 配置并评估了 Azure Activity Log、 Log Analytics 和 Microsoft Defender for Cloud,包括识别和 记录真实的检测覆盖盲区(Free 版本评估延迟、 data-plane 与 control-plane 日志记录的限制) * **事件响应文档** — 编写了两份完整的事件报告, 涵盖不同的攻击类型,遵循标准 IR 结构(摘要、 时间线、检测、分析、遏制、根本原因、补救、 经验教训) * **加固与补救** — 将 NSG 规则限制为 最小权限访问,将公开的存储容器恢复为私有,并记录了 最小权限访问模型的缺口 ## 架构 分段虚拟网络中的两台 Azure 虚拟机: * **受害 VM** — 运行 OWASP Juice Shop(一个故意设计存在漏洞的 Web 应用) 并且是所有四次攻击的目标 * **Wazuh SIEM VM** — 运行 Wazuh manager、indexer 和 dashboard;接收 来自受害 VM 的 Wazuh agent 的日志 辅助的原生 Azure 监控:Activity Log、Log Analytics Workspace、 Microsoft Defender for Cloud,以及一个存储帐户(包含一个故意 配置错误的演示容器)。 完整图表见上文;请参阅 `docs/architecture-diagram.png`。 ## 模拟的攻击 |#|攻击|工具/方法|MITRE ATT\&CK| |-|-|-|-| |1|侦察 / 端口扫描|nmap|T1046| |2|SSH 暴力破解|手动 + 脚本化的重复登录尝试|T1110| |3|SQL injection(身份验证绕过)|对 Juice Shop 登录页面执行 `' OR 1=1--`|—| |4|云存储错误配置|Azure CLI (`set-permission`) + curl|T1530| ## 检测结果 * Wazuh 的内置规则集自动检测到了暴力破解攻击 (规则 5763 — "possible breakin attempt") * 编写了自定义的 Wazuh 规则 (ID 100010),专门用于对 2 分钟窗口内 6 次以上的 SSH 登录失败发出警报,并映射到 MITRE ATT\&CK T1110 * 由于 event-ID 不匹配,自定义规则最初未能触发 (文档假设为传统的 syslog 事件 5716;但此环境基于 journald 的 日志记录实际产生的是事件 5760)——通过根据实际系统输出进行验证而非盲目假设 文档中的默认值,从而诊断并修复了该问题 * 存储错误配置已通过直接验证确认;Defender for Cloud(Free 版本)在观察窗口内未显示相关建议,并且由于更改发生在 data-plane 层面,Activity Log 也未捕获到该更改——这两点都被如实地 作为真实的检测覆盖盲区记录在案 ## 事件报告 * [`docs/incident-report-ssh-bruteforce.md`](docs/incident-report-ssh-bruteforce.md) * [`docs/incident-report-blob-exposure.md`](docs/incident-report-blob-exposure.md) ## 构建方式 完整的逐步构建文档,包括确切的命令和 故障排除说明,均位于 [`docs/`](docs/) 中 — 请参阅 `phase-0.md` 到 `phase-10.md`。本项目在完全没有先前 Azure/Terraform/Wazuh 经验的情况下构建;阶段文档和一份[面试准备指南](docs/interview-prep.md) 反映了真实的设置、调试和学习过程,包括解决 虚拟机尺寸停用、区域容量限制、agent/manager 版本 不匹配以及网络问题——这是真正的故障排除经验,而不仅仅是 照本宣科的演练。 ## 技术栈 Azure(虚拟机、VNet/NSG、存储、Log Analytics、Defender for Cloud) · Terraform · Wazuh · Docker · OWASP Juice Shop · nmap ## 成本 构建时尽量利用 Azure Free Tier 将成本维持在接近 $0;其中一台虚拟机 从 Free 版本规格升级为了 `Standard\\\_B2s\\\_v2`(每小时几美分),这是在确认 Free 版本规格没有足够的 RAM 供 Wazuh indexer 组件使用后做出的决定——这作为一个真实的基础设施规模决策 被记录下来。 powershell -Command "Add-Content README.md \\"`n## Note on Terraform setup`n`nThis repo intentionally excludes 'terraform/variables.tf' and 'terraform/terraform.tfvars'. To reuse this project, create your own 'variables.tf' declaring 'subscription\_id', 'location', and 'my\_ip' as string variables, and your own 'terraform.tfvars' supplying your real values. See the phase docs (docs/phase-1.md) for the exact variable names and format expected.\\""
标签:CISA项目, ECS, Terraform, Wazuh, 安全运营中心, 库, 应急响应, 网络映射, 请求拦截