mcpField
A
alibabacloud-cfw-acl-diagnosis

alibabacloud-cfw-acl-diagnosis

github.com/aliyun安全28136 次安装1 天前更新
代码仓库

关于 alibabacloud-cfw-acl-diagnosis

这是用于 Alibaba Cloud Cloud Firewall ACL 规则排障的只读技能,面向需要核实防火墙规则和流量表现的运维人员。它按防火墙类型检查规则、资产状态及流量日志,并限制诊断结论必须依据实际 CLI 查询结果。

主要功能

  1. 01只读 ACL 规则排查
  2. 02支持 Internet、NAT 和 VPC 防火墙
  3. 03依序核验规则、资产与启用状态
  4. 04条件满足时查询流量日志
  5. 05基于 CLI 结果生成诊断报告

适用场景

  1. 01调查规则未生效或流量被阻断
  2. 02核对受保护资产与规则匹配情况
  3. 03检查流量日志中的允许或拒绝结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-cfw-acl-diagnosis

安装后在 Claude Code 中输入/alibabacloud-cfw-acl-diagnosis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
cfw_acl_knowledge.md
cli_commands.md
cli_traps.md
configuration_guide.md
diagnosis.md
execution_standards.md
ram-policies.md
security_rules.md

详细介绍

云防火墙 ACL 规则诊断(只读)

⚠️ 只读限制(最高优先级)

整个工作流中严格禁止:

  • ❌ 永远不要执行 Create/Update/Delete API 调用或写入 CLI 命令
  • ❌ 永远不要提供包含具体参数值、可执行的配置命令
  • ❌ 永远不要在任何 CLI 命令中使用 --profile 参数
  • ❌ 永远不要运行 aliyun configure get 或 aliyun configure list
  • ❌ 永远不要伪造 CLI 输出——只能使用真实的 API 响应
  • ❌ 至少有一条 CLI 查询成功之前,不要输出诊断报告
  • ❌ 不要引用任何记忆、经验或外部知识——只能使用此 SKILL.md 和 CLI 输出
  • ❌ 永远不要以任何方式创建文件——不要使用 write_file、create_file、Bash 重定向(>、>>、tee)或任何其他文件写入方式

输出前硬性拦截自检(生成任何回复之前必须执行):

撰写任何回复之前,请在内部核实:我是否调用过 write_file、create_file 或任何 Bash 重定向?如果是 → 立即中止文件输出,并直接在对话中以 Markdown 文本形式打印内容。违反此规则将导致任务立即失败。

所有诊断报告都必须以以下内容开头:

⚠️ Disclaimer: This tool is a read-only diagnostic assistant. It only provides analysis and configuration suggestions, and does NOT perform any configuration changes.

仅允许以下查询:aliyun cloudfw describe-* | aliyun sls get-logs-v2 | aliyun actiontrail lookup-events

完整的禁止事项列表请参阅 references/security_rules.md。


触发条件与服务识别

意图分类(第一步——先确定路径,再执行其他操作)
用户意图关键词操作
配置查询“如何配置” / “配置步骤” / “如何设置” / “规则编写” / “配置指南”→ 配置路径:阅读 references/configuration_guide.md,直接在对话中输出步骤。不要运行 CLI 命令,不要查询防火墙。
诊断 / 故障排查“无法工作” / “无效果” / “已阻止” / “HitTimes=0” / “流量日志” / “排查”→ 诊断路径:立即根据已提供的信息开始步骤 0。不要等待更多输入。
“安全组”—不属于此技能(使用 aliyun ecs 命令)
未注明具体类型的“防火墙”—询问:是云防火墙还是安全组?

配置路径输出规则:直接在对话中以文本形式输出配置步骤。内容请参阅 references/configuration_guide.md。不要运行任何 CLI 命令。


可观测性

此技能执行的所有阿里云服务调用都必须使用以下 User-Agent(UA)模板和会话 ID 规则,以便追踪每个诊断工作流。

User-Agent 模板
AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}
  • 在运行时将 {{SESSION_ID}} 替换为真实的会话标识符。
  • 在文档和命令示例中必须保留占位符形式。
会话 ID 生成规则
  1. 在每个诊断工作流开始时,生成一个唯一的会话标识符。
  2. 格式:小写 UUIDv4(例如,a1b2c3d4-e5f6-7890-abcd-ef1234567890)。
  3. 在该工作流中的所有阿里云服务 CLI 命令中使用同一个会话 ID。
  4. 不要在不同的工作流或不同的用户对话中重复使用会话 ID。
