philipzangara/suricata-nids-raspberry-pi

GitHub: philipzangara/suricata-nids-raspberry-pi

一个基于树莓派与 Suricata 的家庭网络入侵检测系统,通过 Splunk 实现实时告警可视化。

Stars: 0 | Forks: 0

# Suricata NIDS 在 Raspberry Pi 4 + Splunk 仪表板 一个基于运行 Ubuntu 25.10 的 Raspberry Pi 4B 构建的家庭网络入侵检测系统(NIDS),使用 Suricata 并采用新兴威胁开放规则集,通过通用转发器将告警转发到 Splunk 以实现实时仪表板可视化。 ## 概述 我在家庭实验室中搭建此项目,以展示 **我的网络当前实际发生了什么?** 一个树莓派跨接在启用端口镜像的交换机上,被动检查所有网络流量。Suricata 将其与新兴威胁开放规则集进行匹配,并将告警写入 `fast.json`。Splunk 通用转发器将这些日志传输到 Splunk 实例,其中自定义仪表板展示活跃威胁、规则类别、顶级通信方和告警趋势。 ## 架构 ``` [Switch - Port Mirror] | v [Raspberry Pi 4B - Ubuntu 25.10] Suricata 7.x (NIDS) └── /var/log/suricata/fast.json | v [Splunk Universal Forwarder (ARM64)] | v [Splunk Indexer :9997] | v [Splunk Dashboard - Alert Visualization] ``` ## 硬件与软件 | 组件 | 详情 | |---|---| | 设备 | Raspberry Pi 4B — 4 GB 内存 | | 操作系统 | Ubuntu 25.10(ARM64) | | NIDS | Suricata 7.x | | 规则集 | 新兴威胁开放规则集(`et/open`) | | 日志转发器 | Splunk 通用转发器(Linux ARM64) | | SIEM | Splunk 企业版 9.x | | 交换机 | 任何支持端口镜像 / SPAN 的可管理交换机 | ## 安装 注意,有两种运行 Suricata 的方式:使用 eve.json 和 fast.log。此外也有多种安装规则集的方法。对于我的家庭实验室,我使用了 fast.log,因为 eve.json 占用了太多空间。我也是“手动”下载规则集,以便能够编辑并移除部分告警“噪声”。我保留了规则集说明供自己记录。你可以通过 Suricata 启用规则,或者从互联网“手动”下载。 ### 1. 更新并安装 Suricata ``` sudo apt update && sudo apt upgrade -y sudo apt install -y suricata suricata -V ``` ### 2. 配置 Suricata 编辑 `/etc/suricata/suricata.yaml`: **设置你的家庭网络范围:** ``` vars: address-groups: HOME_NET: "[192.168.1.0/24]" # replace with your subnet ``` **设置你的捕获接口:** ``` af-packet: - interface: eth0 # replace with your mirrored interface ``` **验证 FAST 日志是否已启用:** ``` outputs: - fast: enabled: yes filename: fast.log append: yes buffer-size: 0 ``` ### 3. 启用并更新/下载规则 ``` # 列出可用的免费规则集 sudo suricata-update list-sources --free # 启用新兴威胁开放规则 #sudo suricata-update enable-source et/open # 拉取并应用规则 #sudo suricata-update # 非常重要 - 必须重启 Suricata 才能启用规则, sudo systemctl restart suricata sudo systemctl enable suricata ``` “手动”下载版本 ``` cd /etc/suricata/rules sudo wget https://rules.emergingthreats.net/open/suricata-7.0.10/emerging.rules.tar.gz sudo tar -czf emerging.rules.tar.gz # 将在 /etc/suricata/rules 中有一批 *.rule 文件 sudo systemctl restart suricata sudo systemctl enable suricata ``` ### 4. 在交换机上启用端口镜像 在可管理交换机上配置 SPAN/镜像端口,使所有网络流量复制到树莓派的接口。具体步骤因交换机而异。树莓派只需接收镜像流量;无需串联在链路中。 ### 5. 安装 Splunk 通用转发器(ARM64) 从 [splunk.com/en_us/download/universal-forwarder.html](https://www.splunk.com/en_us/download/universal-forwarder.html) 下载 Linux ARM64 `.deb` 包。 ``` sudo dpkg -i splunkforwarder--linux-arm64.deb cd /opt/splunkforwarder/bin # 将转发器指向您的 Splunk 索引器 sudo ./splunk add forward-server :9997 # 将 Suricata 日志目录添加到监控输入 sudo ./splunk add monitor /var/log/suricata/ # 重启以应用 sudo ./splunk restart ``` ### 6. 验证告警是否正在流动 在你的 Splunk 实例中: ``` source="*fast.log" ``` 你应该能看到 Suricata 规则名称。 ## 测试 NIDS 使用 [testmynids.org](https://github.com/3CORESec/testmynids.org) 脚本(来自 3CORESec)触发已知签名以验证数据管道: ``` curl -sSL https://raw.githubusercontent.com/3CORESec/testmynids.org/master/tmNIDS -o /tmp/tmNIDS chmod +x /tmp/tmNIDS /tmp/tmNIDS ``` 确认告警是否出现在 `fast.log` 中,并在转发器的轮询间隔内传播到 Splunk。 ## Splunk 仪表板 [INSERT DASHBOARD] ## 已知问题与限制 - **ARM64 转发器版本** — 确保下载 Linux ARM64 版本,而非 x86-64;错误的架构会静默安装失败。 - **镜像接口下的混杂模式** — Suricata 需要捕获接口处于混杂模式;通过 `ip link show eth0` 确认是否包含 `PROMISC`。 - **加密流量** — Suricata 无法检查 TLS 负载而无需解密代理;JA3 指纹识别仅可用于 TLS 元数据。 - **ET/Open 误报** — 免费规则集在家庭网络中会产生大量噪声;可参考配套的 [Suricata ET 噪声分析](https://philipzangara.com/?p=103) 项目进行调优。 - **树莓派性能限制** — 在饱和的千兆链路上,树莓派 4B 会丢包;使用 `suricata --engine-analysis` 监控,并考虑启用 `runmode: workers` 以提升吞吐量。 - **日志轮转** — 为 `/var/log/suricata/` 配置 logrotate,防止树莓派 SD 卡空间耗尽。 ## 生产环境考虑 这是一个家庭实验室部署。生产环境的 NIDS 部署在多个方面会有所不同: - **专用硬件或虚拟设备** — 商业 NIDS 传感器(如 Corelight、Stamus Networks)在专用硬件上运行 Suricata,具备硬件时间戳和无损数据包捕获。 - **商业规则集** — ET Pro、Snort VRT 或具备更高精度和更低误报率的定制规则集。 - **通过 HEC 的 SIEM 集成** — Splunk HTTP 事件收集器(HEC)比通用转发器轮询提供更低的延迟。 - **告警分类流程** — 与 SOAR( Splunk SOAR、Palo Alto XSOAR )集成,实现低置信度告警的自动分类和工单处理。 - **TLS 检查** — 生产环境在边界处解密 TLS 以进行完整负载检查。 - **冗余** — 单个树莓派是单点故障;生产传感器通常以集群方式运行并具备故障转移能力。 ## 参考文档 - [Suricata 官方文档](https://docs.suricata.io) - [新兴威胁开放规则集](https://rules.emergingthreats.net) - [testmynids.org(3CORESec)](https://github.com/3CORESec/testmynids.org) - [Splunk 通用转发器在树莓派上](https://gabrielgalvan.blogspot.com/2015/10/raspberry-pi-as-splunk-universal.html) — Gabriel Galvan - [Suricata ET 噪声分析](https://philipzangara.com/?p=103) — 配套项目 ## 相关项目 - [splunk-otx-cti-dashboard](https://github.com/philipzangara/splunk-otx-cti-dashboard) — 将 AlienVault OTX 威胁情报与实时 Sysmon 遥测相关联的 Splunk 仪表板 MIT License — 详见 [LICENSE](./LICENSE)。
标签:AMSI绕过, ARM64, Emerging Threats Open, et/open, Metaprompt, Mutation, NIDS, PB级数据处理, Raspberry Pi 4, SPANN, Splunk Dashboard, Splunk Universal Forwarder, Suricata, Ubuntu 25.10, 可视化, 威胁检测, 安全运维, 家庭网络, 容器化, 日志转发, 流量监控, 现代安全运营, 端口镜像, 网络安全监控, 驱动开发