免费POC, 零成本试错
AI知识库

AI知识库

学习大模型的前沿技术与行业落地应用


收藏

设备巡检的新范式:Agent + PAN-OS MCP

发布日期:2025-08-15 08:45:28 浏览次数: 2527
作者:nsx很可爱的

微信搜一搜,关注“nsx很可爱的”

推荐语

Agent + PAN-OS MCP 让防火墙巡检更智能,不懂开发也能轻松管理设备!

核心内容:
1. Agent 与 MCP 工具结合,简化防火墙巡检与管理流程
2. 自然语言交互实现设备查询、配置修改及报告生成
3. 项目适用场景与当前优化方向

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

写在前面:



起了个比较俗气的标题,还请大家见谅。

虽然上篇文章对 MCP 有不少批判,但忽略那些缺陷,单纯作为辅助工具用起来还是挺丝滑的。

本文算是对 MCP 工具设计及使用的总结,希望可以帮到大家。


TL;DR

  • Agent 搭配 MCP 工具能让防火墙等设备管理和巡检变得“更简单”,对不懂开发的人员也很友好

  • 但简单的同时,也带来了新的要求:

    • MCP 工具开发者需要精心设计 Tools,让 Agent 能够正确理解并准确调用工具;

    • MCP 工具使用者需要精心编写提示词,准确指导 Agent 来完成需要的任务,避免 Agent 执行走偏。

  • 当前项目可用于简单的场景,复杂的场景仍需要优化,当前可能出现 Token 耗费过多,任务执行时上下文过长导致任务失败等问题。


pan-os-mcp 项目概要

最近随着 MCP 大火,不少客户开始问我们是否支持 MCP(关于 MCP 的背景知识,可以阅读上篇文章),以及是否能用它来做防火墙 AIOps、巡检报告等自动化任务。


网上虽然已经有一些 pan-os mcp server 项目,试了下要么功能不完善,要么 tools 定义不准确,于是花了点时间重新加工测试,做了个增强版的 mcp server 出来,项目地址见:🔗 https://github.com/zm1990s/pan-os-mcp


项目中也贴了一些使用示例,欢迎测试使用。


该项目可以干什么?

简单来说,可以让你用自然语言,通过 Agent 来管理防火墙。

比如:

  • 通过自然语言,让 Agent 执行防火墙命令,进行信息查询或者配置修改;

  • 写一套巡检提示词,让 Agent 输出巡检报告(替代写脚本)。


这对于日常巡检、临时信息查询、防火墙配置修改等场景都适用,尤其适合缺乏自动化脚本经验的网络运维人员。


下面贴两个使用示例(使用 VSCode + Cline):


查询设备接口信息

