AnnsGilani/Suricata-NIDS-Lab
GitHub: AnnsGilani/Suricata-NIDS-Lab
一个基于 Suricata 的网络入侵检测系统实验项目,通过自定义检测规则、告警验证和 SOC 风格调查报告演示 NIDS 的完整工作流程。
Stars: 0 | Forks: 0
# Suricata NIDS 实验室
一个使用 Suricata 构建的实践型网络入侵检测系统(NIDS)实验室。本项目演示了实时网络流量监控、自定义规则创建、告警生成,以及使用 `fast.log` 和 `eve.json` 进行 SOC 风格的告警调查。
## 项目概述
创建此实验室旨在了解网络入侵检测系统如何检测可疑的网络活动。配置了 Suricata 以使用 Npcap 监控 Windows 计算机上的实时流量。编写并针对受控流量测试了自定义检测规则。
该项目包含三个自定义检测场景:
1. ICMP Ping 检测
2. 可疑 HTTP User-Agent 检测
3. 疑似 TCP 端口扫描检测
使用 Suricata 日志验证了每个告警,并记录在简短的调查报告中。
## 使用的工具
* Suricata
* Npcap
* PowerShell
* VS Code
* Emerging Threats 开源规则集
* Windows
## 项目结构
```
Suricata-NIDS-Lab/
├── custom-rules/
│ └── local.rules
├── reports/
│ ├── icmp-alert-analysis.md
│ ├── http-user-agent-alert-analysis.md
│ └── port-scan-alert-analysis.md
├── screenshots/
│ ├── icmp-alert-verification.png
│ ├── http-user-agent-alert-verification.png
│ └── port-scan-alert-verification.png
├── logs/
│ └── .gitkeep
├── rules/
├── suricata.yaml
├── README.md
└── .gitignore
```
## 自定义检测规则
### 1. ICMP Ping 检测
```
alert icmp any any -> any any (msg:"SURICATA LAB ICMP Ping Detected"; itype:8; sid:1000001; rev:1;)
```
此规则检测通常由 `ping` 命令生成的 ICMP echo request 流量。
### 2. 可疑 HTTP User-Agent 检测
```
alert http any any -> any any (msg:"SURICATA LAB Suspicious HTTP User-Agent Detected"; http.user_agent; content:"SuricataLabTest"; nocase; sid:1000002; rev:1;)
```
此规则检测包含自定义 User-Agent 值 `SuricataLabTest` 的 HTTP 流量。
### 3. 疑似 TCP 端口扫描检测
```
alert tcp any any -> any any (msg:"SURICATA LAB Possible TCP Port Scan Detected"; flags:S; threshold:type both, track by_src, count 5, seconds 10; sid:1000003; rev:1;)
```
此规则检测在短时间窗口内来自同一来源的多个 TCP SYN 数据包,这可能表明存在扫描行为。
## 告警证据
Suricata 在 `fast.log` 和 `eve.json` 中均生成了告警。
* `fast.log` 提供了快速且易于人工阅读的告警输出。
* `eve.json` 提供了结构化的 JSON 事件数据,可用于调查和 SIEM 摄取。
## 检测场景
### ICMP Ping 告警
使用以下命令生成了一个测试 ping:
```
ping -4 google.com
```
Suricata 检测到了 ICMP echo request 流量并生成了告警。

### HTTP User-Agent 告警
使用以下命令生成了一个测试 HTTP 请求:
```
curl.exe -A "SuricataLabTest" http://example.com
```
Suricata 检测到了自定义的 HTTP User-Agent 值。

### TCP 端口扫描告警
针对本地路由器生成了多个 TCP 连接尝试,以模拟扫描行为。
Suricata 检测到了重复的 SYN 连接尝试,并生成了疑似端口扫描告警。

## 报告
每个告警均记录在 SOC 风格的调查报告中:
* [ICMP 告警分析](reports/icmp-alert-analysis.md)
* [HTTP User-Agent 告警分析](reports/http-user-agent-alert-analysis.md)
* [端口扫描告警分析](reports/port-scan-alert-analysis.md)
## 关键学习成果
通过该项目,我学习了如何:
* 将 Suricata 配置为网络 IDS
* 加载并测试自定义 Suricata 规则
* 监控实时网络流量
* 生成受控的测试流量
* 分析 `fast.log` 中的告警
* 调查 `eve.json` 中的结构化事件
* 理解基本的 IDS 检测逻辑
* 从 SOC 分析师的角度记录告警
* 区分检测、证据和调查上下文
## 注意事项
本项目是在受控的实验室环境中进行的。用于测试的流量是由本地计算机出于教育目的故意生成的。
大型的规则文件、日志、PCAP 文件和临时设置文件已使用 `.gitignore` 从 GitHub 中排除。
## 合规使用
本项目仅用于学习、防御性安全和作品集演示。测试仅在本地计算机、公共测试域和本地网络路由器上进行。未经授权,请勿扫描或测试系统。
标签:AI合规, IP 地址批量处理, Metaprompt, Subfinder, Suricata, 安全运营中心(SOC), 插件系统, 现代安全运营, 网络安全, 隐私保护