m-mehdi-sec/opnsense-wazuh-threat-monitoring-lab

GitHub: m-mehdi-sec/opnsense-wazuh-threat-monitoring-lab

一个完整的蓝队实验室搭建指南,演示如何使用 Wazuh 和 OPNsense 构建端点监控与威胁检测环境。

Stars: 0 | Forks: 0

# OPNsense Wazuh 威胁监控实验室 ## 概述 本项目记录了一次动手实践的蓝队实验室经历,我在一个虚拟化的 Hyper-V 环境中,将 Wazuh 作为 SIEM 和端点监控平台进行了部署。 该实验室结合了 OPNsense 防火墙日志记录、Windows 端点监控、Wazuh 代理、syslog 转发、身份验证事件分析和威胁狩猎。重点不仅在于安装工具,还在于验证日志是否确实在环境中流转并可用于安全监控。 该实验室基于一家拥有独立 HR(人力资源)和 Support(技术支持)网段的中型公司场景。环境根据我现有的 Hyper-V 和 OPNsense 实验室设置进行了适配。 所有测试均在隔离的本地实验室环境中进行,仅用于教育和防御性安全目的。 ## 实验室目标 本实验室的主要目标是了解 Wazuh 如何通过将漏洞扫描与实时监控和日志分析相结合来增强网络防御。 实验室重点关注: - 在 Ubuntu Server 上部署 Wazuh Server - 在 Windows 端点上安装 Wazuh 代理 - 监控 Windows 身份验证事件 - 检测失败的登录尝试 - 模拟暴力破解活动 - 模拟可疑的登录活动 - 使用 syslog 将 OPNsense 日志转发到 Wazuh - 使用 tcpdump 验证 syslog 流量 - 排查 Wazuh 日志获取问题 - 在 Wazuh Threat Hunting(威胁狩猎)中审查事件 - 了解为什么某些警报需要自定义规则或调优 ## 实验室环境 | 系统 | 角色 | IP 地址 | 网络 | |---|---|---:|---| | OPNsense | 防火墙 / 网关 | 192.168.10.1 | LAN | | Wazuh_Server | Wazuh Manager / Dashboard | 192.168.10.150 | LAN | | HR_Client | Windows 端点 / HR 用户 | 192.168.10.101 | LAN | | Support_Client | Windows 端点 / Support 用户 | 192.168.30.101 | Support_LAN | ## 网络段 | 网络 | 用途 | 网关 | |---|---|---:| | 192.168.10.0/24 | 主 LAN / HR / Wazuh Server | 192.168.10.1 | | 192.168.30.0/24 | Support 网络 | 192.168.30.1 | 原始作业使用的 IP 计划略有不同,但实验室经过调整以适应我现有的 Hyper-V 和 OPNsense 环境。核心安全目标保持不变:网络分段、端点监控、防火墙日志记录和通过 Wazuh 进行集中分析。 ## 工具和技术 | 工具 / 技术 | 用途 | |---|---| | Hyper-V | 虚拟化平台 | | OPNsense | 防火墙、网关和 syslog 源 | | Ubuntu Server | Wazuh Server 的操作系统 | | Wazuh | SIEM、端点监控和威胁检测 | | Windows 11 | HR 和 Support 端点客户端 | | PowerShell | Wazuh 代理安装 | | Command Prompt | 登录和流量模拟 | | Syslog | 从 OPNsense 到 Wazuh 的日志转发 | | tcpdump | 验证传入的 syslog 流量 | | Wazuh Threat Hunting | 事件分析和警报审查 | | Linux CLI | 服务器配置和故障排查 | ## 网络拓扑

                         Hyper-V 实验室环境



                                 Internet

                                    |

                              Default Switch

                                    |

                              OPNsense Firewall

                              192.168.10.1

                                    |

          -------------------------------------------------

          |                                               |

      LAN-Switch                                  Support_LAN_Switch

   192.168.10.0/24                                192.168.30.0/24

          |                                               |

          |                                               |

   ----------------------                         -------------------

   |                    |                         |

Wazuh_Server        HR_Client                Support_Client

192.168.10.150      192.168.10.101           192.168.30.101

Wazuh SIEM          HR endpoint               Support endpoint



## 实施总结