提示词示例:

    根据devices.conf中的设备列表和凭据,使用您拥有的适当MCP工具。向我显示PA-440上所有接口的流量统计信息。识别任何具有异常流量模式或错误的接口,并提供每个活动接口的吞吐量摘要。您可能需要使用此命令:<show><counter><interface>all</interface></counter></show>


    编写巡检报告

    提示词示例:

      你是一个严谨的智能巡检助手,会定期执行 Palo Alto Networks 防火墙的深度健康与安全状态检查。自动收集运行状态、性能指标、授权信息、安全配置细节和潜在风险点,生成标准化的 Markdown 格式检查报告,并提供具体、可操作的告警与优化建议。请将结果输出到一个 Markdown 文件中,文件名使用 panw-firewall-report-[当前年月日].md
      你需要严格遵照下列规范:* 所有巡检結果均使用 Markdown 表格格式輸出。* 关键告警和建议应该在表格下方以粗体或列表形式突出展示。- `get_system_info`:获取基本系统信息- `op_command`:使用XML执行操作命令  ---- 篇幅原因详细内容省略 ----
      接下来,是你要检查以及整理的内容:目标设备为: devices.conf 中定义的 PA-440
      ### **1. 基本运行状态检查 (Runtime & System Health Check)*** **指令:** 收集防火墙的基本运行信息和系统健康概览。* **输出要求:** 以 Markdown 表格形式输出以下信息:
      | 项目         | 值          | 状态/告警                                 || :----------- | :---------- | :---------------------------------------- || 主机名       | `[Hostname]` | OK                                        || 管理 IP      | `[Management IP]` | OK                                        || 序列号       | `[Serial Number]` | OK                                        || 型号         | `[Model]`     | OK                                        || PAN-OS 版本  | `[PAN-OS Version]` | OK                                        | ---- 篇幅原因详细内容省略 ----
      * **相关 XML API 命令示例:*** 获取基本系统信息(主机名、IP、序列号、PAN-OS 版本、内容版本、运行时长、系统时间、最后配置提交时间):<show><system><info></info></system></show>* 获取 HA 状态:<show><high-availability><state></state></high-availability></show>* 获取风扇、电源和温度状态<show><system><environmentals></environmentals></system></show>
      #### **2. 设备许可与订阅服务检查 (License & Subscription Service Check)** ---- 篇幅原因详细内容省略 ---- 详细示例见:https://github.com/zm1990s/pan-os-mcp/blob/main/Agent-Prompt-Examples-CN/Routine%20Inspection-Example-CN.txt
      输出报告示例:

      背后的实现

      该项目的工作原理很简单:

      • 本地安装 Cline 等支持 MCP 工具调用的 Agent 

      • 通过 Python 按照 MCP协议的规范编写脚本(MCP Server),将 NGFW 的 XML API 封装成一个个 tools

      • Cline 中添加上述 MCP Server,通过提示词调用即可。


      本质上,PAN-OS MCP Server 是一个 API 中转工具,方便 Agent 去发现并调用防火墙的 API。

      但考虑到日常使用场景,做了一些微小的优化:


      • 基于防火墙的 XML API 实现

      PAN-OS 本身提供多种 API,但其中 XML API 的功能最全,灵活性最高,仅需要写少量的 Tools 即可支持大部分功能。

      Tools 相当于一个个 API,PAN-OS 的功能非常多,按照传统做法如果每项功能都做成 Tools,那么代码量会很大,这间接会使得 Agent 上下文变长,Agent 调用工具的精度下降(假如多个 Tools 功能描述相似,可能导致 Agent 选择错误的工具)。

      如下图是 PAN-OS REST API 的清单,单 Object 资源对象就有 30+,加上 Policy、Network、Device 等对象,数量会在 100+,对应可能需要 100+ 个 tools 实现。 XML API 命令拼接可以很好地解决此问题。

      • 凭据解耦,支持多设备

      凭据管理其实是 MCP 的一个老大难问题,在上篇文章的后面详细介绍过。

      常见的 MCP 工具都在启动时通过环境变量等方式将认证信息带入工具中,然后通过工具去访问后端资源(比如 API),这种方式存在两个问题:

      • 一个 MCP Server 仅能使用一组 key,间接导致只能工具只能访问一台设备,多设备下会抓瞎

      • 密钥存储不安全

      为了解决第一个问题,项目将凭据和工具解耦合,工具启动时不与任何的 key 绑定,仅在调用工具时由 Agent 动态传入,这样可以很容易通过提示词来切换设备。
      为了让 Agent 知道有哪些设备可以使用,以及其 API key 是什么,新增了名为 devices.conf 配置文件:
      第二个问题暂时没有特别好的解法,只能说,妥善保存上述配置文件,定期更新设备 key。
      • 通过提示词来准确指导 Agent 执行任务

      前面提到项目使用 XML API,而这种 API 类似于以前网络设备的命令一样(如 show ip int br),虽然基础命令没几个,但组合变化很多。

      为了使得 Agent 调用准确,提示词中需要告诉 Agent 做什么事情应该执行什么命令,比如:

        根据devices.conf中的设备列表和凭据,使用您拥有的适当MCP工具。请对PA-440-2进行全面的健康检查。检查系统资源,包括CPU、内存和会话使用情况。还要验证接口状态和状态。您需要以下XML命令:<show><session><info></info></session></show><show><system><resources></resources></system></show><show><interface>all</interface></show><show><system><state></state></system></show>

        所以,虽然 MCP Tools 少了,但是 API 没少,只是将这部分功能放在提示词中,简单、灵活、适用性强。

        距离生产化,依然有段路要走

        使用上述工具进行简单任务应该 OK,但距离一个成熟的项目还有段路要走:

        • 当前仅支持本地 Agent(即仅支持 stdio 模型),未来会增加 Streamable HTTP 接口支持,同时提供容器部署版本;

        • 处理复杂任务上下文不足:处理日志等任务时,可能因日志量过大导致 Agent 上下文超限,如果要解决这个问题可以做任务拆解,一次只用一个会话做一件事,最后再汇总结果(有点类似多 Agent 架构);或者用工作流等方式去获取和过滤数据,然后 Agent 做总结(类似于传统编程+Agent 结合)

        • 对设备功能需要很熟:在 AI 时代大家都说提示词很重要,如果要借助工具准确输出自己想要的报告,就需要知道需要查看设备的哪些信息,以及判断哪些指标是异常的/值得关注的,然后再编写提示词。本文中的提示词示例基于一位同事 @shell 的巡检报告用 AI 编写的。

        • Token 杀手:在使用 Cline 进行测试时,完整输出一份报告可能需要数百万 Token,原因依然在于获得的裸数据量较大,比如日志信息、设备状态信息等,因此在编写提示词时一定要写好过滤条件,减少不必要的检索。
        • 凭据管理优化:目前使用本地配置文件存储密钥,虽支持多设备,但这样有一些安全风险,而且调用时 Key 也会发送给 LLM,有可能造成数据泄露。

          未来更好的实现方式是 Agent 具备凭据托管功能,在调用 Tools 时自动填充凭据,而不是让模型去填充(Agent 厂家请发力)。

          还有一种办法是动态口令,但这对设备认证体系、Agent 等也有一定要求。

        53AI,企业落地大模型首选服务商

        产品:场景落地咨询+大模型应用平台+行业解决方案

        承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

        联系我们

        售前咨询
        186 6662 7370
        预约演示
        185 8882 0121

        微信扫码

        添加专属顾问

        回到顶部

        加载中...

        扫码咨询

        扫码登录
        登录即表示您同意《53AI网站服务协议》
        服务协议

        欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

        在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

        一、 定义

        本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

        会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

        知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

        二、 账号注册与登录

        登录方式:本网站支持以下登录方式,您可根据实际情况选择:

        微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

        手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

        账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

        实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

        未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

        三、 服务内容与规范

        知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

        服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

        禁止行为:您在使用服务时不得实施以下行为:

        利用技术手段批量爬取、下载、转存知识库内容;

        将知识库内容用于商业目的或未经授权地向第三方传播;

        干扰本网站正常运行或侵犯其他用户合法权益;

        发布违法违规信息或从事违反公序良俗的活动。

        四、 知识产权声明

        权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

        有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

        侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

        五、 个人信息保护

        我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

        您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

        您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

        六、 免责声明

        内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

        不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

        第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

        七、 违约责任

        如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

        如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

        八、 法律适用与争议解决

        本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

        因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

        九、 其他

        本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

        本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

        我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


        已查阅