sofiaboiko/pfsense-wazuh-project
GitHub: sofiaboiko/pfsense-wazuh-project
该项目演示了在 pfSense 防火墙与 Wazuh SIEM/XDR 环境下,如何通过模拟外部攻击实现跨网络边界与端点的纵深检测与告警关联。
Stars: 0 | Forks: 0
# pfSense + Wazuh SOC 实验环境 — 纵深检测








一个展示**纵深防御**的家庭实验室:边界防火墙 (pfSense) 在网络边缘过滤流量,而 SIEM/XDR 代理 (Wazuh) 则在受保护的主机上捕获突破边界防线的内容。该项目展示了如何从基础设施的两个不同层(网络边界和端点)观察到同一个安全事件,以及这两种日志源如何相互补充。
## 概念
```
[External source] --> WAN --> [pfSense] --> LAN --> [Ubuntu Agent + Wazuh Agent]
|
| reports to
v
[Wazuh Manager (Docker)]
```
- **pfSense** — 外部网络 (WAN) 与受保护网段 (LAN) 之间的边界网关/防火墙。在边缘记录并拦截不受欢迎的流量。
- **Wazuh Agent** — 安装在 LAN 网段内受保护的 Linux 主机 (Ubuntu) 上。跟踪身份验证尝试、文件完整性 (FIM)、系统配置。
- **Wazuh Manager** — SIEM/XDR 平台(基于 Elastic/ELK 技术栈构建),通过 Docker 部署在单独的 Linux 机器上。收集并分析来自所有代理的事件,提供用于调查的 Web 仪表板。
每个组件的详细技术文档:[`docs/pfsense.md`](docs/pfsense.md) 和 [`docs/wazuh.md`](docs/wazuh.md)。
## 技术栈
| 组件 | 技术 |
|-----------|------------|
| 防火墙 / 网关 | pfSense CE 2.8.0 |
| SIEM / XDR | Wazuh 4.14.6 (manager + indexer + dashboard) |
| 容器化 | Docker + Docker Compose |
| 主机操作系统 | Ubuntu Server 24.04 LTS, Ubuntu Desktop 26.04 |
| 虚拟化 | Oracle VirtualBox |
| 攻击工具 | Nmap, Hydra (SSH 暴力破解) |
## 实验环境
隔离的实验室网络中的三台独立虚拟机。
[](docs/screenshots/vboxes.png)
*三台正在运行的虚拟机:pfSense(网关)、Wazuh Manager(Ubuntu Server)、Wazuh Agent(Ubuntu Desktop)。*
1. **pfSense 虚拟机** — 两个网络适配器:
- WAN(桥接,面向外部网络)
- LAN(Internal Network,隔离的受保护网段)
[](docs/screenshots/pfSense_interface.png)
*在 pfSense 控制台上分配的 WAN 和 LAN 接口,且可以从 LAN 端的 Ubuntu 代理虚拟机访问 pfSense Web 登录页面。*
2. **Ubuntu 代理虚拟机** — 位于 pfSense 后面的 LAN 网段中;所有出站流量仅通过网关。运行 Wazuh Agent。
3. **Wazuh Manager 虚拟机** — 运行 Wazuh Docker 技术栈(manager、indexer、dashboard)的独立 Linux 机器。
[](docs/screenshots/docker_wazuh_up.png)
*通过 `docker compose` 启动的 Wazuh Manager、Indexer 和 Dashboard 容器。*
## 攻击场景
该场景模拟了外部攻击者探测边界、通过唯一暴露的端口对 SSH 进行暴力破解并获取访问权限的过程——展示了在防火墙和端点级别的检测。
### 1. 侦察 — 针对 pfSense WAN 地址的端口扫描
[](docs/screenshots/port-scanning-nmap.png)
*全端口扫描 (`nmap -p- -Pn`) 仅显示 `2222/tcp` 端口开放 — 其他所有流量均被默认拒绝的防火墙规则过滤。*
### 2. 边界防御 — pfSense 阻断扫描
[](docs/screenshots/pfSense-result.png)
*防火墙日志显示扫描流量被 WAN 上的默认拒绝规则丢弃,且时间戳与上方的 Nmap 运行记录相匹配。*
### 3. 暴力破解 — 针对暴露的 SSH 端口使用 Hydra
[](docs/screenshots/hydra-ssh-brut-force.png)
*针对 `ssh://:2222` 的 Hydra 字典攻击 — 找到了有效密码。*
### 4. 端点检测 — Wazuh 关联暴力破解尝试
[](docs/screenshots/wazuh-result.png)
*Wazuh 的 Threat Hunting 视图显示了 `sshd: authentication failed` 事件的激增,这些事件被聚合为更高严重程度的 `Multiple authentication failures` 告警(规则 `40111`,级别 `10`)— 这体现了 SIEM 将许多低级别的失败尝试关联为一个可操作的事件。*
### 5. 漏洞利用后(模拟)
[](docs/screenshots/after-attack-actions.png)
*通过暴力破解恢复密码后,攻击者通过 SSH 登录并尝试文件系统操作(在受监控路径下的文件上执行 `touch`)。在真实的入侵中,这是攻击者修改配置、植入持久化后门或访问主机数据的阶段,而这正是 Wazuh 的文件完整性监控 (FIM) 模块旨在捕获的活动,完全独立于网络层发生的任何事情。*
### 6. 确认代理处于活跃并正在报告状态
[](docs/screenshots/wazuh-agent.png)
*Wazuh 仪表板确认代理处于活跃状态,并且在端点上运行的 `systemctl status wazuh-agent` 显示了正在运行的代理进程树。*
## 展示内容
- **纵深防御**:同一次入侵尝试在两个不同层产生截然不同且相互补充的证据——防火墙看到并阻断侦察流量;端点代理看到并关联通过那一个开放端口进入的认证攻击。
- **基于时间的关联**:防火墙日志的时间戳和 Wazuh 告警的时间戳与实际的攻击时间线(侦察 → 阻断 → 暴力破解 → 检测)保持一致,而无需单一统一的日志管道(参见[后续工作](#future-work))。
- **实用的基础设施故障排除**:让 Wazuh Manager、Agent 和 pfSense 在桥接/NAT 的 VirtualBox 网络环境中相互通信,暴露并解决了几个真实的网络问题 — 记录在 [`docs/wazuh.md`](docs/wazuh.md#architectural-decision-moving-the-manager-from-windows-to-a-linux-vm) 中。
## 仓库结构
```
.
├── README.md
├── LICENSE
├── docs/
│ ├── pfsense.md # pfSense technical setup
│ ├── wazuh.md # Wazuh technical setup
│ └── screenshots/ # all screenshots referenced above
└── attack-simulation/
└── passwords.txt # wordlist used for the SSH brute-force demo
```
## 后续工作
- 通过 syslog 将 pfSense 防火墙日志转发到 Wazuh 进行单面板关联,而不是在两个仪表板上手动匹配时间戳。
- 在 Ubuntu 代理上部署一个包含已知漏洞的 Web 应用,将场景扩展到 SSH 暴力破解之外。
## 许可证
参见 [LICENSE](./LICENSE)。
标签:CTI, PB级数据处理, SIEM/XDR, 安全运维, 插件系统, 版权保护, 虚拟化实验室, 请求拦截, 防火墙