### 1. Hyper-V 准备

检查并整理了现有的 Hyper-V 环境以用于本实验室。

虚拟机已重命名或使用更清晰的名称进行了组织:

| 虚拟机名称 | 用途 |

|---|---|

| OPNsense_Firewall | 防火墙和网关 |

| Wazuh_Server | Wazuh SIEM 服务器 |

| HR_Client | Windows HR 端点 |

| Support_Client | Windows Support 端点 |

在可能的情况下重用了现有的虚拟交换机,而不是创建不必要的新交换机。这使得实验室更加贴近实际,因为必须对配置进行调整以适应现有环境。



### 2. OPNsense 网络配置

OPNsense 被用作实验室网络之间的防火墙和网关。

主 LAN 用于 HR 和 Wazuh:


LAN: 192.168.10.1/24

Support 网络配置为:


Support_LAN: 192.168.30.1/24

经验证,Support 接口处于活动状态且可访问。



### 3. Wazuh Server 配置

Ubuntu Server 被用作 Wazuh 服务器。

Wazuh 服务器配置了静态 IP 地址:


IP address: 192.168.10.150

Subnet mask: 255.255.255.0

Gateway: 192.168.10.1

DNS: 8.8.8.8 / 1.1.1.1

通过以下命令验证了连接性:


ping 192.168.10.1

ping 8.8.8.8

两项测试均成功。



### 4. Wazuh 安装

使用自动安装脚本安装了 Wazuh:


sudo apt update

sudo apt install -y curl

curl -sO https://packages.wazuh.com/4.10/wazuh-install.sh

sudo bash wazuh-install.sh -a

在首次安装尝试期间,Wazuh 报告虚拟机未满足推荐的最低硬件要求。

虚拟机资源已调整为:


Memory: 4096 MB

Processors: 2 virtual CPUs

增加资源后,安装成功完成。

通过以下地址访问了 Wazuh Dashboard:


https://192.168.10.150

使用了安装时生成的管理员密码。尝试从 Dashboard 更改内置管理员密码失败,因为 admin 用户在此 Wazuh 版本中是保留的,因此实验室保留了生成的密码。



### 5. Wazuh 代理部署

通过 Wazuh Dashboard 使用“Deploy new agent”选项部署了 Wazuh 代理。

HR 端点配置为:


Agent name: HR_Anstalld

IP address: 192.168.10.101

Wazuh Server: 192.168.10.150

Support 端点配置为:


Agent name: Support_Anstalld

IP address: 192.168.30.101

Wazuh Server: 192.168.10.150

在每个 Windows 客户端上以管理员身份执行了生成的 PowerShell 安装命令。

代理服务通过以下命令启动:


NET START WazuhSvc

两个代理均已在 Wazuh Dashboard 中确认为活动状态。



## 威胁模拟与检测

### 1. 暴力破解登录模拟

在 HR 客户端上模拟了失败的登录尝试。

通过以下命令检查了当前的 Windows 用户:


whoami

观察到的用户:


desktop-th2mb3n\mehdi

通过以下方式生成了失败的登录尝试:


runas /user:mehdi cmd

输入了几个错误的密码以模拟暴力破解行为。

Wazuh 在 Threat Hunting 中检测到了失败的登录尝试。

| 字段 | 结果 |

|---|---|

| 代理 | HR_Anstalld |

| 规则描述 | Logon Failure - Unknown user or bad password |

| 规则 ID | 60122 |

| 规则级别 | 5 |

这证实了 Wazuh 能够检测来自 Windows 端点的失败身份验证活动。



### 2. 成功登录监控

从 Support 客户端观察到了成功的登录活动。

| 字段 | 结果 |

|---|---|

| 代理 | Support_Anstalld |

| 规则描述 | Windows Logon Success |

| 规则 ID | 60106 |

| 规则级别 | 3 |

这证实了 Wazuh 正在从 Support 端点收集 Windows 身份验证事件。



### 3. 可疑登录模拟

通过将 Support 客户端上的时区更改为以下内容,模拟了可疑登录场景:


