ahmedmunzir/Automated-SSH-Brute-Force-Detection-and-Response-Pipeline-with-Wazuh

GitHub: ahmedmunzir/Automated-SSH-Brute-Force-Detection-and-Response-Pipeline-with-Wazuh

基于Wazuh构建的SSH暴力破解检测与自动响应实验环境,实现了从攻击检测、规则升级到防火墙自动封锁的完整防御流水线。

Stars: 0 | Forks: 0

# 基于 Wazuh 的 SSH 暴力破解自动检测与响应流水线 ## 概述 本项目利用 Wazuh 构建了一套针对 SSH 暴力破解攻击的完整检测与响应流水线。 其目标是超越简单的告警生成,进而设计一套防御工作流,能够: • 检测重复的 SSH 认证失败行为 • 利用关联规则对可疑行为进行升级处理 • 在目标系统上触发自动遏制措施 • 超时后自动恢复访问权限 该实验室构建在一个完全隔离的环境中,可以在其中安全地生成攻击活动并逐步进行分析。 ## 实验环境 该实验室使用 **Proxmox** 构建,包含三台通过隔离内部网络连接的虚拟机。 **内部网络** ``` 10.10.10.0/24 ``` **虚拟机** | 机器 | 角色 | IP | |------|------|------| | Kali Linux | 攻击者 | 10.10.10.10 | | Ubuntu Target | 被监控端点 | 10.10.10.20 | | Ubuntu SIEM | Wazuh 管理节点 + 仪表盘 | 10.10.10.30 | Wazuh 管理节点还配置了**第二块网卡**,以便可以在不暴露攻击网络的情况下从笔记本电脑访问仪表盘。 ``` 192.168.68.118 ``` ## 使用的工具 • Proxmox • Kali Linux • Ubuntu Server • Wazuh SIEM • SSH • Linux 认证日志 • UFW 防火墙 # 第一部分 — 基础设施与 SIEM 部署 第一阶段是构建监控基础设施。 ### 环境设置 • 在 Proxmox 中创建隔离网络 • 部署三台虚拟机 • 分配静态 IP 地址 • 配置网络分段 ### Wazuh 部署 Wazuh 安装在 **Ubuntu SIEM 机器**上,同时作为: • Manager(管理节点) • Dashboard(仪表盘) 这使系统能够: • 收集日志 • 应用检测规则 • 通过 Web 界面可视化告警 ### Agent 配置 Ubuntu 目标机被配置为 **Wazuh agent**。 步骤包括: • 安装 Wazuh agent • 将 agent 注册到 manager • 验证连接性 • 确认日志正在被摄取 项目使用的主要日志源是: ``` /var/log/auth.log ``` 在此阶段结束时,SIEM 环境已成功从目标机器摄取认证日志。 # 第二部分 — SSH 暴力破解检测与规则分析 基础设施运行正常后,下一步是模拟攻击。 ### 攻击模拟 从 Kali 机器上,我对 Ubuntu 目标发起了重复的 SSH 登录尝试。 Alt Text 每次登录失败都会在认证日志中产生条目,并由 Wazuh agent 收集。 ### 默认检测行为 最初,Wazuh 会针对每次认证失败尝试生成告警。 这些告警与以下默认规则相关联: • SSH 认证失败 • 无效用户登录尝试 在短时间内重复失败后,Wazuh 升级了该事件。 ### 关联行为 在 **8 次登录失败尝试**后,Wazuh 触发了暴力破解检测规则。 这展示了 Wazuh 如何关联事件,而不是孤立地处理它们。 生成的告警包含结构化信息,包括: ``` Source IP Destination user Source port Frequency of attempts Previous log entries ``` 告警示例字段: ``` "srcip": "10.10.10.10" "dstuser": "targetuser" "frequency": 8 "level": 10 ``` ### MITRE ATT&CK 映射 该告警也被映射到: ``` T1110 — Brute Force ``` 战术 (Tactic): ``` Credential Access ``` 这展示了 Wazuh 如何将检测与公认的攻击框架对齐。 # 第三部分 — 自定义升级逻辑 在验证了默认规则后,我实施了一项**自定义检测规则**来控制何时进行升级。 ### 自定义规则 规则 ID: ``` 100100 ``` 该规则配置为在以下情况触发: • 发生 **3 次 SSH 登录失败尝试** • 来自 **同一源 IP** • 在定义的时间范围内 当达到此阈值时,规则生成一个: ``` Level 12 alert ``` 这允许更早地检测到可疑行为。 ### 规则逻辑 该规则通过以下方式链接: ``` if_matched_sid ``` 这确保了规则**仅在原始 SSH 认证失败规则匹配后**才触发。 这种方法保留了正确的事件关联性,而不是生成孤立的告警。 Alt Text ### 验证 从 Kali 生成了重复的 SSH 登录尝试。 Alt Text Alt Text 结果: • 在第三次登录失败后 • **Wazuh 仪表盘中出现了一个 level 12 告警** 这确认了自定义检测逻辑运行正常。 ### 故障排除 在此阶段发生了几个配置问题。 问题包括: • XML 格式错误 • 标签位置不正确 • Wazuh manager 重启失败 为了解决这个问题,我: • 审查了配置结构 • 修正了错位的 XML 标签 • 在重启 manager 之前验证了配置 这次故障排除强化了 SIEM 配置必须达到的精确度。 # 第四部分 — 利用 Active Response 实现自动遏制 最后阶段引入了**自动响应**。 目标是自定义规则触发后自动封锁攻击者。 ### Active Response 配置 配置了 Wazuh **firewall-drop** 命令。 ``` firewall-drop firewall-drop srcip yes ``` 然后将该响应链接到自定义规则。 ``` firewall-drop defined-agent 001 100100 600 ``` Alt Text ### 行为 一旦规则 **100100** 触发: 1. Wazuh 将攻击者 IP 传递给防火墙脚本 2. 防火墙插入了 DROP 规则 3. 来自攻击者的 SSH 连接失败 验证步骤包括: • 检查 `active-responses.log` • 确认攻击者 IP 已被封锁 • 尝试再次从 Kali 进行 SSH SSH 连接**挂起并超时**,确认封锁生效。 Alt Text ### 超时 配置了 **600 秒**的超时时间。 超时到期后: • 防火墙规则自动移除 • SSH 连接恢复 # 关键收获 本项目展示了一个完整的防御工作流: 1. 基础设施部署 2. 攻击检测 3. 自定义规则工程 4. 自动遏制 实验室期间培养的技能: • SIEM 部署 • 日志摄取与分析 • 检测规则工程 • 事件关联 • 自动化事件响应 • SIEM 配置故障排除 # 项目成果 最终系统成功地: • 检测重复的 SSH 登录尝试 • 使用自定义规则对其进行升级处理 • 自动封锁攻击者 IP • 超时后恢复访问 本项目超越了单纯查看告警,而是专注于**构建类似于真实 SOC 环境中实施的防御性检测与响应流水线。**
标签:AMSI绕过, FOFA, PB级数据处理, Proxmox, SSH暴力破解, UFW防火墙, Wazuh, 内存分配, 多包管理, 威胁检测, 安全运维, 实验室环境, 攻击模拟, 私有化部署, 网络安全, 自动化响应, 虚拟化, 规则编写, 防御规避, 隐私保护, 驱动签名利用