项目简介
'crowdsec-local-mcp' 是一个实现 Model Context Protocol (MCP) 的后端服务,旨在简化 CrowdSec WAF 规则和安全场景的创建、验证和测试过程。它将 CrowdSec 的复杂配置和操作封装为 LLM 客户端可以理解和调用的工具和资源,使 AI 能够以自然语言指令来管理网络安全策略。
主要功能点
- WAF 规则管理: 支持根据用户输入或 CVE 引用生成 CrowdSec WAF 规则,对规则进行语法验证和风格检查 (Linting),并提供部署指南。
- WAF 规则测试: 提供一个基于 Docker 的测试环境,可以启动 CrowdSec、Nginx 和流量模拟器,以测试 WAF 规则的误报/漏报情况,并可集成 Nuclei 漏洞扫描工具进行高级测试。
- 安全场景管理: 支持生成 CrowdSec 攻击检测场景,进行语法验证和风格检查,并提供部署指南。
- 安全场景测试: 提供一个基于 Docker 的测试环境,用于测试 CrowdSec 场景的行为,包括事件回放和告警分析。
- CVE 漏洞利用模板查找: 能够从官方 Nuclei 模板库中快速查找指定 CVE 的现有漏洞利用模板,辅助规则生成。
- Prompt 模板: 托管用于指导 LLM 生成 WAF 规则和安全场景的各种 Prompt 模板,支持可定制的 LLM 交互模式。
安装步骤
- 安装 'uv' (或 'uvx'): 这是 Python 包管理器,用于安装和运行 MCP 服务器。请访问 'https://docs.astral.sh/uv/' 获取安装说明 (需要 0.4 或更新版本)。
- 安装 Docker: 用于运行 WAF 和场景测试环境。请确保 Docker Engine 和 Docker Compose 插件已安装并正常运行。
- 通过 'uvx' 初始化客户端配置: 运行以下命令,将 CrowdSec MCP 服务器集成到您偏好的 MCP 客户端(如 Claude Desktop, Claude Code, ChatGPT Desktop, Visual Studio Code)中。
例如,为 Claude Code 配置:
您可以替换 'claude-code' 为 'claude-desktop', 'chatgpt', 'vscode' 或 'stdio'。运行 'uvx --from crowdsec-local-mcp init --help' 查看所有选项。uvx --from crowdsec-local-mcp init claude-code - 手动配置 (可选,针对 Stdio 客户端): 如果您的 MCP 客户端通过标准输入/输出 (stdio) 连接,可以使用 '--dry-run stdio' 命令查看 JSON 配置片段,然后手动添加到客户端配置中。
服务器配置 (MCP 客户端使用)
MCP 客户端需要配置以下 JSON 格式信息来启动和连接 CrowdSec 本地 MCP 服务器。这些信息通常在客户端的设置或扩展配置中完成:
{ "mcpServers": { // 或 "servers" (对于 VS Code 等客户端) "crowdsec-local-mcp": { "command": "uvx", // 启动服务器的命令,如果 uvx 不可用,可能是 Python 解释器路径 "args": [ "--from", "crowdsec-local-mcp", "crowdsec-mcp" // 启动 CrowdSec MCP 服务器模块 ], "metadata": { "label": "CrowdSecMCP", // 在客户端 UI 中显示的名称 "description": "CrowdSec local MCP server" // 服务器描述 } // "cwd": "/path/to/server" // 可选:服务器的工作目录,如果需要指定 } } }
说明:
- 'command': 指定用于启动 MCP 服务器的可执行文件。通常是 'uvx'。
- 'args': 传递给 'command' 的参数列表。'--from crowdsec-local-mcp crowdsec-mcp' 指示 'uvx' 运行 'crowdsec-local-mcp' 项目中的 'crowdsec-mcp' 模块。
- 'metadata': 包含 'label' (客户端界面显示名称) 和 'description' (服务器功能描述)。
- 'cwd': (可选)服务器进程的当前工作目录。 在安装步骤3中运行的 'init' 命令会自动为您处理这些配置。
基本使用方法
一旦 MCP 服务器配置并连接到您的 LLM 客户端,您就可以通过自然语言与服务器交互。
- 生成 WAF 规则: 通过调用服务器提供的 'generate_waf_rule' 工具,让 LLM 根据您的需求(例如,针对某个 CVE 或描述特定攻击模式)来生成 CrowdSec WAF 规则。
- 验证和优化: 使用 'validate_waf_rule' 和 'lint_waf_rule' 工具检查生成规则的语法正确性和潜在改进点。
- 测试 WAF 规则: 调用 'manage_waf_stack' 工具启动基于 Docker 的 WAF 测试环境,然后使用 'run_waf_tests' 工具配合 Nuclei 模板对规则进行实际测试,观察是否正确拦截恶意请求。测试完成后,使用 'manage_waf_stack' 停止测试环境。
- 生成安全场景: 通过调用服务器提供的 'get_scenario_prompt' 工具生成 CrowdSec 安全场景。
- 测试安全场景: 调用 'manage_scenario_stack' 工具启动场景测试环境,然后使用 'test_scenario' 工具模拟日志事件来测试场景行为,查看是否触发告警。完成后,使用 'manage_scenario_stack' 停止环境。
- 获取部署指南: 使用 'deploy_waf_rule' 或 'deploy_scenario' 工具获取详细的部署说明。
信息
分类
开发者工具