适用范围规则
  • 阿里云服务 API 调用(例如,aliyun cloudfw describe-*、aliyun sls get-logs-v2、aliyun actiontrail lookup-events)必须包含 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"。
  • 本地/系统命令,例如 which aliyun、aliyun version、aliyun plugin list 和 aliyun plugin update,不会调用阿里云服务 API,因此不得添加 --user-agent。

设置

前提条件检查
which aliyun && aliyun version
aliyun plugin list  # Confirm aliyun-cli-cloudfw installed

缺少插件时安装(执行前须获得用户明确确认):aliyun plugin install cloudfw
凭证:环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID / ALIBABA_CLOUD_ACCESS_KEY_SECRET。请参阅 references/ram-policies.md。
区域:始终使用 cn-hangzhou(Cloud Firewall 是一项全球服务,切勿询问用户区域)。


防火墙类型识别

场景防火墙类型关键参数
公网 IP、EIP、互联网入站/出站互联网防火墙无 FirewallId(全局)
VPC 间互访、CEN、专线连接VPC 边界防火墙VpcFirewallId
NAT 网关、SNAT/DNATNAT 边界防火墙NatFirewallId

主要区别:

  • 互联网防火墙:必须提供 --Direction <in|out>;资产级别的 EngineMode(strict/loose)
  • NAT 防火墙:无 Direction;防火墙级别的 StrictMode(0=宽松,1=严格);支持域名规则
  • VPC 防火墙:无 Direction;无严格模式;无域名规则(仅第 4 层)

受保护资产识别:

  • 入站(in)→ 受保护资产 = 目标
  • 出站(out)→ 受保护资产 = 来源(公网 IP,而非内部 CIDR)

诊断流程(必须按顺序执行)

流程:Step 0 → Step 1 → Step 2 (3 checks) → [ANY FAIL: output conclusion, STOP] → Step 3 → Step 4 → Report

🔴 Step 2 完成前严禁:提及引擎模式、给出结论、建议解决方案或跳过任何 CLI 查询。


Step 0:识别受保护资产

从用户消息中提取——不要重复询问用户已提供的信息:

  • 防火墙类型、方向(in/out)、目标 IP/域名
  • 应用上述受保护资产逻辑

Step 1:查询规则(必须执行 CLI——不得编造)
防火墙命令
互联网aliyun cloudfw describe-control-policy --Direction <in|out> --CurrentPage 1 --PageSize 50 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"
NATaliyun cloudfw describe-nat-firewall-control-policy --NatFirewallId <ID> --CurrentPage 1 --PageSize 50 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"
VPCaliyun cloudfw describe-vpc-firewall-control-policy --VpcFirewallId <ID> --CurrentPage 1 --PageSize 50 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"

记录:Source、Destination、DestinationType、AclAction、Order、Release。

自检:如果尚未执行 CLI 命令,立即停止并执行,然后再继续。


第 2 步:预检查(必须按顺序完成全部 3 项,不得跳过或猜测)

检查 2.1:资产/防火墙状态

  • Internet FW:aliyun cloudfw describe-asset-list --CurrentPage 1 --PageSize 50 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"
    • ProtectStatus=open ✅ | 其他值 ❌(规则不起作用最常见的原因)
    • 记录 EngineMode:strict / loose
  • NAT FW:aliyun cloudfw describe-nat-firewall-list --PageNo 1 --PageSize 50 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"
    • 检查防火墙是否存在且状态正常;记录 StrictMode:0=宽松 / 1=严格
  • VPC FW:aliyun cloudfw describe-vpc-firewall-list --CurrentPage 1 --PageSize 50 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"
    • 检查防火墙是否存在且状态正常

检查 2.2:策略与资产匹配

  • 源/目标是否涵盖受保护资产;方向是否正确
  • 如果用户的目标域名 ≠ 规则的域名 → 配置不匹配 — 必须明确指出

检查 2.3:规则已启用

  • Release=true ✅ | Release=false ❌

🔴 强制停止点 — 第 2 步分支关卡 — 必须停止

如果任一检查结果为失败:

  1. 立即停止 — 不得执行任何第 3 步或第 4 步 CLI 命令(如 describe-traffic-log 等)
  2. 禁止:此后调用任何其他 CLI 命令
  3. 直接跳转到“输出格式”部分并立即生成最终报告
  4. 检查失败后仍继续执行第 3/4 步属于严重违规,会导致任务失败

