使用说明
QRadar MCP 服务器
一个生产就绪的模型上下文协议(MCP)服务器,作为IBM QRadar的智能安全事件分析助手。此服务器提供数据查询功能和安全事件的高级自动化根本原因分析。
概述
QRadar MCP服务器弥合了QRadar SIEM和人工智能安全分析之间的差距。它提供:
- 数据查询模块:与QRadar REST API直接集成,用于检索安全事件、日志和执行自定义查询
- 智能分析模块:自动根本原因分析、指标提取、时间线重建和可操作的调查建议
特性
数据查询工具
search_offenses:按时间范围、严重程度、状态和类型搜索安全违规行为get_offense_details:检索特定犯罪的全面细节get_offense_logs:获取与犯罪相关的所有日志条目execute_aql_query:执行自定义AQL(Ariel查询语言)查询,以获得最大的灵活性
智能分析工具
-
analyze_offense:执行全面的根本原因分析,包括:- 自动指示符提取(IP、域、用户名、哈希)
- 攻击时间线重建
- 攻击模式识别
- 结构化调查报告生成
-
recommend_investigation_actions:生成优先、可操作的建议,例如:- EDR端点查询
- 网络隔离步骤
- 用户帐户调查
- 威胁情报检查
- IAM权限审查
安装
先决条件
- Python 3.11或更高版本
- 使用API凭据访问QRadar实例
- QRadar用于身份验证的用户名和密码
设置
-
克隆或下载此存储库
-
安装依赖项:
pip install -r requirements.txt这将安装所有必需的依赖,包括
python-dotenv(用于加载.env文件)。 -
配置环境变量:
重要:必须创建
.env文件来配置环境变量!a. 复制示例配置文件:
Windows(PowerShell):
Copy-Item env.example .envWindows(CMD):
copy env.example .envLinux/Mac:
cp env.example .envb. 编辑
.env文件,填入你的 QRadar 配置信息:视窗: 使用记事本或其他文本编辑器打开
.env文件notepad .envLinux/Mac: 使用你喜欢的文本编辑器
nano .env # 或 vim .envc. 在
.env文件中设置以下必需的环境变量:QRADAR_HOST=https://your-qradar-instance.com QRADAR_USERNAME=your-username QRADAR_PASSWORD=your-passwordd. 可选的环境变量(如不设置将使用默认值):
QRADAR_TIMEOUT=30 # 请求超时时间(秒),默认:30 QRADAR_VERIFY_SSL=true # SSL 证书验证,默认:true注意:
.env文件包含敏感信息,请确保不要将其提交到版本控制系统.env文件已在.gitignore中被忽略- 不要使用
export命令设置环境变量,请使用.env文件
-
验证安装:
确保
.env文件已正确配置后,可以运行服务器进行测试:python main.py如果配置正确,服务器将启动并显示初始化成功的日志信息。
运行服务器
发展模式
在开发模式下运行MCP服务器:
mcp dev main.py
或者直接使用Python:
python main.py
服务器使用stdio传输与MCP客户端通信。
生产部署
对于生产部署,您可能需要:
- 使用流程管理器,如
systemd或supervisord - 配置正确的日志记录
- 设置监测和健康检查
- 确保
.env文件通过适当的文件权限(例如。,chmod 600 .env)
使用示例
示例1:搜索最近的严重犯罪
# Using the search_offenses tool
{
"tool": "search_offenses",
"arguments": {
"start_time": "2024-01-01T00:00:00Z",
"end_time": "2024-01-31T23:59:59Z",
"severity": 8,
"status": "OPEN",
"limit": 50
}
}
示例2:获取犯罪细节
{
"tool": "get_offense_details",
"arguments": {
"offense_id": 12345
}
}
示例3:分析犯罪行为
{
"tool": "analyze_offense",
"arguments": {
"offense_id": 12345
}
}
响应包括:
- 犯罪汇总和统计
- 提取的安全指标(IP、域、用户名)
- 重建攻击时间线
- 已识别的攻击模式
- 主要调查结果和建议
示例4:获取调查建议
{
"tool": "recommend_investigation_actions",
"arguments": {
"offense_id": 12345
}
}
或具有特定指标:
{
"tool": "recommend_investigation_actions",
"arguments": {
"indicators": [
"192.168.1.100",
"malicious-domain.com",
"suspicious_user"
]
}
}
示例5:执行自定义AQL查询
{
"tool": "execute_aql_query",
"arguments": {
"query": "SELECT sourceip, destinationip, COUNT(*) as event_count FROM events WHERE category=5001 GROUP BY sourceip, destinationip ORDER BY event_count DESC LAST 24 HOURS",
"timeout": 120
}
}
工具参考
搜索犯罪
使用各种过滤器搜索QRadar违规行为。
参数:
start_time(可选):ISO 8601日期时间字符串end_time(可选):ISO 8601日期时间字符串severity(可选):整数1-10status(可选):“打开”、“关闭”或“隐藏”offense_type(可选):整数犯罪类型IDlimit(可选):最大结果(默认值:50,最大值:1000)offset(可选):分页偏移量(默认值:0)
退货:犯罪对象列表
获取犯罪详情
获取有关特定犯罪的详细信息。
参数:
offense_id(必填):整数犯罪ID
退货:带有完整细节的攻击对象
get_offense_logs
获取犯罪的所有日志条目。
参数:
offense_id(必填):整数犯罪IDlimit(可选):最大日志数(默认值:1000,最大值:10000)offset(可选):分页偏移量(默认值:0)
退货:日志条目对象列表
execute_aql_query
执行自定义AQL查询。
参数:
query(必填):AQL查询字符串timeout(可选):超时秒数(默认值:60,最大值:300)
退货:查询结果为字典列表
分析犯罪
进行全面的根本原因分析。
参数:
offense_id(必填):整数犯罪ID
退货:综合分析报告,包括:
- 犯罪细节
- 总结和统计
- 提取指标
- 攻击时间线
- 已识别的模式
推荐_调查_行动
生成调查建议。
参数:
offense_id(可选):整数犯罪IDindicators(可选):指示符字符串列表(IP、用户名、域)
退货:优先建议清单,包括:
- 优先级
- 操作类型
- 标题和说明
- 相关指标
- 依据
建筑
代码库分为三个主要模块:
main.py:MCP服务器入口点、工具注册和请求处理qradar_client.py:异步QRadar API客户端,具有全面的错误处理功能analysis_engine.py:用于根本原因分析和建议的智能分析逻辑
关键设计原则
- 完全异步:所有I/O操作都使用
async/await为了获得最佳性能 - 类型安全:使用Pydantic模型的全面类型提示
- 错误处理:针对网络问题、API限制和数据验证的强大错误处理
- 模块化:明确区分数据访问和分析逻辑之间的关注点
- 可扩展性:易于添加新的分析模式和推荐类型
错误处理
服务器处理各种错误情况:
- 身份验证失败:清除无效用户名/密码的错误消息
- 网络错误:超时处理和连接错误恢复
- API费率限制:超出速率限制的正确错误报告
- 无效数据:API响应的验证和清除
- 缺失数据:巧妙地处理空结果
安全注意事项
- 凭证:永远不要硬编码QRadar凭据。始终使用
.env配置文件。 .env文件安全性:- 这
.env文件包含敏感凭据 - 设置适当的文件权限:
chmod 600 .env(Linux/Mac) - 永不承诺
.env到版本控制(已在.gitignore) - 使用
env.example作为文档的模板
- 这
- SSL验证:默认情况下,会验证SSL证书。仅在开发中禁用。
- 密码安全性:密码应安全存储并定期轮换。
- 网络安全:确保服务器在安全的网络环境中运行。
故障排除
连接问题
如果遇到连接错误:
- 验证
QRADAR_HOST正确且可访问 - 检查网络连接和防火墙规则
- 如果使用HTTPS,请验证SSL证书
- 测试用
curl或httpx直接
身份验证错误
如果身份验证失败:
- 验证
QRADAR_USERNAME和QRADAR_PASSWORD是正确的 - 检查帐户是否已锁定或过期
- 验证QRadar中的用户权限
- 使用curl或httpx通过直接API调用测试凭据
性能问题
对于大型数据集:
- 适当使用分页(限制/偏移)
- 设置合理的超时
- 考虑使用AQL查询进行复杂的过滤
- 监控QRadar API速率限制
贡献
这是一个生产就绪的实现。要扩展功能,请执行以下操作:
- 在中添加新的分析模式
analysis_engine.py - 在中扩展QRadar API方法
qradar_client.py - 在中注册新工具
main.py
许可证
本项目按原样提供,用于安全分析。
支持
关于以下问题:
- QRadar API:请参阅IBM QRadar API文档
- MCP协议:请参阅模型上下文协议规范
- 此服务器:查看代码文档和错误消息
版本历史
- v1.0.0:具有完整功能集的初始生产版本