mcpField
A
alibabacloud-ddos-native-intercept-query

alibabacloud-ddos-native-intercept-query

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

关于 alibabacloud-ddos-native-intercept-query

用于调查 Alibaba Cloud Anti-DDoS Origin 流量拦截的 Agent 技能,可查询记录并追溯相关防护策略。所有操作均为只读,并可为误拦截提供处理建议。

主要功能

  1. 01查询网络层拦截记录
  2. 02追溯记录对应的防护策略
  3. 03按 IP、时间和网络信息筛选
  4. 04只读调查流程
  5. 05提供误拦截处理建议

适用场景

  1. 01查明受保护 IP 丢弃流量的原因
  2. 02定位拦截记录对应的策略
  3. 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.md
cli-installation-guide.md
default-policy-details.md
packet-filter-edge-cases.md
ram-policies.md
related-commands.md
verification-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)
ddosbgpAttachToPolicyattach-to-policy
ddosbgpDetachFromPolicydetach-from-policy
ddosbgpModifyPolicymodify-policy
ddosbgpCreatePolicycreate-policy
ddosbgpDeletePolicydelete-policy
ddosbgpConfigSchedRuleOnDemandconfig-sched-rule-on-demand
ddosbgpModifyRemarkmodify-remark
antiddos-public任何 Modify* / Create* / Delete* / Attach* / Detach* 操作—

必须使用的拒绝模板 — 当用户请求切换策略 / 绑定 / 解绑 / 更改模板 / 修改阈值 / 添加黑名单 / 添加白名单 / 设置定时规则时,必须:

  1. 不得生成相应的 CLI 命令(不要“试着执行,让 RAM 403 拦截”——RAM 拒绝不等于拒绝;审计日志仍会显示你尝试执行了写操作)。
  2. 使用以下模板回复(翻译为用户使用的语言),然后结束本轮对话:

    本 Skill 为只读 Skill,无法执行 <requested operation>。请在 DDoS 原生防护控制台 手动操作。

  3. 不得创建名为 *_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 身份)。

如果没有有效配置文件,请在此处停止。

  1. 从 Alibaba Cloud Console 获取凭证
  2. 在此会话之外配置凭证(在终端中使用 aliyun configure,或在 shell 配置文件中设置环境变量)
  3. 等待 aliyun configure list 显示有效配置文件后,返回并重新运行

