y-zahidi/home-lab-siem

GitHub: y-zahidi/home-lab-siem

一套基于真实生产环境经验提炼的可复现 SIEM 实验室,用 Docker Compose 一键拉起 Wazuh + Suricata + Sysmon 全栈安全监控环境。

Stars: 1 | Forks: 0

# home-lab-siem ![status](https://img.shields.io/badge/status-active-5cf2c1?labelColor=0a0e14) ![license](https://img.shields.io/badge/license-MIT-5cf2c1?labelColor=0a0e14) ![docker](https://img.shields.io/badge/docker-compose-5cf2c1?labelColor=0a0e14) ![wazuh](https://img.shields.io/badge/wazuh-4.7-5cf2c1?labelColor=0a0e14) ![suricata](https://img.shields.io/badge/suricata-7.0-5cf2c1?labelColor=0a0e14) ## 快速开始 ``` git clone https://github.com/y-zahidi/home-lab-siem.git cd home-lab-siem ./scripts/generate-certs.sh docker compose up -d # 等待约 3 分钟,然后: open https://localhost:443 # admin / SecretPassword (change it) ``` 默认凭据、安全加固说明和证书轮换步骤记录在 [`docs/HARDENING.md`](docs/HARDENING.md) 中。 ## 这是什么 一个可运行的 SIEM 技术栈,包含我曾在 Préfecture 生产环境中使用过的相同组件,并针对在单台笔记本电脑上运行的范围进行了精简: - **Wazuh** (manager + indexer + dashboard) — 日志管理、HIDS、文件完整性监控、MITRE ATT&CK 规则标记。 - **Suricata** — 网络 IDS,其 EVE JSON 输出由 Wazuh 接收。 - 针对Windows 终端的 **Sysmon** 基线 (SwiftOnSecurity ruleset)。 - **文档**,用于记录我在生产环境中拥有但无法干净地引入到实验室中的集成:MISP、VirusTotal、FortiGate、Nessus。 ## 架构 ``` ┌──────────────────────────────────────┐ │ Endpoints (lab targets) │ │ Linux + auditd Windows + Sysmon│ │ wazuh-agent wazuh-agent │ └─────────┬─────────────────┬──────────┘ │ │ ▼ ▼ ┌──────────────────────────────┐ │ Suricata (IDS, EVE JSON out) │ └──────────────┬───────────────┘ ▼ ┌──────────────────────────────┐ │ Wazuh manager — decoders, │ │ rules, active response │ └──────────────┬───────────────┘ ▼ ┌──────────────────────────────┐ │ Wazuh indexer (OpenSearch) + │ │ Wazuh dashboard │ └──────────────────────────────┘ ``` ## 文件分布 ``` . ├── docker-compose.yml single-node stack ├── config/ │ ├── wazuh/ │ │ ├── ossec.conf │ │ ├── rules/local_rules.xml ← custom detections (see below) │ │ └── decoders/ │ └── suricata/ │ └── suricata.yaml ├── scripts/ │ └── generate-certs.sh one-shot certs for the manager↔indexer chain ├── docs/ │ ├── HARDENING.md │ ├── MISP_INTEGRATION.md │ ├── WINDOWS_AGENT.md │ ├── architecture.md │ ├── detections.md │ └── atomic-red-team.md └── screenshots/ from a real `docker compose up` ``` ## 内置检测 每条规则都标记了其针对的 MITRE ATT&CK 技术。示例日志和分类步骤记录在 [`docs/detections.md`](docs/detections.md) 中。 | 规则 ID | 检测项 | MITRE | |---|---|---| | 100100 | SSH 暴力破解(60秒内失败5次以上) | T1110.001 | | 100101 | 可疑的 PowerShell(encoded, IEX, downloadstring) | T1059.001 | | 100102 | 来自单一源的端口扫描(基于 Suricata) | T1046 | | 100103 | `/etc` 或 `C:\Windows\System32` 中的文件完整性违规 | T1565.001 | | 100104 | 疑似 Web Shell 上传 | T1505.003 | 这些规则的 XML 文件位于 [`config/wazuh/rules/local_rules.xml`](config/wazuh/rules/local_rules.xml)。它们只是一个起点,而不是一个完整的 SOC 规则集——请参阅下文的“经验教训”。 ## 为什么选择这个技术栈(而不是仅仅使用 ELK) | 需求 | 选择 | 原因 | |---|---|---| | 日志传输与解析 | Wazuh agent | 原生注册,内置针对 100 多个应用的解码器。 | | HIDS / FIM / Rootcheck | Wazuh manager | 内置功能,无需额外安装 agent。 | | 网络 IDS | Suricata | EVE JSON 格式,多线程,ET Open 规则集,易于接入 Wazuh。 | | 搜索与存储 | Wazuh indexer (OpenSearch) | 内置捆绑,Apache 2.0 许可证,没有 Elastic 许可证的麻烦。 | | 终端遥测数据 | Sysmon + SwiftOnSecurity | 事实上的基线标准。 | | MITRE ATT&CK 映射 | Wazuh 内置 | 每条规则自动标记。 | 我为实验室环境删减的内容: - **单节点 Wazuh。** 生产环境应该是一个 3 节点的 indexer 集群。 - **没有实时的 MISP 容器。** MISP 集成记录在 [`docs/MISP_INTEGRATION.md`](docs/MISP_INTEGRATION.md) 中;运行它会增加运维开销,这是我不希望在 `docker compose up` 中出现的。 - **没有 FortiGate 模拟。** 在本地模拟 FortiGate 需要付费的 VM 镜像。我在 Préfecture 使用过的集成模式已记录在文档中,但无法在此处运行。 ## 仪表盘 基于此确切代码实际运行的截图: | 登录 | 模块 | |:--:|:--:| | ![login](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/32014a9fc9114521.png) | ![modules](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/eb744401df114522.png) | | **MITRE ATT&CK** | **规则(内置 4372 条)** | | ![mitre](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4503f73fa9114524.png) | ![rules](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/de4e4126e5114525.png) | | **Manager 状态** | **管理** | | ![status](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/be5231fe51114526.png) | ![admin](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b0b900e752114528.png) | ## 经验教训 我在 Préfecture 学到的四件事,这个实验室试图将它们融入其中: 1. **在第一天就消除噪音。** 开箱即用的 Wazuh 每小时会因为 `sudo`、`cron` 和 `systemd-logind` 触发数百个告警。我对生产仓库提交的第一个 PR 就是一个调优规则集,它过滤掉了约 85% 的告警量。 2. **Active Response 是一把双刃剑。** `ip-blacklist` 配置中的一个拼写错误可能会将 SOC 分析师锁定在 manager 之外。在前两周请仅以审计模式运行它。 3. **自签名证书可行——但请记录轮换步骤。** Wazuh 证书开箱即用的有效期为 10 年,但如果您重新安装其中一个组件,manager↔indexer 链会静默中断。请保持将 `scripts/generate-certs.sh` 提交到代码库中。 4. **仪表盘不是 SOC。** 仪表盘只是一个起点。真正的分类工作是在工单中进行的——请在上线前规划好与 Jira / GLPI / TheHive 的集成。 ## 路线图 - [x] 单节点 Wazuh + Suricata + 5 条基线规则。 - [x] Atomic Red Team 演练 (T1110.001, T1059.001)。 - [ ] MISP 集成作为可选的 `docker compose --profile misp up`。 - [ ] Active Response 示例(审计模式 + 生产模式)。 - [ ] Windows agent + Sysmon SwiftOnSecurity 规则集打包。 - [ ] 在每个 PR 上对 Wazuh 规则 XML 进行 CI lint。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。灵感来源于在 Préfecture de Tétouan 的真实生产工作;不包含该项目中的任何敏感材料。 ## 关于我 我是 **Yassir Zahidi**,拉巴特的计算机工程专业学生,拥有网络安全专业技师背景(ISMO Tétouan)。对 2026 年的 SOC / 蓝队 / DevSecOps 实习机会持开放态度。 - 作品集 · - LinkedIn · - 邮箱 · yassirzahidi8@gmail.com
标签:Ask搜索, Cloudflare, Cutter, Docker Compose, EVE JSON, FortiGate, GitHub Advanced Security, Home Lab, Linux审计, MITRE ATT&CK, Nessus, OISF, Suricata, Sysmon, VirusTotal, Wazuh, x64dbg, 主机入侵检测, 入侵检测系统, 威胁情报, 安全信息与事件管理, 安全加固, 安全实验室, 安全数据湖, 安全运营, 开发者工具, 扫描框架, 搜索引擎爬取, 日志管理, 版权保护, 现代安全运营, 网络安全, 请求拦截, 隐私保护