使用说明
WireMCP安全🔐
用于网络流量分析的生产就绪、安全强化的MCP服务器
WireMCP Secure是一个企业级模型上下文协议(MCP)服务器,通过Wireshark的tshark实用程序为大型语言模型提供实时网络流量分析功能。此版本解决了原始WireMCP中发现的所有关键安全漏洞,并添加了全面的安全控制。
🎯 v2.0.0的新增功能
✅ 安全改进
- 无命令注入:使用完成重写
spawn()而不是exec()正确处理论点 - 路径横向保护:严格的白名单和文件路径验证
- 输入验证:对所有输入使用Zod模式进行全面验证
- 速率限制:可配置每个客户端的速率限制,以防止滥用
- 资源管理:并发捕获限制和大小限制
- 审计日志:完成所有业务的审计跟踪
- 数据的清理:自动从输出中删除敏感数据
- 安全临时文件:安全目录中的加密随机文件名
- 威胁情报:缓存、验证的威胁数据获取
- 特权意识:关于特权要求的明确文件
🚀 新功能
- 状态监控:
get_status实时服务器监控工具 - 增强配置:基于环境的配置和验证
- 更好的错误处理:不会泄露系统信息的山宁泰错误消息
- LLM提示:常见分析工作流的预构建提示
- 优雅关闭:适当的清理和审计日志刷新
- 自动清理:自动清理旧的临时文件
📋 特性
可用工具
capture_packets-捕获实时流量并分析数据包数据get_summary_stats-获取协议层次结构统计信息get_conversations-分析TCP/UDP会话check_threats-根据URLhaus威胁情报检查捕获的IPcheck_ip_threats-检查特定IP地址是否存在威胁analyze_pcap-分析现有PCAP文件extract_credentials-从PCAP提取凭据(受限,默认禁用)get_status-获取服务器状态和速率限制信息
安全特性
- ✅ 没有shell命令注入漏洞
- ✅ 使用目录白名单进行路径遍历保护
- ✅ 全面的输入验证
- ✅ 速率限制(默认情况下为5个请求/分钟)
- ✅ 并发捕获限制(默认为3)
- ✅ 输出大小限制(默认为1MB)
- ✅ 捕获持续时间限制(默认最大60秒)
- ✅ 所有操作的审计日志记录
- ✅ 自动敏感数据清理
- ✅ 安全的临时文件处理
- ✅ 外部API的TLS证书验证
- ✅ 超时保护
- ✅ 内存耗尽保护
🔧 安装
先决条件
-
配线架/配线架 -必须安装并可访问
# macOS brew install wireshark # Ubuntu/Debian sudo apt-get install tshark # Windows # Download from https://www.wireshark.org/download.html -
Node.js -版本16或更高
node --version # Should be >= 16.0.0 -
提升权限 -数据包捕获所需
# 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)
设置
-
克隆或下载存储库
cd /path/to/WireMCP-Secure -
安装依赖项
npm install -
配置环境 (可选)
cp env.example.txt .env # Edit .env with your settings -
创建所需目录
mkdir -p ~/wiremcp/pcaps mkdir -p /tmp/wiremcp chmod 700 /tmp/wiremcp -
试验装置
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
🔐 安全最佳实践
部署
-
以最低权限运行
# Linux: Use capabilities instead of root sudo setcap cap_net_raw,cap_net_admin=eip $(which node) -
限制文件访问
- 集
ALLOWED_PCAP_DIRS仅限特定目录 - 在临时目录上使用安全权限(700)
- 集
-
启用审核日志记录
- 在生产中始终启用:
AUDIT_ENABLED=true - 定期监控审计日志
- 定期轮换日志
- 在生产中始终启用:
-
配置速率限制
- 根据您的用例进行调整
- 面向公众的部署限制较低
- 监控违反速率限制的行为
-
禁用危险功能
- 保持
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
获取服务器状态和配置。
参数: 无
退货: 服务器状态、速率限制和安全设置
🤝 贡献
欢迎投稿!请遵循以下指南:
- 安全第一:从不引入安全漏洞
- 彻底测试:包括新功能的测试
- 文档:更新README和内联文档
- 追随风格:使用提供的ESLint配置
- 审计影响:考虑对新功能进行审核日志记录
报告安全问题
不要 公开安全漏洞问题。
电子邮件安全问题:[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保护
其余注意事项:
- 用户身份验证(如果是多用户)
- 网络级访问控制
- 硬件安全模块集成(如果需要)
在建造时考虑到了安全性。充满信心地部署。 🔒
灵感来自/大声呼喊:
