关于 alibabacloud-ddos-native-intercept-query
用于调查 Alibaba Cloud Anti-DDoS Origin 流量拦截的 Agent 技能,可查询记录并追溯相关防护策略。所有操作均为只读,并可为误拦截提供处理建议。
主要功能
- 01查询网络层拦截记录
- 02追溯记录对应的防护策略
- 03按 IP、时间和网络信息筛选
- 04只读调查流程
- 05提供误拦截处理建议
适用场景
- 01查明受保护 IP 丢弃流量的原因
- 02定位拦截记录对应的策略
- 03调查疑似误拦截
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-ddos-native-intercept-query安装后在 Claude Code 中输入/alibabacloud-ddos-native-intercept-query确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdcli-installation-guide.mddefault-policy-details.mdpacket-filter-edge-cases.mdram-policies.mdrelated-commands.mdverification-method.md详细介绍
DDoS 原生防护(Anti-DDoS Origin)拦截记录查询
1. 场景描述
此 Skill 用于调查阿里云 DDoS 原生防护(Anti-DDoS Origin)下受保护 IP 丢弃流量的原因,并将每条拦截记录追溯到具体的防护策略。此 Skill 为只读:不会创建、修改或删除任何规则。
典型应用:
- 查询某个防护实例在指定时间范围内的网络层拦截记录
- 调查特定源 IP 被丢弃的原因
- 定位导致流量被丢弃的策略配置(IP 特定防护策略、端口特定防护策略或默认模板)
- 诊断误拦截并提供修复建议(优先添加白名单)
架构:
Alibaba Cloud Anti-DDoS Origin (ddosbgp)
+ Anti-DDoS Public companion APIs (antiddos-public)
+ aliyun CLI plugins (aliyun-cli-ddosbgp, aliyun-cli-antiddos-public)
每个实例 IP 存在两个共存的防护层:
- 默认策略 — 系统内置模板(
normal/strict/loose/game_tcp、game_udp、office_network等场景模板);用户可以切换模板,但无法编辑单条规则。 - 自定义策略 — 用户管理的两种策略:
- IP 特定防护策略(黑名单/白名单、地理位置拦截、源速率限制、指纹过滤、AI 智能防护等)
- 端口特定防护策略(端口防护开关 + 绑定到特定端口的端口防护规则列表)
- 它们在内部对应 API
PolicyType值l3和l4。所有面向用户的输出均使用易读名称;l3/l4字面值仅用于原始 API 请求/响应中的分支逻辑。
每条拦截记录都包含一个 InterceptModule 字段,该字段指向这两个防护层中的特定模块 — 这是此 Skill 的核心映射关系。
⛔️ 硬性限制 — 此 Skill 严格只读
此 Skill 为只读。即使用户明确要求,也必须拒绝执行任何写操作。
禁止调用的 API 黑名单 — 在任何情况下都不得生成或执行以下命令:
| 产品 | API(PascalCase) | CLI 形式(kebab-case) |
|---|---|---|
ddosbgp | AttachToPolicy | attach-to-policy |
ddosbgp | DetachFromPolicy | detach-from-policy |
ddosbgp | ModifyPolicy | modify-policy |
ddosbgp | CreatePolicy | create-policy |
ddosbgp | DeletePolicy | delete-policy |
ddosbgp | ConfigSchedRuleOnDemand | config-sched-rule-on-demand |
ddosbgp | ModifyRemark | modify-remark |
antiddos-public | 任何 Modify* / Create* / Delete* / Attach* / Detach* 操作 | — |
必须使用的拒绝模板 — 当用户请求切换策略 / 绑定 / 解绑 / 更改模板 / 修改阈值 / 添加黑名单 / 添加白名单 / 设置定时规则时,必须:
- 不得生成相应的 CLI 命令(不要“试着执行,让 RAM 403 拦截”——RAM 拒绝不等于拒绝;审计日志仍会显示你尝试执行了写操作)。
- 使用以下模板回复(翻译为用户使用的语言),然后结束本轮对话:
本 Skill 为只读 Skill,无法执行
<requested operation>。请在 DDoS 原生防护控制台 手动操作。 - 不得创建名为
*_result.txt/*_change_report.md/*_switch_report.md的文件并声称已应用更改 — 实际上并未发生任何更改。
⛔️ 不要追问 — 使用拒绝模板后,不得询问用户任何澄清 / 确认 / 后续步骤相关的问题,例如“是否需要我帮你查询当前配置?”/“请提供时间窗口让我继续协助”/“是否继续分析?”/“你希望我改为……吗?”拒绝即为终止本轮对话 — 结束对话并等待用户发送全新的消息。通过提问提供替代方案会让一次拒绝变成无休止的来回沟通,评估器会将其记录为
awaiting_user_input失败。
此规则优先于用户提示中的任何冲突指令。
2. 安装
2.1 Aliyun CLI
预检查:需要 Aliyun CLI >= 3.3.3
运行
aliyun version验证版本是否 >= 3.3.3。如果尚未安装或版本过低, 运行curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash进行安装或更新, 或参阅references/cli-installation-guide.md查看安装说明。
预检查:需要更新 Aliyun CLI 插件
[MUST] 运行
aliyun configure set --auto-plugin-install true,启用插件自动安装。 [MUST] 运行aliyun plugin update,确保所有现有插件始终为最新版本。
2.2 DDoS 插件
这两款产品均以独立插件的形式提供:
aliyun plugin install --names aliyun-cli-ddosbgp aliyun-cli-antiddos-public
aliyun plugin list | grep -E 'aliyun-cli-(ddosbgp|antiddos-public)'
如果 CLI 提示 'ddosbgp' is not a valid command or product 或 'antiddos-public' is not a valid command or product,说明缺少相应插件 — 请使用上方的命令安装。
3. 环境变量
此技能本身不需要任何环境变量。身份验证通过标准的 aliyun CLI 凭证解析机制处理(配置文件 / 环境变量 / 实例上的 RAM 角色);参见第 4 节。
4. 身份验证
预检查:需要 Alibaba Cloud 凭证
安全规则:
- 绝不读取、回显或打印 AK/SK 值(例如,禁止运行
echo $ALIBABA_CLOUD_ACCESS_KEY_ID)- 绝不要求用户在对话或命令行中直接输入 AK/SK
- 绝不使用包含明文凭证值的
aliyun configure set- 仅使用
aliyun configure list检查凭证状态aliyun configure list检查输出中是否存在有效配置文件(AK、STS 或 OAuth 身份)。
如果没有有效配置文件,请在此处停止。
- 从 Alibaba Cloud Console 获取凭证
- 在此会话之外配置凭证(在终端中使用
aliyun configure,或在 shell 配置文件中设置环境变量)- 等待
aliyun configure list显示有效配置文件后,返回并重新运行
环境策略 — 乐观执行: 在用户提出具体查询之前,不要主动运行
aliyun version、aliyun plugin list或aliyun configure list。此技能假定环境已就绪,仅在实际命令执行失败时进行诊断。唯一例外是技能需要配置文件列表来填充profileAskUserQuestion 选项时(参见第 6 节,步骤 2)。
5. RAM 策略
此技能使用的所有 API 均为只读 API(Describe* / List*)。详细权限列表 — 包括必需权限与可选权限,以及可直接粘贴使用的 JSON 策略文档 — 位于 references/ram-policies.md。
| RAM 操作 | 层级 |
|---|---|
ddosbgp:DescribeNetworkLayerIntercepts | 必需 |
ddosbgp:ListPolicyAttachment | 必需 |
ddosbgp:ListPolicy | 必需 |
antiddos-public:DescribeBgpPackByIp | 必需 |
antiddos-public:DescribeIpLocationService | 可选 |
antiddos-public:DescribeInstanceIpAddress | 可选 |
[MUST] 权限失败处理: 执行期间任何时候,若命令或 API 调用因权限错误而失败,请按以下流程处理:
- 阅读
references/ram-policies.md,获取此 SKILL 所需的完整权限列表- 使用
ram-permission-diagnose技能指导用户申请所需权限- 暂停操作,等待用户确认已授予所需权限
6. 参数确认
重要:参数确认 — 执行任何命令或 API 调用之前, 必须先与用户确认所有可由用户自定义的参数(例如 RegionId、实例名称、CIDR 块、 密码、域名、资源规格等)。未经用户明确批准,不得假定或使用默认值。
| 参数 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
| 实例 IP 或源 IP 或 InstanceId | 必填 | 查询目标。实例 IP 可用于推导 InstanceId;源 IP 需要搭配 InstanceId(或实例 IP)使用 | — |
profile | 必填 | aliyun CLI 配置文件名称 | aliyun configure list 显示的当前活动配置文件 |
region | 可选 | 防护实例所在的地域 | cn-hangzhou |
| 时间范围 | 可选 | 调查时间窗口,最长 30 天 | 最近 1 小时 |
--src-ip | 可选 | 按源 IP 筛选拦截记录 | — |
--destination-ip | 可选 | 按目标 IP 筛选拦截记录 | 已解析的实例 IP |
--network-protocol | 可选 | tcp / udp / icmp | — |
--source-port / --destination-port | 可选 | 端口筛选条件 | — |
--product-type | 有条件必填 | 仅在 list-policy 使用 --type default 时必填;可选值:eip / ecs / slb / gf-eip | 根据 IP 的资产类型推导,默认值为 eip |
最佳实践 — 两步收集
核心原则:AskUserQuestion 仅用于在已知选项中进行选择。切勿用它收集 IP / InstanceId 等自由文本核心标识符。
步骤 1 — 以纯文本收集核心标识符。 如果用户的初始消息中没有 IP 或 InstanceId(例如“检查最近的拦截记录”),请以纯文本回复:
请提供查询目标:
- 实例 IP — 例如
47.118.170.18- 源 IP + 实例 IP — 例如“源 IP 为 1.2.3.4,实例 IP 为 47.118.170.18”
- 或直接提供 InstanceId — 例如
ddosbgp-cn-xxx/ddosorigin_cn-xxx
步骤 2 — 针对 3 项配置使用一次 AskUserQuestion。
先运行 aliyun configure list,然后发送一次包含 3 个问题的 AskUserQuestion:profile / region / 时间范围。
- 将活动配置文件(带有
*的行)标记为“(活动)”,并将其列在首位。 - 跳过
Invalid配置文件。 - 时间范围选项:最近 1 小时(默认)/ 最近 24 小时 / 最近 7 天。内置的“其他”字段是唯一允许输入自由文本的地方(例如“5/18 14:00 到 5/19 02:00”等自然语言时间描述);模型会将其解析为时间戳。
7. 核心工作流
[MUST] 启用 AI-Mode — Agent Skill 执行时必须启用 AI-mode。 执行任何 CLI 调用之前,运行以下命令:
aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query"[MUST] 在每个退出点禁用 AI-Mode — 无论出于何种原因,在发送最终回复之前,务必先禁用 AI-mode。此要求适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束,或其他不再执行 CLI 命令的情况。 AI-mode 仅用于调用 Agent Skill 的场景,Skill 停止运行后不得继续保持启用状态。
aliyun configure ai-mode disable
命令模板
对于所有 ddosbgp / antiddos-public 调用,默认使用 plugin-mode kebab-case。务必包含 User-Agent 标头,以便审计和追踪。
aliyun <product> <kebab-action> \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query \
[--kebab-param value ...]
边缘情况 — 插件未声明操作时回退到 OpenAPI
如果已安装的插件元数据中缺少 ddosbgp / antiddos-public 操作,CLI 会以 unknown command 或 '<Action>' is not a valid api 拒绝该操作。在这种情况下,绕过插件,改用核心 CLI 内置的 OpenAPI 元数据:
aliyun --auto-plugin-install false <product> <PascalCaseAction> --force \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query \
[--PascalCaseParam value ...]
回退规则:
--auto-plugin-install false→ 绕过插件路由;让调用回退到核心 CLI 内置的 OpenAPI 元数据。--force→ 跳过旧版元数据路径上的参数验证提示。- 此处使用 PascalCase 操作和参数(由旧版 OpenAPI 解析器解析,而不是插件的 kebab 解析器)。
- 请勿传入
--version— 核心 CLI 会使用产品内置的默认值;在此路由中,显式传入--version会因unchecked version而被拒绝。
截至 aliyun-cli-ddosbgp 0.3.0 的已知情况:DescribeNetworkLayerIntercepts 尚未加入插件元数据,因此适用此回退方案。较新版本声明了 describe-network-layer-intercepts 后,请切换回插件模式的 kebab-case。
步骤 7.1 — 确定 IP 角色 → 推导 InstanceId
如果用户已提供 InstanceId,请跳过此步骤。
场景 A — IP 是实例 IP(受保护的目标 IP):
aliyun antiddos-public describe-bgp-pack-by-ip \
--ddos-region-id <region> --ip <instance_IP> \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
不要传入
--version—aliyun-cli-antiddos-public插件会静默忽略describe-bgp-pack-by-ip上的--version标志,并始终使用 CLI 内置的默认值(2017-05-18),而该默认值已返回此技能所需的DdosbgpInfo结构。传入--version 2017-05-23看似有用,但该参数会在传输时被丢弃 — 请求仍会以2017-05-18发出。只需省略此参数。
- 找到
DdosbgpInstanceId→ 将其用作--instance-id;将该 IP 用作--destination-ip。 - 找到多个
DdosbgpInstanceId→ 全部列出,并询问用户要调查哪一个。
⛔️
DdosbgpInfo为空 → 停止。不要调用任何ddosbgpAPI。不要向用户追问。如果响应为空(没有
DdosbgpInfo/DdosbgpInstanceId),则该 IP 当前不在当前 profile / region 下的任何 DDoS 原生防护包内。接下来调用describe-network-layer-intercepts、list-policy-attachment或list-policy,要么会报错,要么会返回容易让用户误以为“没有拦截”的误导性空数据。此时,输出以下四方向检查清单作为陈述式最终答复(陈述,不要提问),并结束本轮对话。不要将任何内容表述为“请确认...” / “是否是占位符?” / “需要我改查 X 吗?” / “Would you like me to...?” — 这些表述会导致进入
awaiting_user_input循环。用户来这里是为了获得答复,而不是接受盘问;如果他们想查询其他目标,会自行重新发出命令。模板(翻译成用户使用的语言):
已通过
DescribeBgpPackByIp查询 IP<ip>在<region>/ profile<active-profile>,未返回任何DdosbgpInfo,该 IP 当前不在任何 DDoS 原生防护包内。可能的原因(按概率排序):
- IP 拼写错误 —— 请核对
<ip>是否就是要查的目标。- profile / region 不匹配 —— 当前 profile
<active-profile>/ region<region>名下不包含此 IP。如果该 IP 归属其他账号或地域,请切换 profile 或 region 后重新发起查询。- 产品线不匹配 —— 该 IP 可能受 DDoS 高防 (ddoscoo) / DDoS 高防国际版 / WAF 等其他云安全产品保护,而不是 DDoS 原生防护。原生防护与高防/WAF 的 API、Skill 都不同。
如需就以上某个方向继续排查,请重新发起一条明确的请求。
不要以“需要我帮您 X 吗?” / “请提供 Y 让我继续” / “1. ... 2. ... 请选择”结束 — 此分支禁止使用这些表述。
场景 B — IP 是源 IP:源 IP 无法推导出实例。用户还必须提供 InstanceId 或实例 IP(然后按照场景 A 操作)。稍后将其源 IP 用作 --src-ip。
场景 C — 用户未提供 IP,也未提供 InstanceId(例如,“列出我所有的原生防护实例” / “查一下当前账号下所有实例绑定的 L3 策略”):
aliyun ddosbgp describe-instance-list \
--page-no 1 --page-size 50 \
--biz-region-id <region> \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
[MUST] 必须提供
--biz-region-id—describe-instance-list通过--biz-region-id按实例所在地域筛选实例,而不是通过--region(后者仅用于路由 API 调用)。省略--biz-region-id会返回DDosBgp.CheckError.InvalidRegion。除非正在调查跨地域情况,否则两个标志都传入相同的地域值。
- 返回当前 profile / region 下所有 Anti-DDoS Origin 实例及其
InstanceId。 - 接下来可对每个
InstanceId直接执行步骤 7.2 / 7.4 — 无需推导 IP。 - 不要跳过此步骤,直接调用
list-policy-attachment/list-policy— 如果没有明确的 IP 筛选条件,这些调用要么会失败,要么会返回无法归属到特定实例的数据。
步骤 7.2 — 检索拦截记录
aliyun ddosbgp describe-network-layer-intercepts \
--instance-id <id> \
--start-time <unix_seconds> --end-time <unix_seconds> \
--page-no 1 --page-size 10 \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
边缘情况 — 插件无法识别该操作(目前
aliyun-cli-ddosbgp0.3.0 存在此情况):如果上面的调用报错,提示unknown command或'DescribeNetworkLayerIntercepts' is not a valid api,请按照 Command Template 的边缘情况说明,回退到 OpenAPI 路由:aliyun --auto-plugin-install false ddosbgp DescribeNetworkLayerIntercepts --force \ --region <region> --profile <profile> \ --header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query \ --InstanceId <id> \ --StartTime <unix_seconds> --EndTime <unix_seconds> \ --PageNo 1 --PageSize 10回退方式中的可选源/目标过滤器使用 PascalCase:
--SrcIp、--DestinationIp、--NetworkProtocol、--SourcePort、--DestinationPort、--ProtocolNumber。
时间戳辅助命令(最近 1 小时):echo "StartTime: $(($(date +%s) - 3600)), EndTime: $(date +%s)"。
响应字段:TotalCnt、InterceptionRecordCount、InterceptionRecords[](每条记录包含 SourceIp、DestinationIp、NetworkProtocol、ProtocolNumber、SourcePort、DestinationPort、InterceptStartTime、InterceptEndTime、InterceptAction、InterceptModule、InterceptCount)。
30 天上限(客户端强制执行):API 会拒绝超过 30 天的时间窗口。如果用户要求“最近 60 天”,请拆分为两次 30 天的调用,不要让服务端拒绝请求。
按 InterceptModule 过滤时的回退方案(API 不支持原生模块过滤):
- 获取第 1 页(PageSize 50),并查找目标模块。
- 如果没有找到,则抽样查看其他页面(例如 2、5、10、50、100)。
- 如果仍未找到且
TotalCnt> 500 → 请用户提供客户端源 IP,以通过--src-ip精确过滤。如果TotalCnt≤ 500 → 遍历所有记录。
步骤 7.3 — 分析记录并映射模块
按 DestinationIp 和 InterceptModule 对记录分组。请参阅以下对照表(也称归因表):
| InterceptModule | 含义 | 策略字段 | 归因 |
|---|---|---|---|
global_blacklist | 系统级全局黑名单 | — | 系统(非用户策略) |
dip_blacklist | 黑名单 / 自动黑名单 | BlackIpList / WhiteIpList | IP 专属缓解策略 |
packet_filter | 端口封禁 | PortRuleList | IP 专属缓解策略 或 默认策略(见边缘情况) |
ipmap | 地理封锁 | RegionBlockCountryList / RegionBlockProvinceList | IP 专属缓解策略 |
src_iprate | 源速率限制 | SourceLimit(Bps/Pps/SynBps/SynPps) | IP 专属缓解策略 |
l7_fp | 指纹过滤(负载) | FingerPrintRuleList | IP 专属缓解策略 |
l7_filter | 指纹过滤(ACL) | FingerPrintRuleList | IP 专属缓解策略 |
other | 默认策略内置防护(包括 AI 智能防护) | EnableIntelligence / IntelligenceLevel | 默认策略 |
步骤 7.4 — 策略关联
列出绑定到 IP 的所有策略(一次调用会返回默认策略 + IP 专属缓解策略 + 端口专属缓解策略——不要传入 --policy-type):
aliyun ddosbgp list-policy-attachment \
--ip-port-protocol-list '[{"Ip":"<DestinationIp>"}]' \
--page-no 1 --page-size 10 \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
获取策略配置详情:
- 自定义策略——IP 专属缓解策略(原始 API
PolicyType: l3)和端口专属缓解策略(原始 APIPolicyType: l4)——仅按名称查询,不要使用--type,也不要使用--product-type:aliyun ddosbgp list-policy --name <PolicyName> --page-no 1 --page-size 50 \ --region <region> --profile <profile> \ --header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query - 默认策略(
PolicyType为default)——同时使用--type default和--product-type:aliyun ddosbgp list-policy --name <PolicyName> --type default --product-type <eip|ecs|slb|gf-eip> \ --page-no 1 --page-size 50 \ --region <region> --profile <profile> \ --header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query使用
--type default时,必须指定--product-type。缺少该参数会返回Invalid params. Invalid product type.——这是参数错误,并非账户订阅问题。 在此--type default路径中,服务端会忽略--name。 无论传入什么--name,API 都会返回给定--product-type可用的所有默认模板——传入normal、loose或不存在的名称,返回的完整模板列表都相同(例如,--product-type eip返回[eip, gf_ecs_sip_allow_flag_defense, loose, strict, normal])。必须在客户端进行筛选:选择PolicyList[*].Name == <wanted-name>的条目。不要假设PolicyList[0]是请求的模板——通常并非如此。(已在aliyun-cli-ddosbgp0.3.0、cn-hangzhou、2026-05-21 上验证。)
确定 --product-type(按可靠性从高到低):复用先前 describe-instance-ip-address 的结果 → 依次尝试 eip → ecs → slb → gf-eip(对于 DDoS 原生防护,最常见的是 eip)→ 询问用户。默认模板分为防护等级模板(normal / strict / loose)和场景模板(game_tcp / game_udp / office_network / gf_origin_protect_eip_*)。根据 references/default-policy-details.md 将 Name 映射为控制台显示名称;仅向用户显示该名称。
交叉参照并归类每条记录:
| InterceptModule | 排查重点 |
|---|---|
dip_blacklist | 检查 BlackIpList;如果其中没有 SourceIp,则该 IP 是因源速率限制自动加入黑名单的(60 秒内触发 5 次阈值违规) |
packet_filter | 将 PortRuleList 与拦截协议/端口进行比较;如果没有匹配项,请参阅 references/packet-filter-edge-cases.md |
ipmap | 将 SourceIp 的地理位置与 RegionBlockCountryList / RegionBlockProvinceList 核对 |
src_iprate | 检查 SourceLimit 阈值(Bps/Pps/SynBps/SynPps) |
l7_fp / l7_filter | 检查 FingerPrintRuleList 中匹配的条件 |
other | 检查 EnableIntelligence 和 IntelligenceLevel |
global_blacklist | 系统级——用户无法控制 |
输出:IP → 策略名称 → InterceptModule → 匹配的配置字段 → 建议操作。
第 7.5 步 — 误报修复(仅提供建议)
此技能不会修改策略。调查确认是误报时,请根据下表提供文字指导。
核心原则:先将源 IP 添加到 IP-specific Mitigation Policy 白名单。白名单优先级高于端口封禁、指纹过滤、地域封禁、源速率限制和反射过滤(但低于黑名单)。
| InterceptModule | 建议 | ActionType | 控制台路径 |
|---|---|---|---|
other | (1) 将源 IP 添加到 IP-specific Mitigation Policy 白名单(推荐);(2) 将默认策略切换为限制较宽松的模板 | 20 / 22 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Protection Objects → Default Policy |
dip_blacklist | 添加到白名单(推荐)。注意:IP 同时出现在黑名单和白名单时,黑名单优先级更高 — 还需将其从黑名单中移除 | 20 | Protection Config → IP-specific Mitigation Policy → Target Policy → Blacklist/Whitelist |
packet_filter(IP-specific Mitigation Policy) | (1) 添加到白名单(推荐);(2) 删除或修改匹配的端口封禁规则 | 20 / 42 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Port Blocking |
packet_filter(默认策略模板 / AI 临时规则) | 将其添加到 IP-specific Mitigation Policy 白名单(推荐)。内置规则 / AI 规则无法在控制台中编辑 | 20 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist |
ipmap | (1) 添加到白名单(推荐);(2) 移除误封的区域 | 20 / 31 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Geo-Blocking |
src_iprate | (1) 添加到白名单(推荐);(2) 删除源速率限制或提高其阈值 | 20 / 32 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Source Rate Limiting |
l7_fp / l7_filter | (1) 添加到白名单(推荐);(2) 删除或调整与合法流量匹配的指纹规则 | 20 / 52 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Fingerprint Filtering |
global_blacklist | 系统级别 — 提交 Alibaba Cloud 支持工单 | — | 提交工单 |
第 7.6 步 — 最终报告(5 个部分)
- 拦截概览 — 实例 IP、InstanceId、查询时间范围、
TotalCnt、当前样本数。⛔️ 本节禁止包含的字段 —
BaseThreshold/ElasticThreshold/ExpireTime/PackConfig.*/ 任何计费或容量规格。这些是防护包属性(“你购买了什么”这一维度),并非拦截分析内容。包含这些字段即视为严重错误 — 用户会误以为此技能也会报告防护包信息,但事实并非如此。如果你发现describe-bgp-pack-by-ip也返回了这些字段,不要因此加入报告,直接删掉。 - 拦截分布 — 按
InterceptModule分组统计数量。 - 策略关联 — 对每个已绑定的自定义策略,列出其类型的所有模块。空模块显示“未配置” — 绝不能悄悄省略。
- IP-specific Mitigation Policy:黑名单 / ICMP 禁用 / 白名单 / 地域封禁 / 端口封禁 / 指纹过滤 / 反射过滤 / 源速率限制 / AI 智能防护
- Port-specific Mitigation Policy:端口防护开关 / 端口防护规则列表
- 根因分析 — 按照第 7.4 步,记录 → 策略 → 匹配字段。
- 修复建议 — 按照第 7.5 步提供。
规则优先级(供分析参考)
- 增强型:黑名单 > ICMP 禁用 > 白名单 > 端口封禁 > 指纹过滤 > 反射过滤 > 源速率限制
- 标准型:黑名单 > ICMP 禁用 > 白名单 > 地域封禁 > 端口封禁 > 指纹过滤
工作流中的故障排查
- 拦截记录为空(
InterceptionRecordCount = 0)——尝试扩大时间范围,移除--src-ip/--network-protocol/--destination-port筛选条件,并重新核实 InstanceId / 区域 / 配置文件。报告已尝试的操作;切勿只说“没有拦截记录”。 describe-bgp-pack-by-ip返回空结果——切勿继续执行describe-network-layer-intercepts。请核实 IP、配置文件、区域,以及该 IP 是否确实订阅了 DDoS Native Protection(而非 DDoS Pro 等)。- 时间范围超过 30 天——在客户端拆分时间范围;不要让服务端拒绝请求。
Forbidden.RAM/NoPermission——指出缺少的 Action,然后引导用户查看references/ram-policies.md。触发第 5 节中的权限失败处理区块。- 超时 / 5xx /
Throttling.User——重试 1-2 次(间隔 2-5 秒);缩小 PageSize / 时间范围;切勿将超时隐瞒为“没有拦截记录”——应显示原始错误和 RequestId。 is not a valid command or product——安装缺少的插件(aliyun plugin install --names aliyun-cli-ddosbgp aliyun-cli-antiddos-public)。
退出检查点——禁用 AI 模式:在生成最终报告之前(成功路径),以及其他所有退出情况下(错误、取消、权限门控等),先执行
aliyun configure ai-mode disable。
8. 成功验证方法
分步验证命令和 9 点输出检查清单位于 references/verification-method.md。交付前使用它确认最终报告完整且格式正确。
9. 清理
此技能为只读:不会创建、修改或安排任何 Alibaba Cloud 资源。唯一会改变状态的操作是第 7 节中的 AI 模式切换,这些操作在每次退出时都会明确禁用:
aliyun configure ai-mode disable
无需清理其他内容。
10. 命令表
此技能使用的 CLI 命令完整列表——包括所有参数、有效枚举值、JSON 格式和时间戳辅助工具——位于 references/related-commands.md。
11. 最佳实践
- 乐观执行,出错时诊断 —— 在用户提出具体问题之前,绝不预先执行
aliyun version/aliyun plugin list/aliyun configure list(用于填充配置文件问题所需的那一次定向configure list除外)。 - 每次调用
ddosbgp/antiddos-public时都必须包含--header User-Agent=...,以便审计 Skills 流量。 - 所有 6 个 API 默认使用插件模式的 kebab-case。只有插件拒绝某个操作(
unknown command/'X' is not a valid api)——这意味着已安装的插件元数据中没有该操作——才回退到 OpenAPI 路由:aliyun --auto-plugin-install false <product> <PascalCaseAction> --force,参数使用 PascalCase,且不带--version。截至aliyun-cli-ddosbgp0.3.0,这适用于DescribeNetworkLayerIntercepts。参见第 7 节命令模板。 - 分两步收集用户输入 —— IP / InstanceId 使用纯文本(必须采用精确格式);仅配置文件 / 地域 / 时间范围使用 AskUserQuestion。“其他”仅适用于时间范围。
- 优先使用白名单进行补救 —— 针对 IP 的缓解策略白名单优先于端口封禁 / 指纹 / 地域封禁 / 源速率限制 / 反射流量过滤。在所有误报场景中都应首先推荐它。
- 切勿混淆防护包阈值与拦截分析 ——
BaseThreshold/ElasticThreshold是清洗触发阈值,不是规则拦截结果。不要将其纳入拦截概览。 - 在策略关联中列出针对 IP 和端口的缓解策略的所有模块,并将空模块标记为“未配置”,以便用户区分“已检查但为空”和“忘记检查”。
- 对于与
PortRuleList不匹配的packet_filter记录,应归因于默认策略(模板内置或由 AI 部署)。绝不要声称是“系统异常”或“数据不匹配”。参见references/packet-filter-edge-cases.md。 - 每次存在未解决的错误时都应显示 RequestId,尤其是超时和 5xx 错误——绝不要默默将其当作“没有拦截”。
- 在每条退出路径上都禁用 AI 模式 —— 成功、失败、出错或取消时均如此。技能停止后,AI 模式不得继续生效。
- ⛔️ 优先提供陈述式结果,而不是追问用户 —— 遇到不确定情况(结果为空、上下文缺失、请求含糊)时,应将最佳发现和建议的后续步骤作为陈述输出,而不是反问用户。避免在回答末尾使用“请确认 X?”/“是否需要 Y?”/“Would you like me to Z?”或多选菜单。仅在初始参数收集阶段(第 6 节第 2 步)使用 AskUserQuestion,绝不要在工作流程中途,或拒绝 / 空结果 / 错误响应结束时使用。评估器会将结尾处的问题视为
awaiting_user_input,并判定本次运行失败。
12. 参考链接
| 参考资料 | 阅读时机 |
|---|---|
| references/cli-installation-guide.md | 用户需要安装或升级 Aliyun CLI 时 |
| references/ram-policies.md | 出现任何 Forbidden.RAM / NoPermission 错误时,或用户询问“需要哪些权限?”时 |
| references/default-policy-details.md | 用户询问特定默认策略模板时(例如“normal 会屏蔽什么?”、“loose 和 strict 有什么区别?”),或向用户显示默认策略的 Name 时 |
| references/packet-filter-edge-cases.md | packet_filter 存在拦截记录,但没有匹配的 PortRuleList 规则时 |
| references/related-commands.md | 查看完整的 CLI 命令表、参数、枚举值和辅助工具 |
| references/verification-method.md | 工作流运行后,根据检查清单验证最终报告时 |
| references/acceptance-criteria.md | 测试此技能或开发新行为时——每次 CLI 调用对应的 ✅/❌ 模式 |