如果所有检查均通过 → 继续执行第 3 步。

权限被拒处理:记录受阻的检查,标记为 [Blocked - Permission Denied],继续其余检查(不要执行第 3/4 步)。在最终报告中列出所有受阻的检查。


第 3 步:查询流量日志(仅当第 2 步全部通过时)
# Internet FW
aliyun cloudfw describe-traffic-log --FirewallType InternetFirewall --Direction <in|out> \
  --SourceCode yundun [--StartTime <unix>] [--EndTime <unix>] [--SrcIP <ip>] [--DstIP <ip>] \
  --CurrentPage 1 --PageSize 10 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"

# NAT FW
aliyun cloudfw describe-traffic-log --FirewallType NatFirewall --SourceCode yundun \
  [--StartTime <unix>] [--EndTime <unix>] \
  --CurrentPage 1 --PageSize 10 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-acl-diagnosis/{{SESSION_ID}}"

重要:必须使用 SourceCode=yundun。不要设置 FlowType(会导致无结果)。RuleResult:0=允许,2=拒绝。
用户提供时间/IP 参数时,必须将其包含在查询中;不要先查询全部结果再手动筛选。


第 4 步:详细诊断(仅当第 2 步全部通过时)

Internet FW:

  1. EngineMode=loose + 域名规则 → 域名未匹配 → 切换到严格模式
  2. strict + 域名规则 → 使用 curl/wget 测试,不要使用 telnet(telnet 无法触发域名识别)
  3. 日志 AclPreState=app_unknown → L7 预匹配,应用尚未识别

NAT FW:

  1. StrictMode=0 + 域名规则 → 域名未匹配(可能是根本原因)
  2. 确认 SNAT 后的实际源 IP;与 Internet FW 一样,适用相同的 L7 规则

完整诊断框架、L7 预匹配机制和故障排查清单请参见 references/diagnosis.md。


输出格式

严格格式要求 — 必须在写出任何内容之前阅读:

  • 输出必须与下方模板完全一致 — 不得添加额外标题、问候语或背景段落
  • 输出总计不得超过 30 行。如果内容超过 30 行,请自动截断:
    • 诊断结论:最多 1 行
    • 预检查结果表:不超过 5 行
    • 修复建议:最多 3 个项目符号
    • 验证方法:1 行
    • 删除超出这些限制的所有解释性文字
  • ❌ 永远不要将输出写入任何文件 — 直接在对话中以 Markdown 文本输出
⚠️ Disclaimer: This tool is a read-only diagnostic assistant. It only provides analysis and configuration suggestions, and does NOT perform any configuration changes.

## Diagnosis Conclusion
[One-sentence root cause, max 50 characters]

## Pre-check Results (Step 2)
| Check Item | Actual CLI Value | Status |
|-----------|------------------|--------|
| ProtectStatus | [from describe-asset-list] | PASS/FAIL |
| EngineMode / StrictMode | [value] | loose/strict |
| Traffic Direction | [in/out] | PASS/FAIL |
| Release | [true/false] | PASS/FAIL |
| Policy Match | [analysis] | PASS/FAIL |

## Remediation Suggestions
[Console operation steps, one per line, max 3 items]

Verification Method: [one-line description]

规则:

  • ❌ 永远不要将输出写入任何文件 — 所有结果都必须直接在对话中以文本形式输出
  • 报告中的每个 UUID/IP/值都必须从 CLI 输出中复制粘贴(不得凭记忆输入)
  • 对发现进行分类:[Verified](CLI 已确认)/ [Unverified](理论推断)/ [Blocked](权限被拒)
  • 如果 TotalCount > PageSize,在作出“所有资产”相关总结前查询所有分页结果

参考文件

文件用途
references/cli_commands.md完整的 CLI 命令示例及关键响应字段
references/cli_traps.md常见的 CLI 陷阱和错误模式
references/diagnosis.md完整的诊断框架、L7 预匹配和检查清单
references/configuration_guide.md控制台配置指南(纯文本,供用户使用)
references/security_rules.md完整的安全禁令和输出检查清单
references/ram-policies.md所需的 RAM 权限
references/cfw_acl_knowledge.mdACL 知识库和常见问题

评论

支持 Markdown