(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi

更改时区后,用户注销并再次登录。

Wazuh 生成了一个成功登录事件:


Windows Logon Success

Rule ID: 60106

未生成国家或地理位置警报。这是预料之中的,因为实验室使用的是私有内部 IP 地址,例如:


192.168.30.101

私有实验室 IP 地址不提供真实的公共地理位置数据。



### 4. 高流量 / DDoS 模拟

从 HR 客户端针对 OPNsense 模拟了高 ICMP 流量。

使用的命令:


ping 192.168.10.1 -t -l 65500

目的是模拟异常的网络活动,并测试 Wazuh 是否会生成 DDoS 风格的警报。

默认的 Wazuh 规则未自动触发专用的 DDoS 警报。这表明特定的 DDoS 风格检测可能需要额外的解析、自定义规则或更高级的网络遥测技术。

这仍然是实验室中有用的一部分,因为它展示了生成流量与创建可靠的 SIEM 检测之间的区别。



## OPNsense Syslog 集成

OPNsense 被配置为使用远程 syslog 将日志转发到 Wazuh。

| 设置 | 值 |

|---|---|

| 传输协议 | UDP |

| 目标地址 | 192.168.10.150 |

| 端口 | 514 |

| 描述 | Wazuh Syslog |

| 日志源 | OPNsense firewall/syslog |

在 Wazuh 服务器上,syslog 接收配置在以下文件中:


/var/ossec/etc/ossec.conf

最终的 syslog 监听器配置:


<remote>

  <connection>syslog</connection>

  <port>514</port>

  <protocol>udp</protocol>

  <allowed-ips>192.168.10.1</allowed-ips>

  <local_ip>0.0.0.0</local_ip>

</remote>

编辑配置后,重启了 Wazuh Manager:


sudo systemctl restart wazuh-manager

通过以下命令检查了服务状态:


sudo systemctl status wazuh-manager

结果:


active (running)



## 故障排查总结

本实验室的重要部分是排查 OPNsense 到 Wazuh 的 syslog 集成问题。

主要问题是 OPNsense 发送了 syslog 流量,但日志并未立即在 Wazuh 中显示。

故障排查步骤包括:

- 检查 Wazuh ossec.conf 配置
- 修复 XML 结构问题
- 删除错误放置的 ossec_config 闭合行
- 每次更改后重启 Wazuh Manager
- 使用 systemctl 验证服务状态
- 安装并使用 tcpdump
- 确认来自 OPNsense 的 UDP 514 流量已到达
- 启用 Wazuh 归档日志记录
- 在 archives.log 中审查原始日志

通过以下命令验证了 syslog 流量:


sudo tcpdump -i any udp port 514

这证实了 OPNsense 正在向 Wazuh 服务器发送 syslog 流量。

归档日志记录通过将以下内容更改来启用:


<logall>no</logall>

<logall_json>no</logall_json>

改为:


<logall>yes</logall>

<logall_json>yes</logall_json>

通过以下命令监控原始日志:


sudo tail -f /var/ossec/logs/archives/archives.log

此更改后,OPNsense 防火墙日志出现在了 archives.log 中。

最终验证的日志路径:


OPNsense → Syslog UDP 514 → Wazuh Server → archives.log



## 主要发现

| 领域 | 结果 |

|---|---|

| Wazuh 安装 | 增加虚拟机资源后成功 |

| Wazuh Dashboard | 可从 Windows 客户端访问 |

| HR 代理 | 活动状态 |

| Support 代理 | 活动状态 |

| 失败登录检测 | 成功 |

| 成功登录监控 | 成功 |

| 可疑登录模拟 | 检测到登录事件 |

| 地理位置警报 | 由于使用私有实验室 IP 而未触发| OPNsense syslog 转发 | 排查问题后成功 |

| tcpdump 验证 | 确认了 UDP 514 流量 |

| archives.log 验证 | 确认了原始 OPNsense 日志 |

| DDoS 模拟 | 生成了流量,但未触发默认 DDoS 警报 |



## 截图

### 1. OPNsense 接口概览

![OPNsense 接口概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f665f0d16e061202.png)

OPNsense 接口概览,展示了 LAN、WLAN、WAN 和 Support_LAN 接口。主 LAN 使用 `192.168.10.1/24`,Support_LAN 网段使用 `192.168.30.1/24`。



### 2. Wazuh 服务器静态 IP

![Wazuh 服务器静态 IP](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6cc6b47850061203.png)

Ubuntu Server 网络配置,显示 Wazuh 服务器在 LAN 网络上使用静态 IP 地址 `192.168.10.150/24`。



### 3. Wazuh Dashboard 概览

![Wazuh Dashboard 概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1defc51803061204.png)

Wazuh Dashboard 概览,显示了活动的代理和警报统计信息,确认 Wazuh Web 界面正常工作。



### 4. Wazuh 代理摘要

![Wazuh 代理摘要](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/95fcbdf778061204.png)

Wazuh 端点摘要,显示了两个 Windows 代理 `HR_Anstalld` 和 `Support_Anstalld`,均已连接并处于活动状态。



### 5. HR 失败登录事件

![HR 失败登录事件](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/44c10e707f061205.png)

Threat Hunting 视图显示了来自 `HR_Anstalld` 的多个失败登录事件,被检测为 `Logon Failure - Unknown user or bad password`,规则 ID 为 `60122`。



### 6. Support 成功登录事件

![Support 成功登录事件](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/7754a5d503061206.png)

Threat Hunting 视图显示了来自 `Support_Anstalld` 的成功 Windows 登录事件,通过规则 ID `60106` 检测。



### 7. OPNsense Syslog 目标

![OPNsense Syslog 目标](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/95444acac3061206.png)

OPNsense 远程日志配置,显示了通过 UDP 向位于 `192.168.10.150` 的 Wazuh 服务器转发 syslog。



### 8. Wazuh Manager 状态

![Wazuh Manager 状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/2d7c70d048061207.png)

Wazuh Manager 服务状态显示为 `active (running)`,确认 Wazuh 接受了配置并正常运行。



### 9. tcpdump Syslog 验证

![tcpdump Syslog 验证](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/410b24c43e061208.png)

tcpdump 输出显示了从 OPNsense 到 Wazuh 服务器的传入 UDP 514 syslog 流量,确认 syslog 数据包已到达服务器。



### 10. archives.log 验证

![archives.log 验证](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/bb348d3336061208.png)

Wazuh `archives.log` 输出显示了原始的 OPNsense 防火墙日志,确认 syslog 数据已被 Wazuh 接收并写入。



## 我学到了什么

通过这个实验室,我实践了 SIEM 和端点监控如何融入更广泛的蓝队工作流程中。

主要收获:

- Wazuh 可以集中管理端点和安全事件监控
- Windows 代理提供有用的身份验证可见性
- 失败的登录尝试可以在 Threat Hunting 中被检测和审查
- 成功的登录对于调查和构建时间线也很有用
- OPNsense 可以使用 syslog 将防火墙日志转发到 Wazuh
- Syslog 故障排查需要发送方和接收方的双重验证
- tcpdump 可用于确认日志是否确实到达了服务器
- archives.log 可用于验证原始日志的获取
- 默认的 SIEM 规则并不总是能生成预期的确切警报
- 特定检测可能需要自定义规则和解析器调优
- DDoS 风格的检测通常需要的不仅仅是简单的 ping 流量
- 故障排查是真实 SOC 和蓝队工作的重要组成部分
- SIEM 只有与日志分析、验证和上下文相结合时才最有价值



## 展示的关键技能

- SIEM 部署
- Wazuh 安装和配置
- 端点监控
- Windows 事件日志分析
- 身份验证事件监控
- 暴力破解检测
- OPNsense syslog 转发
- 防火墙日志分析
- Linux 服务器配置
- 基于 tcpdump 的故障排查
- Wazuh 归档日志验证
- Threat Hunting
- 网络分段
- SOC 和蓝队方法论
- 在真实实验室条件下进行故障排查



## 文档

完整的实验室文档可在此处获取:

[实验室文档](docs/lab-documentation.md)



## 作者

Muhammad Mehdi  

IT Security Developer Student
标签:AI合规, GitHub Advanced Security, Hyper-V, OPNsense, PoC, SIEM部署, Ubuntu Server, Wazuh, Windows代理, 可疑登录, 子域名变形, 安全事件分析, 安全加固, 安全实验室, 安全规则调优, 暴力破解, 端点监控, 系统日志, 红队行动, 网络安全监控, 身份验证事件, 防御性安全, 防火墙日志, 驱动开发