网络流量分析MCP服务器

WireMCP Secure是一个企业级MCP服务器,通过Wireshark的tshark工具为大型语言模型提供实时网络流量分析能力,具有全面的安全控制和改进的功能特性。

  • by anishphilip012git
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 anishphilip012git/WireMCP-Secure

使用说明

WireMCP安全🔐

用于网络流量分析的生产就绪、安全强化的MCP服务器

WireMCP Secure是一个企业级模型上下文协议(MCP)服务器,通过Wireshark的tshark实用程序为大型语言模型提供实时网络流量分析功能。此版本解决了原始WireMCP中发现的所有关键安全漏洞,并添加了全面的安全控制。

🎯 v2.0.0的新增功能

✅ 安全改进

  • 无命令注入:使用完成重写 spawn() 而不是 exec() 正确处理论点
  • 路径横向保护:严格的白名单和文件路径验证
  • 输入验证:对所有输入使用Zod模式进行全面验证
  • 速率限制:可配置每个客户端的速率限制,以防止滥用
  • 资源管理:并发捕获限制和大小限制
  • 审计日志:完成所有业务的审计跟踪
  • 数据的清理:自动从输出中删除敏感数据
  • 安全临时文件:安全目录中的加密随机文件名
  • 威胁情报:缓存、验证的威胁数据获取
  • 特权意识:关于特权要求的明确文件

🚀 新功能

  • 状态监控: get_status 实时服务器监控工具
  • 增强配置:基于环境的配置和验证
  • 更好的错误处理:不会泄露系统信息的山宁泰错误消息
  • LLM提示:常见分析工作流的预构建提示
  • 优雅关闭:适当的清理和审计日志刷新
  • 自动清理:自动清理旧的临时文件

📋 特性

可用工具

  1. capture_packets -捕获实时流量并分析数据包数据
  2. get_summary_stats -获取协议层次结构统计信息
  3. get_conversations -分析TCP/UDP会话
  4. check_threats -根据URLhaus威胁情报检查捕获的IP
  5. check_ip_threats -检查特定IP地址是否存在威胁
  6. analyze_pcap -分析现有PCAP文件
  7. extract_credentials -从PCAP提取凭据(受限,默认禁用)
  8. get_status -获取服务器状态和速率限制信息

安全特性

  • ✅ 没有shell命令注入漏洞
  • ✅ 使用目录白名单进行路径遍历保护
  • ✅ 全面的输入验证
  • ✅ 速率限制(默认情况下为5个请求/分钟)
  • ✅ 并发捕获限制(默认为3)
  • ✅ 输出大小限制(默认为1MB)
  • ✅ 捕获持续时间限制(默认最大60秒)
  • ✅ 所有操作的审计日志记录
  • ✅ 自动敏感数据清理
  • ✅ 安全的临时文件处理
  • ✅ 外部API的TLS证书验证
  • ✅ 超时保护
  • ✅ 内存耗尽保护

🔧 安装

先决条件

  1. 配线架/配线架 -必须安装并可访问

    # macOS
    brew install wireshark
    
    # Ubuntu/Debian
    sudo apt-get install tshark
    
    # Windows
    # Download from https://www.wireshark.org/download.html
    
  2. Node.js -版本16或更高

    node --version  # Should be >= 16.0.0
    
  3. 提升权限 -数据包捕获所需

    # Option 1: Run as root (not recommended)
    sudo node index.js
    
    # Option 2: Grant capabilities (Linux only, recommended)
    sudo setcap cap_net_raw,cap_net_admin=eip $(which node)
    sudo setcap cap_net_raw,cap_net_admin=eip $(which tshark)
    

设置

  1. 克隆或下载存储库

    cd /path/to/WireMCP-Secure
    
  2. 安装依赖项

    npm install
    
  3. 配置环境 (可选)

    cp env.example.txt .env
    # Edit .env with your settings
    
  4. 创建所需目录

    mkdir -p ~/wiremcp/pcaps
    mkdir -p /tmp/wiremcp
    chmod 700 /tmp/wiremcp
    
  5. 试验装置

    node index.js
    # Should start without errors
    

⚙️ 配置

配置是通过环境变量完成的。创建一个 .env 文件(复制自 env.example.txt):

安全设置

# Maximum capture duration (seconds)
MAX_CAPTURE_DURATION=60

# Maximum file size for captures (bytes)
MAX_CAPTURE_SIZE=104857600  # 100MB

# Maximum output size (bytes)
MAX_OUTPUT_SIZE=1048576  # 1MB

速率限制

# Enable rate limiting
RATE_LIMIT_ENABLED=true

# Max requests per window
RATE_LIMIT_MAX=5

# Time window in milliseconds
RATE_LIMIT_WINDOW_MS=60000  # 1 minute

