cryptoswg/wazuh-siem-lab
GitHub: cryptoswg/wazuh-siem-lab
在 Apple Silicon ARM64 上手动搭建 Wazuh + Suricata + Logstash 家庭安全实验室,提供从部署到攻击检测与自动响应的完整实践方案。
Stars: 0 | Forks: 0
# 🛡️ 家庭 SIEM 实验室 — 在 Apple Silicon 上部署 Wazuh + Suricata
## 📋 目录
- [项目概述](#обзор-проекта)
- [架构](#архитектура)
- [技术栈](#стек-технологий)
- [安装与配置](#установка-и-настройка)
- [攻击场景与检测](#сценарии-атак-и-детекция)
- [关键成果](#ключевые-результаты)
- [ARM64 技术特性](#технические-особенности-arm64)
## 项目概述
本项目展示了如何使用 Wazuh、Suricata 和 Logstash 在家庭环境中构建一个功能完整的 SIEM 实验室。该实验室部署在 **运行于搭载 Apple Silicon (aarch64) 的 Mac 上的 VMware Fusion** 中 —— 这是一个非标准平台,由于官方安装程序不兼容 ARM64,因此需要手动安装所有组件。
**项目目标:**
- 在实践中学习 SIEM 架构
- 模拟真实攻击(brute-force、扫描、可疑进程、关键文件篡改)
- 配置事件的自动响应机制
- 获取 MITRE ATT&CK 的实践经验
## 架构
```
┌─────────────────────────────────────────────────────┐
│ Mac (Apple Silicon) │
│ Хост / Браузер │
│ https://127.0.0.1 (dashboard) │
└──────────────────────┬──────────────────────────────┘
│ VMware Fusion
┌────────────┴────────────┐
│ siem-lab network │
│ 192.168.212.0/24 │
└──┬──────────┬───────────┘
│ │ │
┌────────┴──┐ ┌─────┴──────┐ ┌─┴──────────┐
│ wazuh-srv │ │ ubuntu-agt │ │ kali-atk │
│.212.10 │ │.212.20 │ │.212.40 │
│ │ │ │ │ │
│ Wazuh │ │ Wazuh │ │ Hydra │
│ Indexer │ │ Agent │ │ Nmap │
│ Manager │ │ Suricata │ │ Netcat │
│ Dashboard │ │ Auditd │ │ │
│ Logstash │ │ │ │ │
└───────────┘ └────────────┘ └────────────┘
```
### 虚拟机
| VM | 操作系统 | IP (siem-lab) | 角色 |
|----|----|---------------|------|
| wazuh-srv | Ubuntu 20.04 | 192.168.212.10 | SIEM 服务器 |
| ubuntu-agt | Ubuntu 20.04 | 192.168.212.20 | 受害者 / Agent |
| kali-atk | Kali Linux | 192.168.212.40 | 攻击者 |
## 技术栈
| 组件 | 版本 | 用途 |
|-----------|--------|------------|
| Wazuh Indexer | 4.14.5 | 存储和索引告警 (OpenSearch) |
| Wazuh Manager | 4.14.5 | 日志分析、应用规则 |
| Wazuh Dashboard | 4.14.5 | 可视化、MITRE ATT&CK 映射 |
| Wazuh Agent | 4.14.5 | 在 ubuntu-agt 上收集日志 |
| Suricata | 8.x | IDS — 网络检测 |
| Logstash | 8.9.0 (OSS) | 解析并发送告警至索引 |
| Auditd | — | 监控系统调用 |
| VMware Fusion | — | Apple Silicon 上的虚拟化平台 |
## 安装与配置
### 针对 ARM64 的关键解决方案
官方安装脚本 `wazuh-install.sh` **不支持 ARM64** —— 它只检测 `x86_64`。所有组件均按照以下顺序手动安装:
```
wazuh-indexer → wazuh-manager → wazuh-dashboard
```
**显式指定架构的 APT 仓库:**
```
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/wazuh.gpg] \
https://packages.wazuh.com/4.x/apt/ stable main" \
| sudo tee /etc/apt/sources.list.d/wazuh.list
```
**使用 Logstash 替换 Filebeat**,因为 Filebeat 与 OpenSearch 2.x 不兼容(在 Bulk API 中使用了 `_type`):
```
# 使用了 logstash-oss-with-opensearch-output-plugin-8.9.0-linux-arm64
```
**Logstash 配置的必做修复:**
```
filter {
mutate {
remove_field => ["host"] # без этого mapper_parsing_exception
}
}
```
### 网络配置
通过 VMware Fusion 的端口转发,实现在 Mac 上访问 Dashboard:
```
# /Library/Preferences/VMware Fusion/vmnet8/nat.conf
443 = 192.168.212.10:443
```
## 攻击场景与检测

### 场景 B — SSH Brute-Force 🔴
**攻击:** 对 ubuntu-agt 进行 SSH 密码暴力破解
**工具:** `hydra -l testuser -P wordlist.txt ssh://192.168.212.20`
**检测:** Wazuh 在 8 次以上失败尝试后触发的聚合规则
**结果:** Rule **5763** `sshd: brute force trying to get access` — **Level 10**
**MITRE:** T1110 — Brute Force / Credential Access
```
[Kali] hydra → [ubuntu-agt:22] → sshd logs → [Wazuh Agent]
→ [Wazuh Manager] → Rule 5763 (Level 10) → [Dashboard]
```

### 场景 C — Suspicious Process (Netcat) 🔴
**攻击:** 在 ubuntu-agt 上运行 netcat(模拟 reverse shell)
**工具:** `nc -zv 192.168.212.10 443`
**检测:** Auditd (execve syscall) + 自定义 Wazuh 规则
**结果:** Rule **100001** `Suspicious: netcat executed` — **Level 10**
**MITRE:** T1059 — Command and Scripting Interpreter
**自定义规则** (`/var/ossec/etc/rules/local_rules.xml`):
```
80700
exe="/usr/bin/nc
Suspicious: netcat executed on $(agent.name)
T1059
```

### 场景 D — File Integrity Monitoring 🟡
**攻击:** 添加用户并修改 `/etc/sudoers`
**工具:** `useradd hacker123`, `echo "hacker123 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers`
**检测:** Wazuh FIM (syscheck) 实时监控
**结果:** Rule **550** `Integrity checksum changed` — **Level 7**
**FIM 配置** (`/var/ossec/etc/shared/default/agent.conf`):
```
/etc/passwd,/etc/shadow,/etc/sudoers
/root
```

### Active Response — 自动封禁 IP 🔴
**触发条件:** Rule 5763 (SSH brute-force, Level 10)
**动作:** `firewall-drop` — 通过 iptables 自动执行 DROP
**超时时间:** 300 秒
**结果:** Rule **651** `Host Blocked by firewall-drop Active Response`
```
Rule 5763 срабатывает
→ Wazuh Manager отправляет команду агенту
→ firewall-drop скрипт выполняется на ubuntu-agt
→ iptables -I INPUT -s 192.168.212.40 -j DROP
→ kali-atk заблокирован на 5 минут
```
**配置** (`/var/ossec/etc/ossec.conf`):
```
firewall-drop
local
5763
300
```
**封锁确认:**
```
$ sudo iptables -L INPUT -n | grep 192.168.212.40
DROP all -- 192.168.212.40 0.0.0.0/0
```

### 场景 E — Suricata Network Detection 🟡
**攻击:** 从 kali-atk 发起激进端口扫描
**工具:** `nmap -A -T4 -sV 192.168.212.20`
**检测:** Suricata ET SCAN 规则
**结果:** `ET SCAN Possible Nmap User-Agent Observed` (Rule 86601)

## 关键成果
| # | 场景 | 攻击工具 | Rule ID | Level | MITRE |
|---|----------|-----------------|---------|-------|-------|
| B | SSH Brute-force | hydra | 5763 | **10** | T1110 |
| C | Netcat (reverse shell) | nc | 100001 | **10** | T1059 |
| D | sudoers modification | useradd / echo | 550 | 7 | T1548 |
| AR | Auto IP block | — | 651 | 3 | — |
| E | Suricata Nmap detect | nmap | 86601 | 3 | T1046 |
## ARM64 技术特性
在 Apple Silicon 上运行需要采取一些非标准的解决方案:
1. **官方安装程序无法运行** — `wazuh-install.sh` 检测 `x86_64`,在 aarch64 上会报错崩溃。必须手动安装。
2. **Filebeat 与 OpenSearch 2.x 不兼容** — 它在 Bulk API 中使用了已弃用的 `_type`。已被替换为带有 `opensearch-output-plugin` 的 Logstash。
3. **auditd `-w` 文件监控** 在 ARM64 上运行不稳定 — 已替换为 `-a always,exit -F arch=b64 -S execve`。
4. **VMware Fusion NAT** 不会自动转发端口 — 需要手动编辑 `nat.conf`。
5. **磁盘空间会被占满**,原因是 `/var/ossec/queue/vd/event/LOG`(已删除但仍保持打开状态的文件) — 可通过 `lsof +L1` 和 `rm -rf /var/ossec/queue/vd/` 解决。
## 仓库结构
```
wazuh-siem-lab/
├── README.md
├── configs/
│ ├── wazuh-srv/
│ │ ├── ossec.conf # конфиг менеджера
│ │ ├── local_rules.xml # кастомные правила
│ │ └── logstash-wazuh.conf # pipeline Logstash
│ └── ubuntu-agt/
│ ├── ossec.conf # конфиг агента
│ ├── agent.conf # shared config (FIM)
│ └── audit.rules # auditd правила
└── screenshots/
├── allrules.jpg
├── rule5763.jpg
├── rule100001.jpg
├── rule550.jpg
├── rule651.jpg
└── rule86601.jpg
```
*本项目出于学习目的,在完全隔离的虚拟环境中进行。*
标签:ARM64, Metaprompt, Suricata, Wazuh, x64dbg, 内容过滤, 安全实验环境, 安全运营, 扫描框架, 插件系统, 现代安全运营