环境策略 — 乐观执行: 在用户提出具体查询之前,不要主动运行 aliyun version、aliyun plugin list 或 aliyun configure list。此技能假定环境已就绪,仅在实际命令执行失败时进行诊断。唯一例外是技能需要配置文件列表来填充 profile AskUserQuestion 选项时(参见第 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 调用因权限错误而失败,请按以下流程处理:

  1. 阅读 references/ram-policies.md,获取此 SKILL 所需的完整权限列表
  2. 使用 ram-permission-diagnose 技能指导用户申请所需权限
  3. 暂停操作,等待用户确认已授予所需权限

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 为空 → 停止。不要调用任何 ddosbgp API。不要向用户追问。

如果响应为空(没有 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 原生防护包内。可能的原因(按概率排序):

  1. IP 拼写错误 —— 请核对 <ip> 是否就是要查的目标。
  2. profile / region 不匹配 —— 当前 profile <active-profile> / region <region> 名下不包含此 IP。如果该 IP 归属其他账号或地域,请切换 profile 或 region 后重新发起查询。
  3. 产品线不匹配 —— 该 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-ddosbgp 0.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. 获取第 1 页(PageSize 50),并查找目标模块。
  2. 如果没有找到,则抽样查看其他页面(例如 2、5、10、50、100)。
  3. 如果仍未找到且 TotalCnt > 500 → 请用户提供客户端源 IP,以通过 --src-ip 精确过滤。如果 TotalCnt ≤ 500 → 遍历所有记录。
步骤 7.3 — 分析记录并映射模块

按 DestinationIp 和 InterceptModule 对记录分组。请参阅以下对照表(也称归因表):

InterceptModule含义策略字段归因
global_blacklist系统级全局黑名单—系统(非用户策略)
dip_blacklist黑名单 / 自动黑名单BlackIpList / WhiteIpListIP 专属缓解策略
packet_filter端口封禁PortRuleListIP 专属缓解策略 或 默认策略(见边缘情况)
ipmap地理封锁RegionBlockCountryList / RegionBlockProvinceListIP 专属缓解策略
src_iprate源速率限制SourceLimit(Bps/Pps/SynBps/SynPps)IP 专属缓解策略
l7_fp指纹过滤(负载)FingerPrintRuleListIP 专属缓解策略
l7_filter指纹过滤(ACL)FingerPrintRuleListIP 专属缓解策略
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)和端口专属缓解策略(原始 API PolicyType: 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-ddosbgp 0.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 / 22Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Protection Objects → Default Policy
dip_blacklist添加到白名单(推荐)。注意:IP 同时出现在黑名单和白名单时,黑名单优先级更高 — 还需将其从黑名单中移除20Protection Config → IP-specific Mitigation Policy → Target Policy → Blacklist/Whitelist
packet_filter(IP-specific Mitigation Policy)(1) 添加到白名单(推荐);(2) 删除或修改匹配的端口封禁规则20 / 42Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Port Blocking
packet_filter(默认策略模板 / AI 临时规则)将其添加到 IP-specific Mitigation Policy 白名单(推荐)。内置规则 / AI 规则无法在控制台中编辑20Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist
ipmap(1) 添加到白名单(推荐);(2) 移除误封的区域20 / 31Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Geo-Blocking
src_iprate(1) 添加到白名单(推荐);(2) 删除源速率限制或提高其阈值20 / 32Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Source Rate Limiting
l7_fp / l7_filter(1) 添加到白名单(推荐);(2) 删除或调整与合法流量匹配的指纹规则20 / 52Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Fingerprint Filtering
global_blacklist系统级别 — 提交 Alibaba Cloud 支持工单—提交工单
第 7.6 步 — 最终报告(5 个部分)
  1. 拦截概览 — 实例 IP、InstanceId、查询时间范围、TotalCnt、当前样本数。

    ⛔️ 本节禁止包含的字段 — BaseThreshold / ElasticThreshold / ExpireTime / PackConfig.* / 任何计费或容量规格。这些是防护包属性(“你购买了什么”这一维度),并非拦截分析内容。包含这些字段即视为严重错误 — 用户会误以为此技能也会报告防护包信息,但事实并非如此。如果你发现 describe-bgp-pack-by-ip 也返回了这些字段,不要因此加入报告,直接删掉。

  2. 拦截分布 — 按 InterceptModule 分组统计数量。
  3. 策略关联 — 对每个已绑定的自定义策略,列出其类型的所有模块。空模块显示“未配置” — 绝不能悄悄省略。
    • IP-specific Mitigation Policy:黑名单 / ICMP 禁用 / 白名单 / 地域封禁 / 端口封禁 / 指纹过滤 / 反射过滤 / 源速率限制 / AI 智能防护
    • Port-specific Mitigation Policy:端口防护开关 / 端口防护规则列表
  4. 根因分析 — 按照第 7.4 步,记录 → 策略 → 匹配字段。
  5. 修复建议 — 按照第 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. 最佳实践

  1. 乐观执行,出错时诊断 —— 在用户提出具体问题之前,绝不预先执行 aliyun version / aliyun plugin list / aliyun configure list(用于填充配置文件问题所需的那一次定向 configure list 除外)。
  2. 每次调用 ddosbgp / antiddos-public 时都必须包含 --header User-Agent=...,以便审计 Skills 流量。
  3. 所有 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-ddosbgp 0.3.0,这适用于 DescribeNetworkLayerIntercepts。参见第 7 节命令模板。
  4. 分两步收集用户输入 —— IP / InstanceId 使用纯文本(必须采用精确格式);仅配置文件 / 地域 / 时间范围使用 AskUserQuestion。“其他”仅适用于时间范围。
  5. 优先使用白名单进行补救 —— 针对 IP 的缓解策略白名单优先于端口封禁 / 指纹 / 地域封禁 / 源速率限制 / 反射流量过滤。在所有误报场景中都应首先推荐它。
  6. 切勿混淆防护包阈值与拦截分析 —— BaseThreshold / ElasticThreshold 是清洗触发阈值,不是规则拦截结果。不要将其纳入拦截概览。
  7. 在策略关联中列出针对 IP 和端口的缓解策略的所有模块,并将空模块标记为“未配置”,以便用户区分“已检查但为空”和“忘记检查”。
  8. 对于与 PortRuleList 不匹配的 packet_filter 记录,应归因于默认策略(模板内置或由 AI 部署)。绝不要声称是“系统异常”或“数据不匹配”。参见 references/packet-filter-edge-cases.md。
  9. 每次存在未解决的错误时都应显示 RequestId,尤其是超时和 5xx 错误——绝不要默默将其当作“没有拦截”。
  10. 在每条退出路径上都禁用 AI 模式 —— 成功、失败、出错或取消时均如此。技能停止后,AI 模式不得继续生效。
  11. ⛔️ 优先提供陈述式结果,而不是追问用户 —— 遇到不确定情况(结果为空、上下文缺失、请求含糊)时,应将最佳发现和建议的后续步骤作为陈述输出,而不是反问用户。避免在回答末尾使用“请确认 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.mdpacket_filter 存在拦截记录,但没有匹配的 PortRuleList 规则时
references/related-commands.md查看完整的 CLI 命令表、参数、枚举值和辅助工具
references/verification-method.md工作流运行后,根据检查清单验证最终报告时
references/acceptance-criteria.md测试此技能或开发新行为时——每次 CLI 调用对应的 ✅/❌ 模式

评论

支持 Markdown