christian6134/Security-Monitoring-Wazuh-Suricata
GitHub: christian6134/Security-Monitoring-Wazuh-Suricata
一个详细记录使用Wazuh SIEM和Suricata IDS构建端到端安全监控流水线的家庭实验室项目,涵盖从部署配置到攻击检测的完整流程。
Stars: 0 | Forks: 0
## 安全监控家庭实验室
**作者**: Christian Garces
**实验重点**: 使用 Wazuh SIEM 和 Suricata IDS 构建端到端的安全监控流水线。
### 概述
本项目记录了使用 **Wazuh** 和 **Suricata** 部署小规模 **安全信息与事件管理 (SIEM)** 环境的过程。实验室的目标是:
- 从端点**采集**主机遥测数据
- 使用 IDS 传感器**检查**网络流量
- **生成**入侵警报
- 在集中式 SIEM 中**获取并关联**事件
- 在仪表板中**可视化并调查**检测结果
该实验室由运行在 Ubuntu 虚拟机上的 Wazuh 服务器和同时运行 Wazuh agent 及 Suricata IDS 的 Raspberry Pi 端点组成。Raspberry Pi 充当网络入侵检测传感器,同时将结构化警报转发到 Wazuh SIEM 进行分析和可视化。
### 实验室架构
- **SIEM 平台**: 运行在 `Ubuntu Server` 上的 `Wazuh` (Manager, Indexer, Dashboard)
- **IDS 传感器 / 端点**: 运行 `Suricata` 和 `Wazuh Agent` 的 `Raspberry Pi`
- **网络**: 家庭实验室网络,Raspberry Pi 在其主接口上监控流量
**逻辑架构:**
```
Home / Lab Network
│
+-------+--------+
| Raspberry Pi |
| Suricata IDS |
| Wazuh Agent |
+-------+--------+
│ Suricata JSON Alerts (eve.json)
▼
+---------------------+
| Ubuntu Server VM |
| Wazuh Manager |
| Wazuh Indexer |
| Wazuh Dashboard |
+---------------------+
```
*图 1 – 高层架构:Raspberry Pi 上的 Suricata 生成警报并转发到 Ubuntu 上的 Wazuh SIEM 技术栈。*
### 环境设置
#### Wazuh SIEM 部署
第一步是在 Ubuntu Server VM 上部署 Wazuh SIEM 技术栈。该技术栈包含三个主要组件:
- **Wazuh Manager** – 收集和分析安全事件
- **Wazuh Indexer** – 存储和索引事件数据
- **Wazuh Dashboard** – 提供用于安全监控的 Web 界面
*图 2 – Wazuh server、dashboard 和 indexer 已在 Ubuntu Server 上成功安装。*
安装完成后,从主机访问 Wazuh dashboard 以确认 SIEM 平台正常运行。
*图 3 – 从主机 OS 查看 Wazuh dashboard 登录界面和初始视图。*
#### 端点 Agent 注册
为了收集主机遥测数据,在 Raspberry Pi 端点上安装了 **Wazuh agent**。
*图 4 – Wazuh agent 已在 Raspberry Pi 上安装并配置。*
识别 Ubuntu server 的 IP 地址,以便 agent 能够与 Wazuh manager 通信。
*图 5 – Raspberry Pi agent 用于注册的 Wazuh server IP 地址。*
### Suricata IDS 部署与配置
#### 安装 Suricata
在 Raspberry Pi 上安装 Suricata 以充当 **网络入侵检测传感器**。
*图 6 – Suricata 已在 Raspberry Pi 上成功安装。*
已确认 IDS 服务正在运行。
*图 7 – Suricata 服务正在运行且已启用。*
接下来,检查系统接口以确定 Suricata 应监控哪个网络接口。
*图 8 – Raspberry Pi 上的网络接口,用于选择受监控的接口。*
#### Suricata 配置
Suricata 安装目录包含配置文件、规则集和运行时日志。
*图 9 – 包含配置文件和规则集的 Suricata 目录结构。*
Suricata 包含许多默认检测规则。
*图 10 – Suricata 自带的预打包规则。*
编辑主配置文件 `suricata.yaml` 以匹配实验室网络环境。
**所做的更改:**
- 更新 `HOME_NET` 以匹配受监控的子网 `192.168.122.0/24`
- 更新 `af-packet` 接口为正确的网络接口
*图 11 – 针对实验室网络调整的 `suricata.yaml`(HOME_NET 和 af-packet 接口)。*
配置中还确认了 Suricata 规则路径。
*图 12 – Suricata 规则路径配置及已启用的规则文件。*
#### 安装 Emerging Threats 规则集
为了启用网络攻击检测,安装了 **Emerging Threats** 社区规则集。
*图 13 – 为 Suricata 安装 Emerging Threats 规则集。*
还审查并安装了 Suricata 可用的其他规则来源。
*图 14 – 管理和更新额外的 Suricata 规则来源。*
随后验证了 Suricata 配置。
*图 15 – 确认 Suricata 成功加载 Emerging Threats 规则集的验证结果。*
### Suricata 日志与遥测
Suricata 生成多个捕获不同类型遥测数据的日志文件。
*图 16 – 包含多个遥测文件的 Suricata 日志目录。*
**关键日志文件包括:**
- `eve.json` – 用于 SIEM 获取的结构化 JSON 事件日志
- `fast.log` – 快速人类可读警报
- `stats.log` – Suricata 性能统计数据
- `suricata.log` – Suricata 运行时消息和诊断
### 监控与检测工作流
#### 验证 IDS 检测
查看了 Suricata 运行时日志以确认初始化成功。
*图 17 – Suricata 启动日志确认 IDS 引擎已激活。*
生成测试网络流量以触发 IDS 检测,验证规则集是否成功识别潜在恶意活动。
*图 18 – 由测试 IDS 流量生成的 Suricata 检测。*
实施了自定义 Suricata 检测规则,以检测指向受监控网络的 ICMP、SSH 和 HTTP 流量。
*图 19 – 自定义 Suricata 规则及加载社区和自定义规则集的配置。*
配置验证确认 IDS 引擎成功加载了所有规则。
*图 20 – 确认活跃的自定义和社区规则的验证输出。*
#### 实时 IDS 监控
使用 `fast.log` 文件监控 Suricata 警报。
*图 21 – Suricata 实时检测多个网络事件,同时生成测试流量。*
在使用以下命令监控 Suricata 警报日志时:
```
tail -f /var/log/suricata/fast.log
```
从另一个终端生成了诸如 ICMP ping 和 SSH 连接尝试之类的测试流量。当数据包穿过受监控的接口时,Suricata 根据其加载的检测特征对其进行检查,并在检测到匹配活动时立即生成警报。
### 解析 Suricata JSON 日志
Suricata 的 `eve.json` 输出包含结构化事件数据,但难以直接阅读。
*图 22 – Suricata 的原始 `eve.json` 输出。*
使用 `jq` 工具过滤和解析 JSON 警报。
*图 23 – 使用 `jq` 解析 Suricata JSON 警报以便于分析。*
**使用的命令:**
```
sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")'
```
此命令实时流式传输 Suricata 事件日志,并仅过滤 IDS 警报事件。
### 将 Suricata 集成到 Wazuh
为了集中管理 IDS 警报,配置 Wazuh 以获取 Suricata 事件日志。
*图 24 – Wazuh 配置通过 `` 条目监控 Suricata `eve.json` 日志。*
在 `ossec.conf` 中添加了一个 `` 条目,指示 Wazuh 监控 Suricata `eve.json` 日志,从而允许 Suricata 警报直接转发到 Wazuh SIEM 中。
### 在 SIEM 中可视化 IDS 警报
集成后,Suricata 警报在 Wazuh dashboard 中变得可见。
*图 25 – Suricata 警报被获取到 Wazuh 并通过 Discover dashboard 进行可视化。*
Discover dashboard 用于过滤事件。通过以下方式过滤:
```
rule.groups:suricata
```
将 IDS 警报与其他系统日志(例如 PAM 身份验证事件)隔离开来。
### 攻击模拟测试
执行了多次模拟攻击以验证检测。
**示例暴力破解 SSH 活动:**
```
for i in {1..30}; do
ssh fakeuser@192.168.122.25
done
```
这些操作生成了 Suricata 警报,并成功被 Wazuh 获取和在 SIEM dashboard 中可视化,确认了从网络事件到 SIEM 的端到端可见性。
### 结果与学习成果
本实验室成功演示了一个端到端的安全监控流水线:
```
Network Traffic
↓
Suricata IDS Sensor (Raspberry Pi)
↓
Structured JSON Alerts (eve.json)
↓
Wazuh SIEM Ingestion
↓
Centralized Security Event Analysis
```
本项目展示了以下方面的实践经验:
- 入侵检测系统 (IDS) 的部署与配置
- SIEM 集成与日志转发
- 检测规则的创建与管理(社区和自定义规则)
- 使用 `jq` 等工具进行日志解析与扩充
- 在 SIEM dashboard 中进行安全事件的可视化与调查
这个结构化的家庭实验室通过将网络 IDS 遥测数据与集中式、可查询的安全分析相结合,紧密模拟了现实世界的安全运营工作流程。
*图 2 – Wazuh server、dashboard 和 indexer 已在 Ubuntu Server 上成功安装。*
安装完成后,从主机访问 Wazuh dashboard 以确认 SIEM 平台正常运行。
*图 3 – 从主机 OS 查看 Wazuh dashboard 登录界面和初始视图。*
#### 端点 Agent 注册
为了收集主机遥测数据,在 Raspberry Pi 端点上安装了 **Wazuh agent**。
*图 4 – Wazuh agent 已在 Raspberry Pi 上安装并配置。*
识别 Ubuntu server 的 IP 地址,以便 agent 能够与 Wazuh manager 通信。
*图 5 – Raspberry Pi agent 用于注册的 Wazuh server IP 地址。*
### Suricata IDS 部署与配置
#### 安装 Suricata
在 Raspberry Pi 上安装 Suricata 以充当 **网络入侵检测传感器**。
*图 6 – Suricata 已在 Raspberry Pi 上成功安装。*
已确认 IDS 服务正在运行。
*图 7 – Suricata 服务正在运行且已启用。*
接下来,检查系统接口以确定 Suricata 应监控哪个网络接口。
*图 8 – Raspberry Pi 上的网络接口,用于选择受监控的接口。*
#### Suricata 配置
Suricata 安装目录包含配置文件、规则集和运行时日志。
*图 9 – 包含配置文件和规则集的 Suricata 目录结构。*
Suricata 包含许多默认检测规则。
*图 10 – Suricata 自带的预打包规则。*
编辑主配置文件 `suricata.yaml` 以匹配实验室网络环境。
**所做的更改:**
- 更新 `HOME_NET` 以匹配受监控的子网 `192.168.122.0/24`
- 更新 `af-packet` 接口为正确的网络接口
*图 11 – 针对实验室网络调整的 `suricata.yaml`(HOME_NET 和 af-packet 接口)。*
配置中还确认了 Suricata 规则路径。
*图 12 – Suricata 规则路径配置及已启用的规则文件。*
#### 安装 Emerging Threats 规则集
为了启用网络攻击检测,安装了 **Emerging Threats** 社区规则集。
*图 13 – 为 Suricata 安装 Emerging Threats 规则集。*
还审查并安装了 Suricata 可用的其他规则来源。
*图 14 – 管理和更新额外的 Suricata 规则来源。*
随后验证了 Suricata 配置。
*图 15 – 确认 Suricata 成功加载 Emerging Threats 规则集的验证结果。*
### Suricata 日志与遥测
Suricata 生成多个捕获不同类型遥测数据的日志文件。
*图 16 – 包含多个遥测文件的 Suricata 日志目录。*
**关键日志文件包括:**
- `eve.json` – 用于 SIEM 获取的结构化 JSON 事件日志
- `fast.log` – 快速人类可读警报
- `stats.log` – Suricata 性能统计数据
- `suricata.log` – Suricata 运行时消息和诊断
### 监控与检测工作流
#### 验证 IDS 检测
查看了 Suricata 运行时日志以确认初始化成功。
*图 17 – Suricata 启动日志确认 IDS 引擎已激活。*
生成测试网络流量以触发 IDS 检测,验证规则集是否成功识别潜在恶意活动。
*图 18 – 由测试 IDS 流量生成的 Suricata 检测。*
实施了自定义 Suricata 检测规则,以检测指向受监控网络的 ICMP、SSH 和 HTTP 流量。
*图 19 – 自定义 Suricata 规则及加载社区和自定义规则集的配置。*
配置验证确认 IDS 引擎成功加载了所有规则。
*图 20 – 确认活跃的自定义和社区规则的验证输出。*
#### 实时 IDS 监控
使用 `fast.log` 文件监控 Suricata 警报。
*图 21 – Suricata 实时检测多个网络事件,同时生成测试流量。*
在使用以下命令监控 Suricata 警报日志时:
```
tail -f /var/log/suricata/fast.log
```
从另一个终端生成了诸如 ICMP ping 和 SSH 连接尝试之类的测试流量。当数据包穿过受监控的接口时,Suricata 根据其加载的检测特征对其进行检查,并在检测到匹配活动时立即生成警报。
### 解析 Suricata JSON 日志
Suricata 的 `eve.json` 输出包含结构化事件数据,但难以直接阅读。
*图 22 – Suricata 的原始 `eve.json` 输出。*
使用 `jq` 工具过滤和解析 JSON 警报。
*图 23 – 使用 `jq` 解析 Suricata JSON 警报以便于分析。*
**使用的命令:**
```
sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")'
```
此命令实时流式传输 Suricata 事件日志,并仅过滤 IDS 警报事件。
### 将 Suricata 集成到 Wazuh
为了集中管理 IDS 警报,配置 Wazuh 以获取 Suricata 事件日志。
*图 24 – Wazuh 配置通过 `
*图 25 – Suricata 警报被获取到 Wazuh 并通过 Discover dashboard 进行可视化。*
Discover dashboard 用于过滤事件。通过以下方式过滤:
```
rule.groups:suricata
```
将 IDS 警报与其他系统日志(例如 PAM 身份验证事件)隔离开来。
### 攻击模拟测试
执行了多次模拟攻击以验证检测。
**示例暴力破解 SSH 活动:**
```
for i in {1..30}; do
ssh fakeuser@192.168.122.25
done
```
这些操作生成了 Suricata 警报,并成功被 Wazuh 获取和在 SIEM dashboard 中可视化,确认了从网络事件到 SIEM 的端到端可见性。
### 结果与学习成果
本实验室成功演示了一个端到端的安全监控流水线:
```
Network Traffic
↓
Suricata IDS Sensor (Raspberry Pi)
↓
Structured JSON Alerts (eve.json)
↓
Wazuh SIEM Ingestion
↓
Centralized Security Event Analysis
```
本项目展示了以下方面的实践经验:
- 入侵检测系统 (IDS) 的部署与配置
- SIEM 集成与日志转发
- 检测规则的创建与管理(社区和自定义规则)
- 使用 `jq` 等工具进行日志解析与扩充
- 在 SIEM dashboard 中进行安全事件的可视化与调查
这个结构化的家庭实验室通过将网络 IDS 遥测数据与集中式、可查询的安全分析相结合,紧密模拟了现实世界的安全运营工作流程。标签:AMSI绕过, Homebrew安装, Homelab, Metaprompt, OISF, Raspberry Pi, Suricata, Wazuh, 仪表盘, 入侵检测系统, 内存执行, 威胁检测, 安全事件分析, 安全数据湖, 安全运营, 家庭实验室, 对抗机器学习, 扫描框架, 日志管理, 日志聚合, 现代安全运营, 端点遥测, 网络安全, 网络流量分析, 隐私保护