用途:对已保存的 .pcap/.pcapng 抓包文件做 Suricata IDS 告警分类(只读),不做实时抓包,也不嗅探网卡接口。
主要能力:基于 nsm-mcp MCP 服务器(规范 091),提供工具 nsm_status、nsm_update_rules、nsm_alerts、nsm_analyze;引擎为 Suricata 8.0.6(按镜像摘要固定)。每个 nsm_alerts 响应附带 suricata_posture:ARMED 表示已加载签名且检测器运行,此时可说“无告警匹配已加载规则集”;INERT 表示 0 签名,只能说检测器未开启,绝不能称流量干净;UNKNOWN 表示见到计数但无规则集文件,需在 nsm_update_rules 后重跑。姿态为 INERT 时,空告警列表会被替换为带有 NOT_A_CLEAN_RESULT 的对象,防止被误读为干净结论。
使用方式(分类流程):先 nsm_status 检查 Docker 可达性、规则集是否存在及其新旧;若无规则集先 nsm_update_rules 再继续,绝不能在 INERT 运行上下结论,应报告检测器未开启并停止。随后 nsm_alerts 配 min_severity=2 优先看值得人工关注的告警,再运行不过滤版本查看全貌,注意 truncated 字段。对重要告警,用 nsm-session-pivot 结合 src_ip/dest_ip/dest_port 下钻到会话上下文。
适用场景:抓包后的告警甄别与优先级排序、签名匹配与检测姿态核对、与 Zeek 会话交叉验证、单包解码(配合 packet-analysis 用 tshark)、由 cml-packet-capture / gns3-packet-capture 产出的抓包,以及用 gait-session-tracking 记录每次分类。
限制与注意事项:无写操作、无实时抓包,不提供阻断流量或修改传感器的能力。签名匹配不等于已失陷,ET Open 含策略与信息类规则,需看 category 与 severity,只陈述匹配了什么而非推断结论。规则集年龄属于发现的一部分,nsm_status 报告 ruleset_age_days 应如实引用;30 天前的规则集无法告警上周的签名。Suricata 也会对畸形流量告警,如 SURICATA TCPv4 invalid checksum 通常源于网卡 offloading 而非攻击,也提示 Zeek 会丢弃这些包,需用 nsm-session-pivot 交叉核对。truncated: true 表示只是分页,不得当作总数。每次分类都要记入 GAIT,包含签名数量与规则集年龄。环境变量:NSM_HOME 为分析与规则集目录,默认 ~/.openclaw/nsm;NSM_TIMEOUT 为单容器超时秒数,默认 600。规则集具体版本、价格与部署方式资料未提供。