solomonneas/suricata-mcp

GitHub: solomonneas/suricata-mcp

一个为 Suricata IDS/IPS 提供 EVE JSON 日志智能分析和告警调查能力的 MCP 服务器,使 LLM 能够进行威胁狩猎和安全运营。

Stars: 0 | Forks: 0

# Suricata MCP 服务器 [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue?logo=typescript)](https://www.typescriptlang.org/) [![Node.js](https://img.shields.io/badge/Node.js-20%2B-green?logo=node.js)](https://nodejs.org/) [![MCP](https://img.shields.io/badge/MCP-1.x-purple)](https://modelcontextprotocol.io/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 一个提供 Suricata IDS/IPS EVE JSON 日志智能解析、查询和分析功能的 MCP (Model Context Protocol) 服务器。通过结构化工具接口,使 LLM 能够调查告警、分析网络流量、检测信标模式 (beaconing patterns) 并管理规则集。 ## 功能特性 - **20 个工具** 用于全面的 Suricata 数据分析 - **3 个资源** 用于快速参考数据 - **3 个提示词** 用于引导调查工作流 - 告警查询、摘要、时间线和 Top-N 分析 - 具备带宽统计的网络流分析 - 协议专用工具:DNS, HTTP, TLS (含 JA3/JA4), SSH, 文件提取, 异常 - C2 信标检测,包含抖动分析和置信度评分 - Suricata 规则搜索和统计 - 跨类型主机和告警调查 - 通过 Unix socket 执行实时引擎命令 - 用于大型 EVE JSON 文件的流式解析器 - 支持 CIDR 的 IP 过滤 - Gzip 归档支持 ## 前置条件 - Node.js 20+ - 生成 EVE JSON 日志的 Suricata 传感器 ## 安装 ``` git clone https://github.com/solomonneas/suricata-mcp.git cd suricata-mcp npm install npm run build ``` ## 配置 设置环境变量以指向您的 Suricata 安装: | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `SURICATA_EVE_LOG` | `/var/log/suricata/eve.json` | 主 EVE JSON 日志路径 | | `SURICATA_EVE_ARCHIVE` | `/var/log/suricata/` | 轮换/归档日志目录 | | `SURICATA_RULES_DIR` | _(无)_ | Suricata 规则目录 (启用规则工具) | | `SURICATA_MAX_RESULTS` | `1000` | 每次查询的最大结果数 | | `SURICATA_UNIX_SOCKET` | _(无)_ | 用于实时命令的 Unix socket 路径 | ## 使用方法 ### Claude Desktop 添加到您的 Claude Desktop MCP 配置 (`claude_desktop_config.json`): ``` { "mcpServers": { "suricata": { "command": "node", "args": ["/path/to/suricata-mcp/dist/index.js"], "env": { "SURICATA_EVE_LOG": "/var/log/suricata/eve.json", "SURICATA_RULES_DIR": "/etc/suricata/rules" } } } } ``` ### 独立运行 ``` SURICATA_EVE_LOG=/var/log/suricata/eve.json node dist/index.js ``` ### 开发 ``` npm run dev # Watch mode with tsx npm run build # Production build npm test # Run test suite npm run lint # Type-check ``` ## 工具 ### 告警分析 | 工具 | 描述 | |------|-------------| | `suricata_query_alerts` | 按 SID、签名、类别、严重性、IP、端口、协议、动作、时间范围搜索告警 | | `suricata_alert_summary` | 按签名、类别、严重性、源或目的地分组的聚合告警统计 | | `suricata_top_alerts` | 按频率和严重性排名的顶级告警,包含唯一源/目的地计数 | | `suricata_alert_timeline` | 带严重性细分的时间分桶告警计数 (1m/5m/15m/1h/1d 间隔) | ### 流量分析 | 工具 | 描述 | |------|-------------| | `suricata_query_flows` | 按 IP、端口、协议、应用协议、最小字节数、最小持续时间、状态搜索流 | | `suricata_flow_summary` | 顶级通信主机、协议分布、带宽统计、唯一 IP 对 | | `suricata_beaconing_detection` | 通过连接间隔分析检测 C2 信标,包含抖动和置信度评分 | ### 协议分析 | 工具 | 描述 | |------|-------------| | `suricata_query_dns` | 按名称、源 IP、记录类型、响应代码搜索 DNS 查询 | | `suricata_query_http` | 按主机名、URL、方法、状态、user-agent 搜索 HTTP 事务 | | `suricata_query_tls` | 按 SNI、JA3/JA4 指纹、证书主题/颁发者搜索 TLS 连接 | | `suricata_query_ssh` | 按客户端/服务器软件版本搜索 SSH 连接 | | `suricata_query_fileinfo` | 按名称、magic 类型、哈希 (MD5/SHA256)、大小搜索提取的文件 | | `suricata_query_anomalies` | 按类型、源/目的地 IP 搜索协议异常 | ### 规则管理 | 工具 | 描述 | |------|-------------| | `suricata_search_rules` | 按 SID、消息、classtype、reference、content 搜索规则文件 | | `suricata_rule_stats` | 规则集统计:总数、已启用/禁用、按动作、按 classtype | ### 引擎与实时命令 | 工具 | 描述 | |------|-------------| | `suricata_engine_stats` | Suricata 捕获、解码器、检测和流统计 | | `suricata_reload_rules` | 通过 Unix socket 触发实时规则重载 | | `suricata_iface_stat` | 通过 Unix socket 获取接口捕获统计 | ### 跨类型调查 | 工具 | 描述 | |------|-------------| | `suricata_investigate_host` | 跨所有事件类型(告警、流、DNS、HTTP、TLS、文件、SSH、异常)对主机进行全面调查 | | `suricata_investigate_alert` | 结合关联流和协议数据的深度告警调查 | ## 资源 | URI | 描述 | |-----|-------------| | `suricata://event-types` | 所有 EVE 事件类型及字段描述 | | `suricata://stats/current` | 最新引擎性能统计 | | `suricata://rules/summary` | 规则集摘要(如已配置) | ## 提示词 | 提示词 | 描述 | |--------|-------------| | `investigate-alert` | 引导式告警调查工作流 | | `hunt-for-threats` | 主动威胁狩猎方法论 | | `daily-alert-report` | 每日告警摘要报告模板 | ## 架构 ``` suricata-mcp/ src/ index.ts # MCP server entry, tool registration config.ts # Environment config types.ts # EVE JSON type definitions parser/ eve.ts # Streaming EVE JSON parser (supports .gz) rules.ts # Suricata rule file parser query/ engine.ts # Query engine coordinating file reads filters.ts # CIDR, wildcard, time range, IP matching aggregation.ts # Statistical aggregation, top-N, numeric stats timeline.ts # Time-bucketed event aggregation tools/ alerts.ts # Alert analysis tools flows.ts # Flow analysis tools dns.ts # DNS query tools http.ts # HTTP transaction tools tls.ts # TLS/JA3/JA4 tools files.ts # File extraction tools ssh.ts # SSH protocol tools anomalies.ts # Anomaly detection tools rules.ts # Rule management tools stats.ts # Engine stats tools investigation.ts # Cross-type investigation analytics/ beaconing.ts # C2 beacon detection ja3.ts # Known JA3 fingerprint database socket/ client.ts # Unix socket for live commands resources.ts # MCP resources prompts.ts # MCP prompts tests/ parser.test.ts # Parser unit tests query.test.ts # Filter and aggregation tests tools.test.ts # Tool handler integration tests test-data/ eve.json # Sample EVE JSON data sample.rules # Sample Suricata rules scripts/ generate-eve.ts # Mock EVE data generator ``` ## 模拟数据生成器 生成逼真的 EVE JSON 测试数据: ``` npm run generate-eve # Default: 200 alerts, 500 flows npx tsx scripts/generate-eve.ts output.json 500 1000 # Custom: 500 alerts, 1000 flows ``` 生成的数据包含逼真的告警签名(ET 规则)、协议多样性(HTTP, TLS, DNS, SSH)、C2 信标模式和已知的可疑 JA3 指纹。 ## 测试 ``` npm test # Run all tests npm run test:watch # Watch mode ``` 测试套件覆盖: - 包含样本事件的 EVE JSON 解析器(事件类型过滤、时间范围、最大限制) - Suricata 规则文件解析器(alert/drop/pass 规则、禁用规则、references、content) - 查询过滤器功能(CIDR 匹配、部分匹配、通配符、时间范围) - 聚合和时间线功能 - 所有包含逼真测试数据的工具处理器 ## 支持的 EVE 事件类型 | 类型 | 描述 | |------|-------------| | `alert` | IDS/IPS 告警,包含签名、严重性、动作 | | `flow` | 网络流记录,包含字节/数据包计数 | | `dns` | DNS 查询和响应 | | `http` | HTTP 事务 | | `tls` | TLS 握手,包含 JA3/JA4 指纹 | | `fileinfo` | 文件提取元数据,包含哈希 | | `smtp` | SMTP 事务 | | `ssh` | SSH 协议信息 | | `anomaly` | 协议异常 | | `stats` | 引擎性能统计 | | `drop` | 丢弃的数据包 (IPS 模式) | ## 许可证 MIT
标签:AMSI绕过, C2检测, DLL 劫持, DNS分析, EVE JSON, GNU通用公共许可证, HTTP分析, IPS, IP 地址批量处理, JA3, JA4, LLM工具, MCP, Metaprompt, MITM代理, Model Context Protocol, Node.js, Radare2, SecOps, Suricata, TLS指纹, TypeScript, 云安全架构, 信标检测, 入侵检测系统, 协议分析, 告警调查, 多架构支持, 大语言模型, 威胁检测, 威胁检测与响应, 安全插件, 安全数据湖, 安全运营, 异常检测, 扫描框架, 文件提取, 权限提升, 现代安全运营, 网络安全, 自动化攻击, 规则管理, 隐私保护