AI4IA-MCP-服务器
基于角色学习的AI辅助网络安全事件分析中Wazuh SIEM与OpenSearch的模型上下文协议服务器
🔍 概述
AI4IA-MCP是一个智能模型上下文协议(MCP)服务器,它作为人工智能助手与Wazuh安全信息和事件管理(SIEM)基础设施之间的桥梁。通过为安全运营团队设计的一整套工具,它提供了对安全警报、漏洞分析、CVE数据库和网络文档的自然语言访问方式。
这台服务器使Claude等大型语言模型(LLM)助手能够通过对话界面执行复杂的安全操作任务,包括警报关联、统计分析、漏洞评估和事件调查。
🏗️ 建筑学
┌─────────────────┐
│ AI Assistant │
│ (Claude) │
└────────┬────────┘
│ MCP Protocol
│
┌────────▼────────┐
│ Wazuh AI4IA │
│ MCP Server │
│ (FastMCP) │
└────────┬────────┘
│
├──────────────┐
│ │
┌────────▼────────┐ ┌──▼─────────┐
│ OpenSearch │ │ Local │
│ Cluster │ │ Files │
│ (Wazuh Data) │ │ (CVE/PDF) │
└─────────────────┘ └────────────┘✨ 主要特点
🎯 核心能力
- 实时警报管理使用灵活的时间范围查询和过滤Wazuh安全警报
- 智能警报关联基于时间邻近性、代理、MITRE技术以及规则模式,自动发现相关安全事件
- 漏洞分析深入探讨带有CVSS评分、分类及缓解建议的CVE漏洞
- 统计见解生成关于警报模式、严重程度分布和系统性能的全面报告
- 代理监控跟踪您基础设施中所有Wazuh代理的状态和健康状况
- CVE数据库在广泛的CVE数据集中,按严重程度、年份和漏洞类型进行搜索和筛选
- 网络文档解析并分析网络图和PDF文档
🛡️ 安全运营用例
- 事件响应快速关联警报以识别攻击活动
- 威胁狩猎在历史安全数据中搜索特定模式
- 漏洞管理根据检测到的漏洞优先进行补丁修复
- 合规报告生成用于审计和合规要求的统计数据
- 性能监控跟踪Wazuh系统的健康状态和事件处理指标
🚀 安装
1. 安装依赖项
pip install -r requirements.txt3. 配置环境变量
创建一个 .env 项目根目录下的文件:
OPENSEARCH_HOST=localhost:9200
OPENSEARCH_USER=admin
OPENSEARCH_PASSWORD=your_secure_password_here4. 准备数据文件
将以下文件放置在项目目录中:
cve_data.csv- CVE漏洞数据库GOAD.pdf- 网络文档(可选)NetDiagram.png- 网络图(可选)
🔧 配置
OpenSearch 连接
服务器使用以下索引来连接到OpenSearch:
wazuh-alerts-*- 安全警报wazuh-monitoring-*- 代理监控数据wazuh-statistics-*- 系统性能指标wazuh-states-vulnerabilities-*- 漏洞状态
CVE 数据库格式
这个 cve_data.csv 应包含以下列:
vulnerability.id- CVE标识符(例如,CVE-2024-12345)vulnerability.severity- 严重程度等级(低、中、高、严重)vulnerability.description- 详细的漏洞描述
📖 可用工具
1. get_alerts
使用灵活过滤功能检索Wazuh安全警报。
# Example usage
get_alerts(
time_range="2h", # Last 2 hours
rule_level=10, # Critical alerts only
agent_name="server-01",
size=100
)参数:
time_range时间窗口(例如,“2h”、“90m”、“30m”)- 最长6小时rule_level按严重程度级别(1-15)筛选agent_name按特定代理过滤size要返回的结果数量(默认:100)
2. correlate_alerts
查找可能表明有协同攻击的相关警报。
# Example usage
correlate_alerts(
alert_id="ABC123...",
time_window="1h",
max_alerts=50
)特点:
- 时间相关性
- 相同的代理检测
- 相关的规则组
- 常见的MITRE ATT&CK技术
- 相关系数评分
3. get_alert_statistics
生成关于警报模式的全面统计报告。
# Example usage
get_alert_statistics(
time_range="6h",
agent_name="web-server",
group="web"
)提供:
- 随时间变化的警报频率
- 严重程度分布
- 顶级警报类型
- 最活跃的代理
- MITRE技术频率
- 规则组分析
4. analyze_vulnerability
对检测到的漏洞进行深入分析,并提供CVE(通用漏洞和暴露)详细信息。
# Example usage
analyze_vulnerability(
vulnerability_id="CVE-2024-21417",
start_time="now-12h",
limit=50
)包括:
- CVE(通用漏洞和暴露)的详细信息和描述
- CVSS评分和严重程度
- 检测时间戳
- 受影响的代理(或代理商)
- 类别分类
- 缓解建议
5. filter_network_cves
使用多个过滤条件搜索CVE数据库。
# Example usage
filter_network_cves(
severity="critical",
year="2024",
type="SQL Injection",
limit=100
)6. get_agent_status
监控所有Wazuh代理的健康状况和状态。
# Example usage
get_agent_status()返回值:
- 代理名称和ID
- IP地址
- 连接状态
- 最后的保持连接时间戳
- Wazuh 版本
7. get_statistics
检索Wazuh系统的性能指标。
# Example usage
get_statistics(timeframe="3h")指标:
- 接收到/处理/丢弃的事件
- 每秒事件数(Events per Second,简称EDPS)
- 队列使用百分比
- 处理效率
- 系统健康指标
8. read_network_documentation
从PDF网络文档中提取文本。
# Example usage
read_network_documentation(pdf_filename="GOAD.pdf")9. process_network_diagram
分析网络拓扑图。
# Example usage
process_network_diagram(
png_filename="NetDiagram.png",
analysis_type="detailed"
)⚠️ 重要限制
时间范围限制
不同的工具在最佳性能表现上有着特定的时间范围限制:
get_alerts最长6小时correlate_alerts最长6小时get_alert_statistics最多6小时get_statistics最多6小时analyze_vulnerability最长12小时
这些限制避免了速率限制,并确保了查询的响应性能。
💡 使用示例
示例1:调查一起安全事件
User: "Show me all critical alerts from the last 2 hours"
AI: [Uses get_alerts with rule_level=12+, time_range="2h"]
User: "What vulnerabilities were detected on affected systems?"
AI: [Uses analyze_vulnerability with affected agents]示例2:漏洞管理
User: "Find all critical CVEs from 2024"
AI: [Uses filter_network_cves with severity="critical", year="2024"]
User: "Which systems are affected by CVE-2024-12345?"
AI: [Uses analyze_vulnerability with vulnerability_id]
示例3:性能监控
User: "How is the Wazuh system performing?"
AI: [Uses get_statistics for system metrics]
User: "Show alert trends over the last 6 hours"
AI: [Uses get_alert_statistics for trend analysis]
常见错误
“未找到警报”检查时间范围和过滤条件\ “未找到CVE数据库”确保 cve_data.csv 在项目目录中\ “时间范围超出限制”将时间范围减少到指定的最大值\ “连接被拒绝”验证OpenSearch是否正在运行且可访问
🚀 快速入门Claude桌面版
配置
- 找到您的配置文件:
- macOS(中文可译为“苹果电脑操作系统”或直接保留为“macOS”,在中文语境中通常直接使用“macOS”这一名称): ~/Library/Application Support/Claude/claude_desktop_config.json - Windows: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 添加服务器配置:
{
"mcpServers": {
"AI4IA": {
"command": "python",
"args": ["/absolute/path/to/AI4IA-MCP/mcp_server.py"]
}
}
}📄 许可证
这个项目采用MIT许可证授权——详见 许可证 文件中有详细信息。
致谢
- Wazuh(注:这是一个专有名词,通常不直接翻译,保持原样使用,若需解释性翻译,可译为“瓦祖(Wazuh系统/平台)”,但具体翻译可能需根据上下文调整) - 开源安全平台
- FastMCP - 模型上下文协议框架
- OpenSearch(开放搜索) - 搜索与分析引擎
- Anthropic(公司名,可译为“安萨提克”或直接保留原名,根据上下文决定是否需要翻译) - 克劳德人工智能助手
