ElizavetaKn/wazuh-soc-home-lab
GitHub: ElizavetaKn/wazuh-soc-home-lab
一个基于 Wazuh 的防御性 SOC 家庭实验室项目,涵盖安全监控、威胁检测、告警分诊、事件调查与 MITRE ATT&CK 映射的完整分析师工作流。
Stars: 0 | Forks: 0
# Wazuh SOC 家庭实验室
[](https://github.com/ElizavetaKn/wazuh-soc-home-lab/actions/workflows/ci.yml)



一个围绕 Wazuh 构建的防御性安全运营中心 (SOC) 家庭实验室,用于端点监控、日志分析、告警分诊、文件完整性监控、事件调查和 MITRE ATT&CK 映射。
本仓库记录了实验室架构、检测场景、分析师工作流、调查报告以及用于验证安全事件的支持自动化内容。
## 目标
本项目展示了与 SOC 分析师和安全运营角色相关的实践技能:
- Wazuh SIEM/XDR 部署概念
- Linux 端点监控
- 安全日志收集与分析
- SSH 认证监控
- 暴力破解检测
- 文件完整性监控 (FIM)
- 告警分诊与严重性评估
- 事件时间线重建
- MITRE ATT&CK 映射
- 自定义 Wazuh 规则开发
- 使用 Python 实现防御性安全自动化
- 可复现的文档和证据处理
## 实验室架构
```
flowchart LR
A[Ubuntu Endpoint
Wazuh Agent] -->|Encrypted agent channel| B[Wazuh Server] A --> C[Linux auth logs] A --> D[File Integrity Monitoring] B --> E[Wazuh Indexer] E --> F[Wazuh Dashboard] B --> G[Rules and Decoders] G --> H[Security Alerts] H --> I[Analyst Triage] I --> J[Investigation] J --> K[MITRE ATT&CK Mapping] J --> L[Incident Report] ``` 核心的 Wazuh 部署由 Wazuh server、Wazuh indexer 和 Wazuh dashboard 组成。受监控的 Linux 端点运行 Wazuh agent 并将端点遥测数据发送到服务器。 ## 检测场景 | ID | 场景 | 检测 / 证据 | 严重性 | MITRE ATT&CK | |---|---|---|---:|---| | LAB-001 | 重复的 SSH 认证失败 | 来自单一源的多次失败 SSH 登录 | 高 | T1110 - Brute Force | | LAB-002 | 多次失败后的 SSH 认证成功 | 结合先前失败情况审查的认证成功事件 | 高 | T1078 - Valid Accounts; T1021 - Remote Services | | LAB-003 | 关键实验室文件修改 | Wazuh 文件完整性监控事件 | 中 | T1565.001 - Stored Data Manipulation | | LAB-004 | Linux 文件权限更改 | 权限修改的 FIM/audit 证据 | 中 | T1222.002 - Linux and Mac File and Directory Permissions Modification | ## 仓库结构 ``` . ├── .github/workflows/ci.yml ├── config/ │ ├── agent-fim-snippet.xml │ └── local_rules.xml ├── docs/ │ ├── architecture.md │ ├── evidence-collection.md │ ├── lab-setup.md │ └── investigations/ │ ├── INC-001-ssh-brute-force.md │ ├── INC-002-success-after-failures.md │ ├── INC-003-file-integrity-change.md │ └── INC-004-permission-change.md ├── evidence/ │ ├── live/ │ └── screenshots/ ├── sample-data/ │ ├── alerts/ │ └── logs/ ├── scripts/ │ ├── generate_timeline.py │ ├── summarize_alerts.py │ └── validate_project.py ├── tests/ ├── LICENSE ├── SECURITY.md └── README.md ``` ## 实验室设置 推荐的工作流如下: 1. 为 Wazuh 核心组件准备专用的 Linux 主机或虚拟机 (VM)。 2. 使用官方的 Wazuh 文档安装 Wazuh server、indexer 和 dashboard。 3. 准备一个独立的 Ubuntu 端点。 4. 在端点上安装并注册 Wazuh agent。 5. 为专用的实验室目录启用 FIM。 6. 在生成实际的实验室事件之前,使用 Wazuh 规则集测试验证 SSH 事件。 7. 仅生成经过授权的本地实验室活动。 8. 导出 Wazuh 告警并截取 dashboard 截图。 9. 调查每个场景并使用真实证据更新报告。 详细说明请见 [`docs/lab-setup.md`](docs/lab-setup.md)。 ## 自定义检测规则 本仓库包含一条以实验室为重点的关联规则,当观察到重复的 SSH 认证失败时会提升严重级别: ```
5716
LAB: Multiple SSH authentication failures from the same source IP.
T1110
authentication_failed,brute_force,lab_detection,
```
自定义规则在部署之前,应使用 Wazuh 规则集测试工具针对实验室中使用的确切 Wazuh 版本进行验证。
## 文件完整性监控
受监控的实验室路径被特意与生产系统文件隔离开来:
```
/opt/wazuh-lab/monitored
```
agent 配置示例:
```
/opt/wazuh-lab/monitored
```
该实验室使用此目录来演示文件创建、修改、删除和权限更改的可见性,而不会更改敏感的操作系统文件。
## 分析师工作流
```
Alert
↓
Validate source and timestamp
↓
Review rule, severity, agent and event data
↓
Correlate related authentication / FIM events
↓
Build timeline
↓
Map observed behavior to MITRE ATT&CK
↓
Assess impact and confidence
↓
Document containment and remediation recommendations
```
## 事件调查
### INC-001: SSH 暴力破解活动
来自单一源的重复失败 SSH 认证尝试被关联起来,并作为潜在的凭证访问活动进行调查。
[阅读调查报告](docs/investigations/INC-001-ssh-brute-force.md)
### INC-002: 失败后的成功认证
[阅读调查报告](docs/investigations/INC-002-success-after-failures.md)
### INC-003: 文件完整性更改
专用实验室路径内的受监控配置文件被修改。审查 Wazuh FIM 证据以识别受影响的路径、事件类型、时间戳和预期的基线。
[阅读调查报告](docs/investigations/INC-003-file-integrity-change.md)
### INC-004: 文件权限更改
对受监控实验室文件的权限更改被作为潜在的安全相关文件系统修改进行调查。
[阅读调查报告](docs/investigations/INC-004-permission-change.md)
## MITRE ATT&CK 覆盖范围
| 技术 | 名称 | 实验室用途 |
|---|---|---|
| T1110 | Brute Force | 重复的认证失败 |
| T1078 | Valid Accounts | 在可疑失败后审查的成功认证 |
| T1021 | Remote Services | 远程 SSH 认证上下文 |
| T1565.001 | Stored Data Manipulation | 受监控配置文件的安全相关修改 |
| T1222.002 | Linux and Mac File and Directory Permissions Modification | 受监控 Linux 文件的权限更改 |
MITRE 映射代表分析师对观察到的行为的解释,应根据从实际实验室收集的最终证据进行验证。
## 示例告警分析
运行:
```
python scripts/summarize_alerts.py sample-data/alerts
```
生成按时间顺序排列的事件时间线:
```
python scripts/generate_timeline.py sample-data/alerts
```
验证仓库测试夹具:
```
python scripts/validate_project.py
```
运行测试:
```
python -m unittest discover -s tests -v
```
## 证据收集
应从实际实验室中捕获实时证据,并仅在移除敏感信息和个人数据后提交。
推荐的证据:
- Wazuh agent 状态
- 安全事件视图
- 告警详情
- 规则 ID 和级别
- MITRE ATT&CK 字段
- FIM 事件详情
- 调查过滤器
- 经过脱敏处理的 JSON 导出
请见 [`docs/evidence-collection.md`](docs/evidence-collection.md)。
## 安全与道德
本仓库专为在自有的或明确授权进行测试的系统上进行防御性网络安全培训而设计。
这些实验室场景使用:
- 本地虚拟机,
- 专用的实验室账户,
- 示例数据中仅用于文档说明的 IP 地址范围,
- 隔离的受监控目录。
未经明确授权,请勿对系统进行身份验证或安全控制测试。
## 项目状态
- [x] 仓库架构
- [x] 检测场景
- [x] 自定义 SSH 关联规则
- [x] FIM 配置
- [x] 具有代表性的 Wazuh 告警夹具
- [x] 事件调查模板
- [x] MITRE ATT&CK 映射
- [x] Python 告警分析实用程序
- [x] 自动化 CI 验证
- [ ] 实时 Wazuh 部署证据
- [ ] Dashboard 截图
- [ ] 从实际实验室导出的脱敏告警
- [ ] 使用实时时间戳和证据更新的最终事件报告
## 下一个里程碑
部署实际的 Wazuh 实验室,收集 LAB-001 至 LAB-004 的证据,在适当的情况下替换代表性的测试夹具,并添加脱敏的截图和告警导出。
## 作者
Elizaveta Knyazeva
网络安全 | SOC 与安全运营 | 威胁检测 | 网络安全 | Python
Wazuh Agent] -->|Encrypted agent channel| B[Wazuh Server] A --> C[Linux auth logs] A --> D[File Integrity Monitoring] B --> E[Wazuh Indexer] E --> F[Wazuh Dashboard] B --> G[Rules and Decoders] G --> H[Security Alerts] H --> I[Analyst Triage] I --> J[Investigation] J --> K[MITRE ATT&CK Mapping] J --> L[Incident Report] ``` 核心的 Wazuh 部署由 Wazuh server、Wazuh indexer 和 Wazuh dashboard 组成。受监控的 Linux 端点运行 Wazuh agent 并将端点遥测数据发送到服务器。 ## 检测场景 | ID | 场景 | 检测 / 证据 | 严重性 | MITRE ATT&CK | |---|---|---|---:|---| | LAB-001 | 重复的 SSH 认证失败 | 来自单一源的多次失败 SSH 登录 | 高 | T1110 - Brute Force | | LAB-002 | 多次失败后的 SSH 认证成功 | 结合先前失败情况审查的认证成功事件 | 高 | T1078 - Valid Accounts; T1021 - Remote Services | | LAB-003 | 关键实验室文件修改 | Wazuh 文件完整性监控事件 | 中 | T1565.001 - Stored Data Manipulation | | LAB-004 | Linux 文件权限更改 | 权限修改的 FIM/audit 证据 | 中 | T1222.002 - Linux and Mac File and Directory Permissions Modification | ## 仓库结构 ``` . ├── .github/workflows/ci.yml ├── config/ │ ├── agent-fim-snippet.xml │ └── local_rules.xml ├── docs/ │ ├── architecture.md │ ├── evidence-collection.md │ ├── lab-setup.md │ └── investigations/ │ ├── INC-001-ssh-brute-force.md │ ├── INC-002-success-after-failures.md │ ├── INC-003-file-integrity-change.md │ └── INC-004-permission-change.md ├── evidence/ │ ├── live/ │ └── screenshots/ ├── sample-data/ │ ├── alerts/ │ └── logs/ ├── scripts/ │ ├── generate_timeline.py │ ├── summarize_alerts.py │ └── validate_project.py ├── tests/ ├── LICENSE ├── SECURITY.md └── README.md ``` ## 实验室设置 推荐的工作流如下: 1. 为 Wazuh 核心组件准备专用的 Linux 主机或虚拟机 (VM)。 2. 使用官方的 Wazuh 文档安装 Wazuh server、indexer 和 dashboard。 3. 准备一个独立的 Ubuntu 端点。 4. 在端点上安装并注册 Wazuh agent。 5. 为专用的实验室目录启用 FIM。 6. 在生成实际的实验室事件之前,使用 Wazuh 规则集测试验证 SSH 事件。 7. 仅生成经过授权的本地实验室活动。 8. 导出 Wazuh 告警并截取 dashboard 截图。 9. 调查每个场景并使用真实证据更新报告。 详细说明请见 [`docs/lab-setup.md`](docs/lab-setup.md)。 ## 自定义检测规则 本仓库包含一条以实验室为重点的关联规则,当观察到重复的 SSH 认证失败时会提升严重级别: ```
标签:Wazuh, 安全实验环境, 安全运营中心, 红队行动, 网络映射, 逆向工具