fastrevmd-lab/fwskillsshare
GitHub: fastrevmd-lab/fwskillsshare
面向多厂商防火墙的 AI Agent 技能集合,提供配置解析、跨厂商转换、最佳实践审计与语义级 diff 能力,帮助编码助手准确处理防火墙配置。
Stars: 4 | Forks: 0
fwskillsshare
面向网络与安全工程师的防火墙技能
一个 mechub 项目 —— 自主可控的网络安全自动化
针对你日常实际防火墙工作的 Agent 技能 —— 包含四个配置解析器,以及审计、转换和 diff 工具 —— 拒绝胡编乱造的“盲盒”配置。
防火墙工作容不得半点马虎。一行看似正确实则错误的 `access-list`,或者无法 commit 的 Junos stanza,绝非小事一桩。编码 Agent 生成“看似合理”的防火墙配置的能力强得惊人,但在判断其是否出错方面却又极其糟糕。
这些技能的存在正是为了填补这一鸿沟。它们将 Agent 严格绑定到经过审查的厂商语法,并统一到共享的 schema,从而让四个厂商“用同一种语言交流”。它们小巧、独立且可组合 —— 你可以仅复制你需要的两个,也可以全部拿来使用。随意去改写它们,打造成属于你自己的工具。
## 快速开始(30秒设置)
1. 运行安装程序并选择你需要的:
```
curl -fsSL https://raw.githubusercontent.com/fastrevmd-lab/fwskillsshare/main/install.sh | bash
```
2. 选择你需要的技能(使用空格/数字进行切换,输入 `a` 全选),以及安装路径 —— **Claude Code** (`~/.claude/skills/`)、**Codex** (`~/.agents/skills/`)、**Hermes** 或是这三者皆选。
3. 仅在选定的 Agent 未能自动检测到新技能时重启它。
4. 大功告成。粘贴一段配置或指定一个厂商,对应的技能便会自动加载。
更喜欢使用命令行 flag,或者通过克隆仓库安装?请参阅[安装说明](#installation)。
## 为什么会有这些技能
我构建这些技能是为了解决我在让 Claude Code、Codex 及其他 Agent 操作防火墙时反复遇到的故障模式。
### #1:各厂商都在使用不同的“方言”
**问题所在。** 一个 Cisco ACL、一个 FortiGate policy block、一个 PAN-OS 的 `
`,以及一个 SRX 的 `set security` 行,这四者以互不兼容的方式表达着同一个概念。让 Agent 去比较或转换它们时,它往往会对不上号的地方含糊其辞、一笔带过。
**解决方案**在于一种共享语言。这四个 [`parsing-*`](./skills/) 技能将每个厂商的配置标准化为**一套厂商中立的中间 JSON schema** —— 包括 zones、objects、policies、NAT、routing、VPN、HA 等 —— 并附带一个包含 240 多个条目的规范 L7 application 映射表及置信度分数。配置一旦转换进该 schema,跨厂商的[审计](./skills/firewall-best-practices-audit/SKILL.md)、[转换](./skills/firewall-config-conversion/SKILL.md)和[diff](./skills/firewall-config-diff/SKILL.md)操作都将基于*语义*而非文本进行。那些没有等效对象的功能特征会被明确标记,绝不静默丢弃。
这是让其余功能得以模块化组合的核心基础。请参阅下方的[中间 Schema](#intermediate-schema)。
### #2:规则库会腐化,而 Agent 会加速这种腐化
**问题所在。** 每个规则库最终都会趋向 `any-any`、出现被遮蔽的规则、孤立的 objects 以及明文管理。Agent 让防火墙变更变得更快捷,这意味着如果没有机制来约束它们,它们也会加速这种腐化。
**解决方案**是 [`firewall-best-practices-audit`](./skills/firewall-best-practices-audit/SKILL.md) —— 查出过于宽松的规则、被遮蔽/冗余的规则,缺失的 deny-all 和日志记录,暴露的 telnet/http/SNMPv1-2c,脆弱的 IKE/IPsec 加密,设备平面加固问题,未使用的 objects —— 此外还可使用 [`firewall-config-diff`](./skills/firewall-config-diff/SKILL.md) 来检测配置漂移及 HA 对等一致性。提供按严重程度和置信度排序的优先级分析结果,包含厂商中立的以及特定于源厂商的修复建议。请在发布变更之前运行它们,而不是在安全事件发生之后。
### 总结
在 AI 时代,防火墙的基础原理并没有变简单 —— 只是影响范围变得更大了。这些技能是我试图将这种规范交给 Agent 的尝试:经过审查的语法、共享的 schema 以及卫生检查清单。使用它们,破坏它们,将其变成你自己的工具。
## 参考
两大类**七项技能**:四个配置解析器,加上审计、转换和 diff 工具。它们全部都是**由模型主动调用**的 —— 当 Agent 识别到支持的厂商语法或匹配的分析任务时,会自动调用这些技能。你可以在 Claude Code 或 Hermes 中显式调用,如 `/parsing-srx-configs`,或在 Codex 中使用 `$parsing-srx-configs`。
### 配置解析器
将厂商配置标准化到共享的中间 schema 中。其他所有工具都在此基础上进行组合。
- **[parsing-cisco-configs](./skills/parsing-cisco-configs/SKILL.md)** — Cisco ASA 和 FTD(`show running-config`):access-lists、object/object-group、NAT、failover、port-to-app 推断。
- **[parsing-fortinet-configs](./skills/parsing-fortinet-configs/SKILL.md)** — FortiGate / FortiOS(`show full-configuration`):config/edit/set block 格式、VDOM、UTM profiles、复合 IPsec proposals。
- **[parsing-palo-configs](./skills/parsing-palo-configs/SKILL.md)** — Palo Alto PAN-OS 和 Panorama:XML *或* 平铺的 set-format、vsys、app-default 分解、device-groups。
- **[parsing-srx-configs](./skills/parsing-srx-configs/SKILL.md)** — Juniper SRX / Junos:`display set` 或大括号格式、address-book 向 global 迁移、`junos-*` app 映射、routing-instances。
### 跨厂商工具
厂商中立,基于解析后的 schema 运行。
- **[firewall-best-practices-audit](./skills/firewall-best-practices-audit/SKILL.md)** — 独立于任何框架的规则库审查:any-any、被遮蔽/孤立的规则、缺失的 deny/日志记录、暴露的明文服务、脆弱的加密、设备平面加固。
- **[firewall-config-conversion](./skills/firewall-config-conversion/SKILL.md)** — 在 Cisco/FortiGate/Palo/SRX 之间迁移配置,并提供逐节点的保真度报告(已转换 / 注意事项 / 需手动处理)。产出的是经过审查的草稿,而非直接可用于生产环境的配置。
- **[firewall-config-diff](./skills/firewall-config-diff/SKILL.md)** — 按语义(对顺序和名称不敏感)比较两个配置 —— 适用于同厂商的配置漂移及 HA 一致性检查,或跨厂商的迁移验证。
## 质量与审查
所有 **7 / 7 项技能**均已通过独立的技术审查,涵盖厂商命令/语法正确性、schema/字段准确性、机密信息脱敏以及应用程序行为。所有的审查发现均已修复,且四个 `parsing-*` 技能共享一套逐字节一致的中间 schema(已通过 `scripts/check-shared-schema.py` 验证)。
质量检查流程涵盖了 frontmatter、发现关键词、机密信息脱敏、跨技能交互以及 `references/` 文件中的渐进式披露,随后针对重构后的技能在干净上下文环境中进行了检索测试。
| 家族 | 技能数 | 已审查 |
|--------|-------:|:--------:|
| 配置解析器 | 4 | 4 / 4 |
| 跨厂商工具 (audit · convert · diff) | 3 | 3 / 3 |
| **总计** | **7** | **7 / 7** |
这些是用于解析和分析的技能,而非经过认证的商业产品:在依赖其输出结果之前,请对照当前的厂商文档和实际设备行为进行审查。
每项技能还包含用于 Codex 的可选 `agents/openai.yaml` UI 元数据。Claude Code 和 Hermes 会继续使用可移植的 `SKILL.md` 内容,并忽略该特定于产品的文件夹。
运行 `python3 scripts/check-skill-packages.py` 可验证可移植的 frontmatter、引用路径、Codex 的组合发现预算以及所有的 Codex UI 元数据。运行 `python3 scripts/check-shared-schema.py` 可验证这四个解析器 schema 是否保持逐字节一致。
## 安装说明
### 安装程序(推荐)
通过 curl 管道传输时,[`install.sh`](./install.sh) 安装程序将以交互方式运行;或者你也可以配合 flag 在脚本化/非交互环境中使用:
```
# 交互式:选择 skills + target
curl -fsSL https://raw.githubusercontent.com/fastrevmd-lab/fwskillsshare/main/install.sh | bash
# 或者从 clone 进行
git clone git@github.com:fastrevmd-lab/fwskillsshare.git
cd fwskillsshare
./install.sh
```
Flags:
```
--all Install all 7 skills
--skill NAME Install a specific skill (repeatable)
--family NAME parsers | tooling (repeatable)
--target WHERE claude | codex | hermes | both | all
(`both` keeps the legacy Claude+Hermes meaning; default: prompt, or claude with -y)
--dir PATH Explicit install directory (overrides --target)
--list List the skill inventory and exit
--uninstall Remove the selected skills instead of installing
--force Overwrite existing skill directories without prompting
-y, --yes Non-interactive; assume defaults
-h, --help Show help
```
示例:
```
./install.sh --all --target claude # everything, into ~/.claude/skills
./install.sh --all --target codex # everything, into ~/.agents/skills
./install.sh --family parsers # just the four config parsers
./install.sh --family tooling --target all # tooling skills into all three agents
./install.sh --skill parsing-srx-configs --skill firewall-config-diff
./install.sh --list # see what's available
```
### 手动安装
这些技能本质上就是普通的目录 —— 复制你需要的即可:
```
git clone git@github.com:fastrevmd-lab/fwskillsshare.git
# 全部
cp -r fwskillsshare/skills/* ~/.claude/skills/
# 或者单个 skill
cp -r fwskillsshare/skills/parsing-srx-configs ~/.claude/skills/
```
对于 **Codex**,请将其复制到用户的技能目录树中。Codex 通常会自动检测更改;如果新技能未出现,请重启它:
```
mkdir -p ~/.agents/skills
cp -r fwskillsshare/skills/* ~/.agents/skills/
```
对于 **Hermes**,请将其复制到本地的 Hermes 技能目录树中(通常是 `~/.hermes/skills/devops/`),并使用 `hermes skills list` 进行确认:
```
mkdir -p ~/.hermes/skills/devops
cp -r fwskillsshare/skills/* ~/.hermes/skills/devops/
hermes skills list | grep -E 'parsing-|firewall-'
```
当这些技能在你的消息或粘贴的配置中检测到支持的厂商语法或审计、转换和 diff 请求时,它们会自动触发。
### 管理上下文
技能的*具体内容*仅在技能被调用时加载,但每个技能的简短描述会保留在上下文中,以便 Agent 知道何时使用它。你可以通过 `~/.claude/settings.json` 中的 `skillOverrides` 设置,在保持技能可调用的同时,将其描述从上下文中隐藏:
```
{ "skillOverrides": { "firewall-config-diff": "name-only" } }
```
`"name-only"` 会保持技能在列表中显示且可调用,但会隐藏其描述;`"user-invocable-only"` 会将其对模型完全隐藏(仅保留斜杠命令调用);`"off"` 会将其完全隐藏。
对于 **Codex**,你可以通过将已安装技能的 `SKILL.md` 路径添加到 `~/.codex/config.toml` 中,在不删除它的情况下将其禁用:
```
[[skills.config]]
path = "/home/you/.agents/skills/firewall-config-diff/SKILL.md"
enabled = false
```
## 用法
### 你可以做什么
- **解析** —— 提取所有的 objects、policies、NAT 规则和路由,转换为结构化的 JSON
- **审计** —— 发现未使用的 objects、被遮蔽的规则、过于宽松的 policies、缺失的日志记录
- **转换** —— 在不同厂商之间转换配置(例如,从 SRX 转换到 PAN-OS)
- **比较** —— 基于语义而非文本对两个配置进行 diff
- **总结** —— 获取有关 zones、policy 数量和安全 profiles 的概览
### 示例
```
# 解析与审计
"Here's my ASA config, parse it and show me security issues:"
[paste running-config]
# 在 vendors 之间转换
"Convert this SRX config to Palo Alto format"
[paste SRX config]
# 总结
"Summarize this FortiGate config — how many policies, what zones, any UTM profiles?"
[paste config]
# 从文件读取
"Read /path/to/running-config.txt and audit it"
```
## 提示
- 粘贴**完整配置** —— 不完整的配置可能会产生未解析引用的警告
- 针对不同厂商使用适当的 show 命令输出:
- **Cisco ASA**: `show running-config`
- **FortiGate**: `show full-configuration`
- **PAN-OS**: XML 配置导出或 `show config flat`(set-format)
- **SRX**: `show configuration | display set` 或 `show configuration`
- 对于大型配置,请将其保存为文件,并将文件路径指向 Claude
- 每个 `parsing-*` 技能都包含 `references/fixture-minimal-input.md` 和 `references/fixture-expected-output.json`,作为用于测试解析器行为和 schema 结构的冒烟测试 fixture
## 转换注意事项
- 应用层规则(Palo Alto apps、FortiGate app control)无法 1:1 映射到基于端口的平台(ASA)
- User-ID / FSSO source-user 规则在大多数平台上没有等效实现
- 动态地址组(PAN-OS)没有静态等效项
- 地理位置或 GeoIP 对象在跨平台时支持有限
## 中间 Schema
四个 `parsing-*` 技能会输出到一个公共的 schema,其中包含以下部分:
| 部分 | 内容 |
|---------|----------|
| `zones` | 安全区域及其接口 |
| `address_objects` | 主机、子网、FQDN、范围 |
| `address_groups` | 地址对象组 |
| `service_objects` | 服务/端口定义 |
| `service_groups` | 服务对象组 |
| `security_policies` | 包含已解析 app、service、profile 的防火墙规则 |
| `applications` | 具有规范名称和置信度分数的已解析 L7 app |
| `application_groups` | L7 应用组(规范键) |
| `nat_rules` | NAT 转换(source、dest、static) |
| `static_routes` | 路由表条目 |
| `virtual_routers` | 路由命名空间 / VRF 隔离 |
| `ospf_config` | OSPF 区域、接口、重分发 |
| `bgp_config` | BGP 邻居、网络、重分发 |
| `ha_config` | 高可用性 / 故障转移 |
| `vpn_tunnels` | 基于 route 的 IPsec VPN 及 IKE/IPsec 细节 |
`interfaces` | 物理/逻辑接口(包含 IP、IPv6、LAG) |
| `admin_users` | 具有角色和 SSH 密钥的用户 |
| `system` | Hostname、DNS、NTP、管理服务 |
| `dhcp_config` | DHCP 服务器池和中继 |
| `residual_raw` | 未解析的配置部分,供手动审查 |
| `metadata` | 源厂商、版本、解析时间戳、警告信息 |
### 共享 Schema 维护
`intermediate-schema.md` 文件被特意复制到每个 `parsing-*` 技能中,以确保每个技能在单独复制时都能保持独立完整。请将 `skills/parsing-srx-configs/references/intermediate-schema.md` 视作规范的编辑副本,将相同的内容同步到其他解析器技能中,然后运行:
```
python3 scripts/check-shared-schema.py
```
请参阅 `skills/SHARED-SCHEMA.md` 获取完整的维护策略。
## 来自 fatcat/converter 的改进
这些技能的 1.1.0 版本融入了通过分析 [fatcat/converter](https://github.com/fatcat/converter) JavaScript 解析器所发现的解析改进点。以下领域基于 fatcat 的实现得到了显著增强:
**所有技能:**
- 跨厂商 L7 application 映射,包含 240 多个规范 app、置信度分数和类别(web、collaboration、email、remote-access、network-mgmt、database、cloud-storage、streaming、voip、auth、tunnel、security 等)
- 应用程序及应用组 schema 定义及其解析算法(vendor-name → canonical → target-vendor)
- 特定于厂商的应用名称映射表(JunOS `junos-*`、FortiOS 大写名称、PAN-OS 独特名称如 `ssl`/`web-browsing`、ASA port-to-app 推断)
- 扩展的中间 schema,新增了 `applications`、`application_groups`、`system`、`virtual_routers`、`admin_users`、`vpn_tunnels`、`ospf_config`、`bgp_config`、`dhcp_config`、`residual_raw` 定义
- 全面支持 IPv6(地址、路由、接口 IP、ICMPv6 服务)
- 完整的 VPN/IPsec 解析,包含 IKE/IPsec proposal 链解析及弱算法检测
- 详细的 OSPF/OSPFv3 解析(区域、接口级设置、身份验证、重分发)
- 详细的 BGP 解析(逐邻居属性、计时器、route-reflector、重分发)
- DHCP 服务器和中继配置(包含地址池/保留详情)
- 系统配置提取(hostname、DNS、NTP、管理服务)
- 管理员用户解析,包含 SSH 密钥迁移和角色映射
- 接口解析(类型:LAG、loopback、tunnel、VLAN;IPv6、MTU、DHCP client、子接口)
- 残留/未处理配置的捕获与分类
- 从配置头中检测版本号
**Cisco ASA (parsing-cisco-configs):**
- 端口到应用程序的推断表(协议+端口 → 规范 app),用于跨平台转换
- ASA 命名端口关键字映射(www→80、domain→53 等)
- 将 ACL remark 作为注释附加到下一条规则
- 为内联 ACL 地址创建匿名 object
- 解析 ACL 中的 source port
- DHCP 服务器 commit 触发模式(`dhcpd enable`)
- 追踪每个 zone 的管理访问协议
- 通过 IPsec profile 解析实现 VTI 隧道接口组装
**FortiGate (parsing-fortinet-configs):**
- FortiOS 应用程序名称解析表,包含应用程序组和复合 proposal 解析
- 通配符/wildcard-fqdn 类型转换(转换为 network/fqdn)
- FortiLink 接口过滤
- 将 Allowaccess 分类为管理服务与路由协议
- 对于带有 IP 但无所属 zone 的接口,zone 构建优先级设为 3
- policy 字段默认值的文档说明
- Central SNAT 字段名称变体(`natippool`)
- 针对带引号的多值行的 Tokenizer 文档说明
- VPN IPsec phase1/phase2 复合 proposal 解析(`aes256-sha256`)
**PAN-OS (parsing-palo-configs):**
- 完整的 PAN-OS 应用程序解析,采用 4 步流水线(service check → app-group check → custom app check → canonical lookup)
- `application-default` service 分解指南
- 支持 Set-format(`show config flat`)输入并具备自动检测功能
- 安全 policy 上的 URL category
- 在 policy 的 application 字段中解析应用组与 service object
- `drop` → `deny` 动作映射并附带警告
- 从 deviceconfig 构建管理接口
- 从父接口向子接口回填 zone
- 提取 service 和 service-group 的描述
**SRX (parsing-srx-configs):**
- 33 项条目的 JunOS 预定义应用程序映射表(`junos-*` → canonical)
- 区分 application-set 与 application-group 并支持混合集拆分
- 改进的格式检测启发式算法(stanza-name 检查与行计数对比)
- 用于处理阻抗失配的 6 条从层级到 set 的标准化规则
- 将 zone 附带的 address book 迁移至 global 范围
- `ip-prefix`/`ipv6-prefix` 关键字处理
- `reject` → `deny` 动作映射修复(之前被错误地映射为 `reset-both`)
- 支持 routing instances / VRF
- 支持 `qualified-next-hop`(浮动静态路由)和 `discard`(null 路由)
- 完整的 IKE/IPsec 对象链解析
- NAT 目的端口匹配和基于 pool 的转换
- MNHA(多节点高可用性)检测
- Unit-0 接口名称标准化
- 排除集群接口(reth/fab)
## 卸载
```
# 从 Claude Code 和 Hermes 中移除安装程序放置的所有内容
./install.sh --uninstall --all --target both
# 从 Claude Code、Codex 和 Hermes 中移除所有内容
./install.sh --uninstall --all --target all
# 或者移除单个 skill
./install.sh --uninstall --skill firewall-config-diff --target codex
```
手动卸载的等效操作 —— 这些技能本质上只是目录,因此只需在 `~/.claude/skills/`、`~/.agents/skills/` 或 `~/.hermes/skills/devops/` 下为相应的 Agent 删除所选的技能目录即可。
## 许可证
本仓库中的原创内容均采用 [MIT 许可证](LICENSE) 授权。
**商标/附属声明。** 本仓库是一个独立的、社区驱动的项目。它不隶属于、不受认可、不受赞助也不受支持于 Hewlett Packard Enterprise、Cisco、Palo Alto Networks、Fortinet 或 Juniper Networks。“HPE”、“Juniper”、“Cisco”、“Fortinet”、“Palo Alto Networks”和“Juniper SRX”是其各自所有者的商标,此处使用它们仅用于描述本软件与之互操作的对象。请将有关这些产品的支持和许可问题直接咨询相应的厂商。
## 贡献
除非另有明确说明,否则提交以包含在本项目中的贡献均采用 [MIT 许可证](LICENSE) 授权。
a mechub project · deterministic decides · the model explains · a human approves
github.com/fastrevmd-lab
标签:AI智能体, DLL 劫持, Docker 部署, 大语言模型, 应用安全, 网络安全, 网络自动化, 网络运维, 逆向工具, 防火墙, 隐私保护