Tito-42/Agentic-AI-Driven-Firewall-Migration

GitHub: Tito-42/Agentic-AI-Driven-Firewall-Migration

记录了由 Agentic AI 驱动的生产环境 FortiGate 到 Stormshield 防火墙迁移割接实战报告,包含方法论、安全机制设计及 serverd API 经验教训。

Stars: 0 | Forks: 0

# Agentic AI 驱动的防火墙迁移 ### 人机协同的生产环境割接 — 实战报告 **版本 1.0 — 2026 年 7 月** · [Français](README.fr.md) · 许可证:[CC BY 4.0](LICENSE) 据我们所知,这是**首份公开记录的实战报告**,记录了由通用 AI agent 执行的*生产环境*防火墙迁移割接。在相关领域已有现有技术(参见[相关工作](#6-related-work--how-this-differs)),但仅限于操作辅助或离线配置转换。 ### 结果 | 指标 | 结果 | | --- | --- | | 故障 | 0 | | 回滚 | 0 | | 宣布 GO | T₀ + 95 分钟(领先截止时间 25 分钟) | | 内部区段割接 | 每个不到 10 秒 | | 互联网服务恢复 | T₀ 后 3 分钟 | | 站点到站点 VPN | 经过 5 分钟的有效配置后投入运行 | | HA 接管(硬断电) | < 10 秒,无明显中断 | | 验收测试 | 12/13 通过,1 项备份项不在防火墙范围内* | * 唯一的备份项涉及一个辅助设备,该设备由于位于防火墙上游的原因仍然无法访问——防火墙没有看到来自它的流量,也没有拦截任何内容。此事已在窗口期内记录并移交给相关第三方。 ### 目标读者 规划跨厂商防火墙迁移的网络和安全工程师;通过 `serverd` API 工作的 Stormshield SNS 管理员;任何评估 Agentic AI 是否可以被信任用于生产基础设施更改及其约束条件的人。 ## 1. 操作范围 | 项目 | 详情 | | --- | --- | | 源端 | FortiGate HA 集群,Active-Active,生产环境 | | 目标端 | 2× Stormshield SN520 (SNS 4.8 LTSB),HA Active-Passive | | 方法 | 保持 IP 不变进行物理替换,按区段逐步进行(LAN → WAN1 → WAN2 → DMZ) | | 最终策略 | 28 条过滤规则(顺序与源策略一致),3 条 NAT 规则,8 条静态路由,约 140 个网络对象,IP 信誉拦截,显式记录的最终拒绝 | | 窗口期内额外完成 | 到合作伙伴站点的 IPsec IKEv2 站点到站点隧道(预先注册、实时诊断并激活),真实的 HA 故障测试(对主用设备进行硬断电),WAN 故障转移测试 | | 人类角色 | 所有布线,所有 GO/NO-GO 决策,业务验收测试(VoIP 通话、门禁系统、摄像头、邮件),密码保管 | | Agent 角色 | 其他所有工作:审计、API 会话、配置写入、验证、网络测试、故障诊断、文档记录、备份 | ## 2. 为什么这与“AI 辅助网络”不同 Agent 并不是*建议*配置让人类去应用。在一个明确的安全机制内,它**自己掌握了 API 会话**:它读取状态、写入配置、激活策略、验证结果、在每次写入批次前后进行备份,并逐步指导人类的物理操作(“从两台设备上拔下 WAN2,然后告诉我*完成了*”)。人类在割接窗口期间没有输入过任何防火墙命令。 ## 3. 安全机制(使其在生产环境中可被接受的原因) 1. **单次尝试认证** — 防暴力破解/锁定原则:每次会话一次干净的认证,出现任何失败即硬停止。(真实应用:在合作伙伴设备上出现一次 `ACCESS_DENIED`,立即终止了该工作流。) 2. **任何写入前都要备份** — 每次写入批次都由经过验证的 `.na` 配置备份作为边界(窗口期间产生了 6 个备份,通过大小进行完整性检查)。 3. **默认只读** — 整个割接前审计在一次只读会话中完成;写入权限是按批次显式获取的。 4. **同一会话提交** — 缓冲的更改(过滤规则)在同一个 API 会话中检查并激活,绝不悬挂不管。 5. **HA 同步原则** — *每次*写入后执行 `HA SYNC` 和同步验证,并容忍已知的小毛病(从机静默最多 5 分钟)。 6. **人类 GO 门控** — 三个正式的 GO/NO-GO 门控(设备状态、割接开始、最终验收),仅由当值指挥员宣布。 7. **回滚始终有定义** — 旧集群保持通电并断开线缆;在最终 GO 之前,记录在案的物理回滚可在 15 分钟内完成。 8. **完全可追溯** — 每条命令、发现和决策都实时记入运维日志;验收报告在窗口期内生成。 ## 4. 时间线(T₀ = 12:00) | 时间 | 事件 | | --- | --- | | 11:32 | 对新集群进行空跑审计(单个只读 API 会话):策略、路由、对象、HA、许可证 — 发现符合性 + 3 处偏差(包括一个过于宽泛的管理员 ACL,已标记给人类做决定) | | 11:45 | 强制重新应用 HA master;通过 API 配置新的 DMZ 接口;执行前/后备份 | | **12:00** | **T₀ — 割接开始**,按区段逐步进行,两台设备同步 | | 12:03 | 通过新集群恢复互联网(无偿 ARP 发挥了作用) | | 12:20–12:35 | 站点到站点 IPsec 隧道:agent 发现预先注册的策略**被禁用且带有错误的选择器**,修复了该问题,然后将静默故障的根本原因归结为 IPsec 引擎从未加载其配置(`CONFIG IPSEC RELOAD` — 参见[经验教训](#5-lessons-learned--stormshield-sns-48-serverd-api)) → SA 建立,SIEM 可访问 | | 12:50 | 业务验收:VoIP、门禁系统、摄像头 (4G)、邮件、内网 — 5/5 通过 | | 13:10 | WAN 故障转移测试:瞬间切换到备份链路并切回;隧道自动重新建立 | | 13:20–13:30 | **真实 HA 测试:对主用设备硬断电 → 接管耗时 < 10 秒,无明显中断 → 恢复供电时自动故障回复** | | **13:35** | **GO — 迁移验证通过**(12/13 验收测试通过 + 1 项备份项不在防火墙范围内) | | 13:41 | 全新竣工图收集 + 最终验证备份 | ## 5. 经验教训 — Stormshield SNS 4.8 `serverd` API 通用且可重用。下面列出的每个问题都是在窗口期间真实遇到的。 ### `CONFIG IPSEC ACTIVATE` 不够 — 症状:`MONITOR GETSPD` 返回 0 个条目 如果 IPsec 引擎从未加载策略,`ACTIVATE` 会使 SPD 保持为空,并且即使启用了 keepalive,也不会发生 IKE 发起。解决方法是执行 **`CONFIG IPSEC RELOAD`**。这是窗口期代价最大的发现:隧道看起来配置正确,但却静默失效,什么也没做。 ### `CONFIG WEBADMIN ACCESS ADD` 是位置参数 — `host=` 会导致 `Invalid parameters` 按位置传递对象名称:`CONFIG WEBADMIN ACCESS ADD `。命名参数会被拒绝。 ### `CONFIG NETWORK INTERFACE ACTIVATE` 会断开你的管理 HTTPS 会话 当更改涉及到承载管理端口的网桥时,会话会中断,但**更改仍然会生效**。重新连接并验证;不要重复执行该命令。 ### 接口寻址使用 `ADDRESS ADD`,而不是 `UPDATE` 移除网桥通过执行带有空值的 `UPDATE ifname=X Bridge=` 来完成。 ### IPsec 网关策略由 `slot=` 索引,而不是 `index=` 除非你传递 `useclone=1`,否则 `LIST` 返回的是*活动*视图。要在 `ACTIVATE` 之后读取,千万不要在 `UPDATE` 和 `ACTIVATE` 之间读取,否则你会读到过期的状态并断定写入失败。 ### 此固件上没有 `MONITOR LOG` 日志审查只能通过 GUI 进行。API 侧可观测性的主力工具是 `MONITOR HOST` 和 `MONITOR CONNECTION`(后者至少需要一个过滤器)。 ### HA “强制为主用”属性是运行时状态 在设备断电后它无法保留。在任何完全重启之后都要重新应用它——包括在有意进行的 HA 故障测试之后。 ### HA `Quality` 是已启用 link-up 接口的百分比 未接线的备用端口会导致出现像 55/44 这样的值,这其实是一个*健康*的读数。不要盲目追求 100。 ## 6. 相关工作 — 本报告的不同之处 - **Cisco AgenticOps**(2025–2026):用于 Cisco 生态系统内网络*运维*(告警分诊、故障排查、辅助配置)的 Agentic AI — 不是跨厂商迁移割接。[cisco.com](https://www.cisco.com/site/us/en/learn/topics/artificial-intelligence/what-is-agentic-operations-agenticops.html) - **Huawei Autonomous Driving Network / AN Agents**(L4,2024–2025):电信自愈和辅助运维 — 同一类别,同样的局限性。[huawei.com](https://www.huawei.com/cn/news/2024/4/has-auto-drive-network) - **SANS Institute,2026 年 5 月** — *利用 LLM 进行跨厂商防火墙配置迁移(Claude 对决 ChatGPT)*:最接近的已发表研究 — 一项离线的**配置转换**研究;由模型生成,由人类应用。[sans.edu](https://www.sans.edu/cyber-research/leveraging-large-language-models-cross-vendor-firewall-configuration-migration-claude-chatgpt) - **确定性转换器**(FortiConverter、Expedition、SmartMove、[DirectFire](https://github.com/glennake/DirectFire_Converter)):没有 agent 能力的规则转换 — 没有审计、没有测试、没有决策。 - **TM Forum Autonomous Networks**(L0–L5):本次操作最好被描述为**应用于基础设施变更的监督式 L4 风格自主操作**。[tmforum.org](https://www.tmforum.org/catalysts/projects/M25.0.832/l4-autonomous-networks-agentpowered-zerotouch-workflows) ## 7. 本代码库中刻意未包含的内容 没有客户配置、没有 IP 寻址方案、没有序列号、没有凭证、没有站点或合作伙伴名称、没有备份、没有确切的运维日期。这是一份**方法论和经验教训**发布文档;所有运维数据均保留在客户处(NIS2 背景)。 ## 8. 局限性与未决问题 坦白地说,因为一份只报告成功的实战报告就是营销材料: - **n = 1。** 一个站点,一对厂商,一个操作员。这里的内容都不能确立一个成功率。 - **不可独立复现。** 安全机制只是被描述出来,并没有发布。持怀疑态度的读者只能看到方法论和作者的话,而没有一个他们可以重新运行的工件。 - **策略体量小。** 28 条过滤规则和约 140 个对象是中小型企业/工业级的策略体量。在拥有 2,000 条规则的企业级规则库上的表现是未知的,不应据此进行推断。 - **操作员的专业能力是承重墙。** 人类把控着 GO 门控,并且本可以拦截住不安全的指令。这一结果不能推广到无人监督的 agent 或非专业操作员身上。 - **模型依赖性未经测试。** 使用了一种 Agentic 系统。在窗口期间没有进行与其他系统的比较。 ## 如何引用 参见 [`CITATION.cff`](CITATION.cff),或: ## 作者 **Bastien RAMSEYER — Digital-CyberWare (DCW)** — 运维设计、窗口指挥、物理执行。 Agentic 系统:**Claude (Anthropic)**,通过 Claude Code 运行。 欢迎提供反馈、指正以及类似的实战报告 — 请[创建一个 Issue](../../issues)。 *许可证:[CC BY 4.0](LICENSE)。此处描述的经验教训和方法论均源自单次运维报告;它们不能替代厂商文档、专业判断或您自己环境中的测试。*
标签:FortiGate, Stormshield, 网络安全, 自动化运维, 运维, 防火墙迁移, 隐私保护