# Max concurrent captures
MAX_CONCURRENT_CAPTURES=3

网络设置

# Allowed network interfaces (comma-separated, empty = all)
ALLOWED_INTERFACES=en0,eth0

# Default interface
DEFAULT_INTERFACE=en0

文件访问

# Allowed directories for PCAP files (comma-separated)
ALLOWED_PCAP_DIRS=/tmp/wiremcp,/home/user/wiremcp/pcaps

# Temporary directory
TEMP_DIR=/tmp/wiremcp

审计日志

# Enable audit logging
AUDIT_ENABLED=true

# Audit log file path
AUDIT_LOG_FILE=/tmp/wiremcp-audit.log

受限功能

# Enable credential extraction (USE WITH CAUTION)
ENABLE_CREDENTIAL_EXTRACTION=false

# Enable data sanitization
SANITIZE_DATA=true

🚀 用法

使用克劳德桌面(MCP客户端)

添加到MCP配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "wiremcp-secure": {
      "command": "node",
      "args": [
        "/absolute/path/to/WireMCP-Secure/index.js"
      ],
      "env": {
        "NODE_ENV": "production",
        "RATE_LIMIT_ENABLED": "true",
        "AUDIT_ENABLED": "true"
      }
    }
  }
}

带光标

编辑 mcp.json 在光标->设置->MCP中:

{
  "mcpServers": {
    "wiremcp-secure": {
      "command": "node",
      "args": [
        "/absolute/path/to/WireMCP-Secure/index.js"
      ]
    }
  }
}

独立测试

# Start the server
node index.js

# The server communicates via stdio, so you'll need an MCP client
# For testing, use the MCP Inspector or a compatible client

📖 工具示例

捕获和分析流量

// Using capture_packets tool
{
  "interface": "en0",
  "duration": 10
}

检查IP是否存在威胁

// Using check_ip_threats tool
{
  "ip": "192.168.1.100"
}

分析PCAP文件

// Using analyze_pcap tool
{
  "pcapPath": "/tmp/wiremcp/capture.pcap",
  "includeUrls": true,
  "includeProtocols": true
}

检查服务器状态

// Using get_status tool
{}  // No parameters needed

🔐 安全最佳实践

部署

  1. 以最低权限运行

    # Linux: Use capabilities instead of root
    sudo setcap cap_net_raw,cap_net_admin=eip $(which node)
    
  2. 限制文件访问

    • 集 ALLOWED_PCAP_DIRS 仅限特定目录
    • 在临时目录上使用安全权限(700)
  3. 启用审核日志记录

    • 在生产中始终启用: AUDIT_ENABLED=true
    • 定期监控审计日志
    • 定期轮换日志
  4. 配置速率限制

    • 根据您的用例进行调整
    • 面向公众的部署限制较低
    • 监控违反速率限制的行为
  5. 禁用危险功能

    • 保持 ENABLE_CREDENTIAL_EXTRACTION=false 除非特别需要
    • 记录并记录对安全设置的任何更改

网络隔离

对于生产部署,请考虑:

┌─────────────────┐
│   MCP Client    │
│  (Trusted LLM)  │
└────────┬────────┘
         │ stdio
┌────────▼────────┐
│  WireMCP Secure │
│  (Unprivileged) │
└────────┬────────┘
         │ IPC/Socket
┌────────▼────────┐
│ Capture Service │
│  (Privileged)   │
│  Isolated VLAN  │
└─────────────────┘

合规

  • GDPR 数据保护:配置 SANITIZE_DATA=true 删除个人数据
  • PCI-DSS:使用审核日志记录并限制凭据提取
  • 健康保险流通与责任法案:确保PHI未被捕获或已正确消毒
  • SOC 2:启用所有审计功能并实施访问控制

📊 监控

审核日志格式

审计日志以JSON行的形式写入配置的日志文件:

{
  "timestamp": "2025-12-13T10:30:45.123Z",
  "action": "TOOL_EXECUTION",
  "resource": "capture_packets",
  "userId": "client-abc123",
  "severity": "info",
  "details": {
    "arguments": {"interface": "en0", "duration": 5},
    "durationMs": 5234,
    "success": true
  },
  "pid": 12345
}

重要事件

  • TOOL_EXECUTION -工具执行成功
  • TOOL_ERROR -工具执行错误
  • SECURITY_EVENT -安全相关事件(检测到威胁等)
  • RATE_LIMIT_VIOLATION -超出费率限制
  • CREDENTIAL_EXTRACTION -已执行凭据提取(严重性高)
  • SYSTEM -系统事件(启动、关闭)

监控命令

# Watch audit log in real-time
tail -f /tmp/wiremcp-audit.log | jq .

# Count operations by type
cat /tmp/wiremcp-audit.log | jq -r .action | sort | uniq -c

