NGFW One 支持 Model Context Protocol(MCP),双向打通 AI 与防火墙:
- MCP Server:把防火墙能力以「工具」形式提供给 Claude Desktop 等 AI 客户端或你自建的 Agent,让 AI 可以查询告警、检索日志、封停 IP。
- MCP Client:防火墙内置的 AI 助手可以调用外部 MCP 服务,例如威胁情报、工单、IM 通知。
MCP 适用于企业版与数据中心版,WAF 免费版不提供。功能概览见开放接口。
MCP Server 接入方式
| 方式 | 地址 / 命令 | 适用场景 |
|---|---|---|
| Streamable HTTP(远程) | https://<设备IP>:9443/mcp | 支持远程 MCP 的客户端、服务器上运行的 Agent |
| stdio(本地) | ngfw-mcp --host <设备IP> --api-key <KEY> | Claude Desktop 等以本地进程方式加载 MCP 的客户端 |
两种方式都使用 API Key 认证,权限由该 Key 的角色决定。API Key 在「系统 → 开放接口 → API Key」中创建,详见 REST API 参考。ngfw-mcp 命令行工具的获取方式见下载页。
在 Claude Desktop 中接入
- 为 Claude Desktop 单独创建一个 API Key,建议先使用只读角色,并设置 IP 白名单为你电脑所在地址。
- 确认本机已安装
ngfw-mcp,并能访问设备的 9443 端口。 - 打开 Claude Desktop 的配置文件
claude_desktop_config.json(macOS 位于~/Library/Application Support/Claude/,Windows 位于%APPDATA%\Claude\),在mcpServers字段中加入:
{
"mcpServers": {
"ngfw": {
"command": "ngfw-mcp",
"args": ["--host", "192.0.2.10", "--api-key", "替换为你的API Key"]
}
}
}
- 重启 Claude Desktop,在工具列表中能看到 NGFW One 提供的工具即表示接入成功。
- 试着提问:「查询最近 1 小时的高危告警,并按源 IP 汇总」。
配置文件中保存了明文 API Key,请确保该文件仅本人可读,不要同步到公共网盘或代码仓库。
使用远程 HTTP 方式
对于支持 Streamable HTTP 并可自定义请求头的 MCP 客户端,可直接连接设备端点,例如:
{
"mcpServers": {
"ngfw": {
"type": "http",
"url": "https://192.0.2.10:9443/mcp",
"headers": {
"Authorization": "Bearer 替换为你的API Key"
}
}
}
}
不同客户端的配置字段略有差异,请以客户端自身文档为准。管理端口若使用自签名证书,需要让客户端所在系统信任该证书,或在后台替换为受信任证书。
在自建 Agent 中接入
以下示例使用 MCP 官方 Python SDK 连接 Streamable HTTP 端点,列出工具并调用一次查询:
import asyncio
import os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
URL = f"https://{os.environ['NGFW_HOST']}:9443/mcp"
HEADERS = {"Authorization": f"Bearer {os.environ['NGFW_API_KEY']}"}
async def main():
async with streamablehttp_client(URL, headers=HEADERS) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print([t.name for t in tools.tools])
result = await session.call_tool(
"query_alerts", {"severity": "high", "since": "1h"}
)
for item in result.content:
print(item)
asyncio.run(main())
工具参数以 list_tools 返回的 inputSchema 为准,上例中的参数仅为示意。Agent 框架(如基于 Claude API 的自建 Agent)通常只需把上述 MCP 会话注册为工具源即可。
工具清单
| 工具 | 类型 | 说明 |
|---|---|---|
query_alerts | 只读 | 按时间、级别、来源等条件查询告警 |
search_logs | 只读 | 检索攻击、流量、DNS、审计等日志 |
list_blocked | 只读 | 查看当前封停列表及原因 |
get_device_inventory | 只读 | 获取网内设备资产清单 |
get_traffic_top | 只读 | 获取流量 Top 用户/应用/目的地址 |
generate_report | 只读 | 生成指定时间段的安全报告 |
create_policy_draft | 写(草稿) | 根据描述生成策略草稿,不会直接生效 |
block_ip | 写 | 封停 IP,可指定时长与原因 |
unblock_ip | 写 | 解除封停 |
add_domain_rule | 写 | 添加域名黑/白名单规则 |
实际可用工具以设备版本和 API Key 角色为准,客户端连接后通过 list_tools 获取。
安全模型
- 认证与授权:每次 MCP 调用都使用 API Key 认证,只能执行该 Key 角色允许的操作。只读 Key 看不到也无法调用写工具。
- 写操作人工确认:封停、解封、修改策略等写操作默认需在后台人工确认。AI 发起后,动作进入「待确认」队列,管理员在后台批准后才执行;工具返回值会说明当前状态为「待确认」。
- 按角色放开:对于确定性高、需要快速处置的场景(如 SOAR 自动化),可在 API Key 设置中为该 Key 的角色放开免确认执行。建议同时配置 IP 白名单、频率限制与较短的过期时间。
- 保护白名单仍然生效:封停白名单中的地址无法通过 MCP 封停。
- 全量审计:所有 MCP 调用(工具名、参数、调用方 Key、结果)都记录进审计日志,可在「系统 → 审计日志」中按 Key 筛选。
建议的上线顺序:只读 Key 试用 → 运维 Key + 人工确认 → 对少数明确场景放开免确认。
MCP Client:让 AI 助手调用外部工具
防火墙内置 AI 助手可接入外部 MCP 服务,在研判与处置时调用:
- 威胁情报:查询 IP、域名、文件哈希信誉,辅助判断是否封停。
- 工单系统:自动为高危事件创建工单,附带证据链。
- IM 通知:把待审批的封停、周报推送到团队群聊。
添加外部工具
- 进入「AI 助手 → 外部工具」,点击「添加」。
- 填写名称、MCP 服务地址与认证信息(如 Token),保存后系统会拉取该服务提供的工具列表。
- 逐个勾选允许 AI 助手调用的工具,并设置是否每次调用前需人工确认。
- 在 AI 助手中提问验证,例如「查询 203.0.113.7 的威胁情报」。
接入外部 MCP 服务时,AI 助手可能会把查询所需的数据(如 IP、域名、告警摘要)发送给该服务。请只接入可信服务,并评估数据外发的合规要求。外部工具的调用同样记录在审计日志中。