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 流量并生成了告警。 ![ICMP 告警验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/3e/3e87c98f52cd889d2a8ef7e0e4e5a6bbc0954ffaf1a98e824f9c1e9d1e82b4a7.png) ### HTTP User-Agent 告警 使用以下命令生成了一个测试 HTTP 请求: ``` curl.exe -A "SuricataLabTest" http://example.com ``` Suricata 检测到了自定义的 HTTP User-Agent 值。 ![HTTP User-Agent 告警验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/ff/ffc20ff4523b6e9c0a94e3ccbc828f101c6bc9e0695a95d355222e551cbbda70.png) ### TCP 端口扫描告警 针对本地路由器生成了多个 TCP 连接尝试,以模拟扫描行为。 Suricata 检测到了重复的 SYN 连接尝试,并生成了疑似端口扫描告警。 ![端口扫描告警验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/e9/e9e37e5a562f44f1b73e48968808372d0ecdf82c68a206333ed180c9fe633d71.png) ## 报告 每个告警均记录在 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), 插件系统, 现代安全运营, 网络安全, 隐私保护