RealPhantomLee/azure-security-monitoring-lab

GitHub: RealPhantomLee/azure-security-monitoring-lab

一个端到端的 Azure 安全加固与监控实验室,通过 NSG 加固、集中化日志、KQL 检测和告警规则实现完整的云安全运营流程。

Stars: 0 | Forks: 0

# Cell B — Azure 安全加固与监控实验室 **端到端的 Azure 安全:NSG IP 白名单限制、仅限密钥的 SSH、通过 Azure Monitor Agent 将 syslog 集中接入 Log Analytics、针对 SSH 成功/失败/暴力破解的 KQL 检测,以及针对暴力破解阈值和心跳停滞的告警规则。** 这是 Cloud Cells 系列的 **Cell B** — 参见[相关项目](#related-projects)。 ## 生命周期 ``` Provision → Harden → Monitor → Detect → Respond → Improve ``` 本实验室涵盖了 Azure 中完整的安全运营生命周期:搭建基础设施(Cell A),对其进行加固(NSG、仅限密钥的 SSH),为其安装监控工具(Log Analytics + AMA + DCR),编写 KQL 检测规则,配置告警,并通过触发告警来进行验证。 ## 构建与验证的内容 | 能力 | 实现方式 | 验证证据 | |------------|----------------|-------| | 网络暴露控制 | NSG `nsg-cloudcells-mgmt` 配置了限定为 `/32` 的 `Allow-SSH-MyIP` | NSG 规则截图 | | 仅限密钥的 SSH 访问 | 禁用密码认证;要求使用 SSH 密钥 | sshd_config + 登录证明 | | 集中化日志记录 | Log Analytics Workspace `law-cloudcells-b` + AMA + DCR `dcr-cloudcell-b-linux`(`LOG_AUTH`, `LOG_AUTHPRIV`) | DCR + LAW 截图 | | 心跳验证 | Heartbeat 表格返回了 VM 行记录 | KQL 输出截图 | | Syslog 验证 | Syslog 表格返回了 auth / authpriv 行记录 | KQL 输出截图 | | SSH 成功检测 | 在 `Syslog` 上针对 `Accepted publickey/password` 进行 KQL 查询 | KQL 输出 | | SSH 失败检测 | 在 `Syslog` 上针对 `Invalid user`, `Failed publickey/password` 进行 KQL 查询 | KQL 输出 | | 暴力破解检测 | 阈值查询:5分钟内失败次数 ≥ 5 次 | KQL 输出 + 触发的告警 | | 心跳停滞告警 | 当 `LastSeen < ago(5m)` 时触发 `heartbeat-stale-5m` Sev 3 | 告警详情截图 | ## 环境 - 资源组:`rg-cloudcells-a` - VM:`vm-mgmt-ubuntu-01` - 公网 IP:``(请替换为您部署时分配的 IP) - 内网 IP:`10.0.2.4` - NSG:`nsg-cloudcells-mgmt` - 规则:`Allow-SSH-MyIP` (22/TCP) - 源 IP:`/32`(必须在 IP 变更时进行更新) - 目标 IP:`10.0.2.4` ## 检测 (KQL) 完整查询位于 [`logs/detections.md`](logs/detections.md): - Heartbeat 接入检查 - SSH 成功(`Accepted publickey/password`) - SSH 失败(`Invalid user` / `Failed publickey/password`) - 暴力破解阈值查询(5分钟内失败次数 ≥ 5 次) ## 告警 完整规则定义位于 [`alerts/alert-rules.md`](alerts/alert-rules.md): | 告警 | 严重程度 | 触发条件 | |-------|----------|---------| | `ssh-bruteforce-5in5m` | Sev 3 | KQL 暴力破解查询返回结果 > 0 | | `heartbeat-stale-5m` | Sev 3 | `LastSeen < ago(5m)`(agent 停止报告) | ## 证据 截图位于 [`screenshots/`](screenshots/) — 关键的验证产物: - 显示 SSH 限制为 `/32` 的 NSG 规则 - Network Watcher **IP Flow Verify = Allowed** - DCR 创建 + LAW 工作区创建 - KQL 查询结果(Heartbeat / Syslog / SSH 成功 / SSH 失败) - 触发的告警及告警详情面板 ## 简历要点 可直接复制/粘贴: - 通过 NSG IP 白名单限制入站 SSH 并强制实施仅限密钥的认证,从而加固了 Azure VM 的访问安全。 - 使用 Azure Monitor Agent + Data Collection Rule 将 Linux 认证日志集中接入 Log Analytics Workspace。 - 构建并验证了针对 SSH 成功/失败的 KQL 检测,并针对暴力破解行为和心跳停滞配置了告警规则。 ## 仓库结构 | 路径 | 用途 | |------|---------| | [`hardening/`](hardening/) | NSG 配置和 SSH 加固说明 | | [`monitoring/`](monitoring/) | Log Analytics + AMA + DCR 设置 | | [`logs/detections.md`](logs/detections.md) | KQL 检测(heartbeat、SSH 成功/失败、暴力破解) | | [`alerts/alert-rules.md`](alerts/alert-rules.md) | 告警规则定义 | | [`incident-simulation/`](incident-simulation/) | 触发告警的暴力破解演练 | | [`remediation/`](remediation/) | 响应措施与经验教训 | | [`screenshots/`](screenshots/) | 验证产物 | | `lessons-learned.md` | 实践笔记 | | `review_cellb.sh` | 自我审查检查器 | ## 相关项目 - [azure-fundamentals-cell](https://github.com/RealPhantomLee/azure-fundamentals-cell) — Cell A:基础设施(前置条件) - **azure-security-monitoring-lab**(本仓库) — Cell B:加固 + 监控 + 检测 - [logging-siem-wazuh](https://github.com/RealPhantomLee/logging-siem-wazuh) — 本地部署的对应方案(Wazuh 单节点) - [vulnerability-management-lab](https://github.com/RealPhantomLee/vulnerability-management-lab) — 本地部署的漏洞管理 ## 作者 **RealPhantomLee Tucker** — [github.com/RealPhantomLee](https://github.com/RealPhantomLee)
标签:Azure, KQL, PB级数据处理, 安全运维, 应用安全, 系统加固