# Find all security events
cat /tmp/wiremcp-audit.log | jq 'select(.action=="SECURITY_EVENT")'

# Find rate limit violations
cat /tmp/wiremcp-audit.log | jq 'select(.action=="RATE_LIMIT_VIOLATION")'

🐛 故障排除

t找不到标记

# Check if tshark is installed
which tshark

# If not installed, install Wireshark
# macOS
brew install wireshark

# Linux
sudo apt-get install tshark

权限不足

# Check permissions
ls -l $(which tshark)

# Grant capabilities (Linux)
sudo setcap cap_net_raw,cap_net_admin=eip $(which tshark)

# Or run as root (not recommended for production)
sudo node index.js

速率限制错误

# Check current status
# Use the get_status tool to see rate limit status

# Adjust limits in .env
RATE_LIMIT_MAX=10  # Increase limit

路径访问被拒绝

# Ensure PCAP file is in allowed directory
# Check ALLOWED_PCAP_DIRS setting

# Create allowed directory
mkdir -p ~/wiremcp/pcaps

内存问题

# Reduce output size limit
MAX_OUTPUT_SIZE=524288  # 512KB

# Reduce capture duration
MAX_CAPTURE_DURATION=30  # 30 seconds

🧪 测试

运行安全检查

# Check for vulnerable dependencies
npm audit

# Check for outdated packages
npm outdated

# Run linter with security rules
npx eslint . --ext .js

手动测试

# Test with short capture
# In your MCP client:
# capture_packets(interface="en0", duration=5)

# Test rate limiting
# Make 6 requests quickly - 6th should fail

# Test path validation
# Try to analyze a file outside allowed directories - should fail

# Test input validation
# Try invalid interface name "en0; rm -rf /" - should fail

📚 API 参考

工具:capture_packets

捕获实时网络流量并返回数据包数据。

参数:

  • interface (字符串,可选):网络接口(默认值:en0)
  • duration (数字,可选):捕获持续时间(秒)(1-60,默认值:5)

退货: JSON格式的数据包

例子:

{
  "interface": "en0",
  "duration": 10
}

工具:check_threats

捕获流量并根据威胁情报检查IP。

参数:

  • interface (字符串,可选):网络接口
  • duration (数字,可选):捕获持续时间

退货: IP列表和威胁检查结果

工具:analyze_pcap

分析现有PCAP文件。

参数:

  • pcapPath (字符串,必填):PCAP文件的路径
  • includeUrls (布尔值,可选):提取URL(默认值:true)
  • includeProtocols (布尔值,可选):列出协议(默认值:true)

退货: IP、URL、协议和数据包数据的分析结果

工具:get_status

获取服务器状态和配置。

参数: 无

退货: 服务器状态、速率限制和安全设置

🤝 贡献

欢迎投稿!请遵循以下指南:

  1. 安全第一:从不引入安全漏洞
  2. 彻底测试:包括新功能的测试
  3. 文档:更新README和内联文档
  4. 追随风格:使用提供的ESLint配置
  5. 审计影响:考虑对新功能进行审核日志记录

报告安全问题

不要 公开安全漏洞问题。

电子邮件安全问题:[anishphilip012@live.in]

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件

🙏 致谢

  • 0xKoda原创WireMCP
  • Wireshark/tshark团队提供卓越的数据包分析工具
  • 模型上下文协议社区
  • 用于威胁情报数据的URLhaus

📞 支持

  • 问题: https://github.com/yourusername/wiremcp-secure/issues
  • 讨论: https://github.com/yourusername/wiremcp-secure/discussions
  • 文档: https://github.com/yourusername/wiremcp-secure/wiki

🗺️ 路线图

v2.1.0(计划中)

  • []身份验证和用户管理
  • []多个威胁情报来源
  • []用于监控的Web仪表板
  • []Docker容器化
  • []Kubernetes部署示例

v2.2.0(计划中)

  • []分布式捕获支持
  • []实时流媒体分析
  • []机器学习异常检测
  • []自定义协议分析器
  • []GraphQL API

⚖️ 安全评估

安全等级:9/10 ✅

此版本经过彻底审查,并解决了以下问题:

  • ✅ 所有OWASP十大漏洞
  • ✅ CWE前25大软件弱点
  • ✅ 输入验证和净化
  • ✅ 身份验证和授权(可配置性)
  • ✅ 安全通信
  • ✅ 错误处理和日志
  • ✅ 数据保护
  • ✅ 速率限制和DoS保护

其余注意事项:

  • 用户身份验证(如果是多用户)
  • 网络级访问控制
  • 硬件安全模块集成(如果需要)

在建造时考虑到了安全性。充满信心地部署。 🔒

灵感来自/大声呼喊: