DDoS 安全产品巡检与监控

本 Skill 通过阿里云 CLI 直接 OpenAPI 调用(不使用任何脚本或 SDK)对阿里云账号下的 DDoS 安全产品执行安全巡检。

架构antiddos-public(基础防护) + ddosbgp(原生防护) + ddoscoo(高防) -> CLI OpenAPI -> 巡检报告

产品与 API 概览

产品CLI 代码用例
DDoS 基础防护antiddos-publicECS/SLB 默认免费防护,地域参数:--ddos-region-id
DDoS 原生防护ddosbgp付费升级,原生 IP 级防护,地域参数:--biz-region-id--region
DDoS 高防ddoscoo专用高防 IP,四层/七层防护,地域参数:--region
[必须] 严格产品路由隔离:三个产品的 API 绝不能混用。绝不用 ddoscoo API 替代 ddosbgp 查询,反之亦然。如果检测到混用,立即中止。
[必须] ddosbgp endpoint 路由ddosbgp describe-instance-list 默认 endpoint 支持中国大陆地域。你必须为所有 describe-instance-list 调用指定 --endpoint ddosbgp.cn-hangzhou.aliyuncs.com
[必须] 易混淆 API 警告
| 场景 | 正确命令 | 错误命令(禁止) |
|----------|----------------|--------------------------|
| 原生防护攻击事件 | ddosbgp describe-ddos-event(单数) | ~~ddoscoo describe-ddos-events~~ |
| 高防攻击事件 | ddoscoo describe-ddos-events(复数) | ~~ddosbgp describe-ddos-event~~ |

预检查

需要 Aliyun CLI >= 3.3.3 —— 见 CLI 安装指南
需要凭证 —— 见 CLI 凭证设置。运行 aliyun configure list 验证。
RAM 权限 —— 见 RAM 权限策略
[必须] 权限失败处理: 权限错误时:1) 阅读 references/ram-policies.md 2) 使用 ram-permission-diagnose skill 3) 暂停直到用户确认权限已授予。
[必须] AI-Mode 生命周期 —— 在任何 CLI 调用之前启用,在每个退出点禁用:
```bash
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ddos-security-monitor"
```

参数确认

重要:所有用户可自定义参数必须在执行前与用户确认。
参数必填/可选说明默认
巡检产品范围可选基础/原生/高防,默认全部全部
时间范围可选巡检时间窗口最近 24 小时
对比模式可选日环比 / 周同比 / 自定义日环比
基础防护 instance-type可选ecs/slb/eip/ipv6/swas/waf/ga_basicecs

地域策略

[必须] ddosbgp 地域遍历(动态 + 硬编码回退)
- 硬编码基线(12 个地域,不得减少):cn-hangzhou cn-shanghai cn-beijing cn-shenzhen cn-hongkong ap-southeast-1 ap-southeast-2 ap-southeast-3 ap-southeast-5 ap-northeast-1 us-west-1 eu-central-1
- 动态扩展:调用 aliyun ddosbgp describe-regions(不是 ECS),与基线并集(只增不减)。如果动态获取失败,直接使用基线。
- 数量校验:最终列表 >= 12 个地域。所有都必须遍历,绝不因空/错误而中断。
antiddos-public:仅从 cn-hangzhou 查询(集中式)。
ddoscoo:必须查询 cn-hangzhou + ap-southeast-1 两个地域。

核心巡检工作流

阶段 1:环境、凭证与权限预检查

1.1 检查 CLI 版本 + 启用 AI-Mode

aliyun version

aliyun configure ai-mode enable

aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ddos-security-monitor"

1.2 设置全局超时并启用插件自动安装

aliyun configure set --auto-plugin-install true --connect-timeout 10 --read-timeout 30

aliyun plugin update

1.3 检查凭证配置

aliyun configure list

1.4 校验权限(每个产品一次调用)

aliyun antiddos-public describe-instance-ip-address \

--ddos-region-id cn-hangzhou --instance-type ecs --current-page 1 --page-size 1

aliyun ddosbgp describe-instance-list --page-no 1 --page-size 1 --region cn-hangzhou --endpoint ddosbgp.cn-hangzhou.aliyuncs.com

aliyun ddoscoo describe-instances --page-number 1 --page-size 1 --region cn-hangzhou

aliyun ddoscoo describe-instances --page-number 1 --page-size 1 --region ap-southeast-1


- 正常 JSON -> 权限 OK | `Forbidden.RAM` / `NoPermission` -> 见 [RAM 策略](references/ram-policies.md)

> **[必须] 中止规则**:如果任何预检查连续失败 3 次,运行 `aliyun configure ai-mode disable`,输出错误报告并终止。

### 阶段 2:产品清单检查(多地域强制遍历)

> **[必须] 循环规则**:所有地域都必须查询。遇到任何错误(InvalidRegionId/Empty/Throttling),记录日志并 `continue`——禁止 break/exit。循环后,验证 EXECUTED >= 12(ddosbgp)或 = 2(ddoscoo)。每次调用后立即记录结果——禁止依赖记忆。
>
> **空结果处理**:`Total: 0` → 记录“无实例”,继续 | 错误码 → 记录错误,继续 | 正常 → 提取实例 ID。
> 遍历后,为阶段 4 编译 **地域 -> 实例 ID 列表** 映射。

2.1 基础防护资产

aliyun antiddos-public describe-instance-ip-address \

--ddos-region-id cn-hangzhou --instance-type ecs --current-page 1 --page-size 50

2.2 原生防护 - [必须在单个 bash 中执行完整循环]

BASELINE="cn-hangzhou cn-shanghai cn-beijing cn-shenzhen cn-hongkong ap-southeast-1 ap-southeast-2 ap-southeast-3 ap-southeast-5 ap-northeast-1 us-west-1 eu-central-1"

DYNAMIC=$(aliyun ddosbgp describe-regions 2>/dev/null | grep -o '"RegionId":"[^"]*"' | cut -d'"' -f4 | tr '\n' ' ')

if [ -n "$DYNAMIC" ]; then

ALL_REGIONS=$(echo "$BASELINE $DYNAMIC" | tr ' ' '\n' | sort -u | tr '\n' ' ')

else

ALL_REGIONS="$BASELINE"

fi

EXECUTED=0

for region in $ALL_REGIONS; do

# [强制] 绝不 break/return/exit - 任何错误都必须 continue

echo "=== ddosbgp query $region ==="

# [关键] 中国大陆地域必须指定 --endpoint

RESULT=$(aliyun ddosbgp describe-instance-list --page-no 1 --page-size 50 --region $region --endpoint ddosbgp.cn-hangzhou.aliyuncs.com 2>&1)

echo "$RESULT"

if echo "$RESULT" | grep -q "InvalidRegionId\|ErrorCode"; then

echo "[WARN] $region returned error, logged and continuing"

fi

EXECUTED=$((EXECUTED+1))

continue

done

echo "=== Regions executed: $EXECUTED ==="

2.3 原生防护关联 IP(每个发现的实例,使用 --biz-region-id)

aliyun ddosbgp describe-pack-ip-list \

--instance-id <instance-id> --page-no 1 --page-size 50 --biz-region-id <region-id>

2.4 高防实例 [必须查询两个地域]

aliyun ddoscoo describe-instances --page-number 1 --page-size 50 --region cn-hangzhou

aliyun ddoscoo describe-instances --page-number 1 --page-size 50 --region ap-southeast-1

2.5 高防关联域名(每个发现的实例)

aliyun ddoscoo describe-domains --instance-ids <instance-id> --region <region-id>


> **[必须] 结束校验**:1) 地域数量:ddosbgp >= 12,ddoscoo = 2 2) 产品隔离:无混合 API 前缀 3) 实例去重:全局实例(CoverageType=4)出现在每个地域——按 InstanceId 去重

### 阶段 3:确认对比周期

询问用户对比周期,解析为秒级精度的 Unix 时间戳。**[必须] 使用 bash `date` 命令——禁止手工计算:**

BASE_END=$(date +%s)

BASE_START=$((BASE_END - 86400))

COMPARE_END=$((BASE_START))

COMPARE_START=$((COMPARE_END - 86400))

周同比:偏移 604800s | 时环比:偏移 3600s

echo "Base: $BASE_START ~ $BASE_END | Compare: $COMPARE_START ~ $COMPARE_END"


### 阶段 4:执行巡检并生成报告

> **[必须] 顺序执行守卫**:为**每个**实例**严格按顺序**执行 API 链。不要停在“规划”——每个 API 都必须有实际执行的 `aliyun` 命令和可见输出。每个子步骤(4.1/4.2/4.3)后,打印 `echo "[Step 4.X Complete]"`。所有调用未完成就进入 4.4/4.5 是禁止的。
>
> **[必须] 按清单路由**:所有地域都无实例 → 在 cn-hangzhou 执行探测调用(`--instance-id dummy`)以保留痕迹,报告“未开通”。某些地域有实例 → 检查那些,跳过空地域。**绝不**替代产品 API。

#### 4.1 基础防护巡检

有资产:真实 ID | 无资产:探测调用

aliyun antiddos-public describe-ddos-event-list \

--ddos-region-id <region-id> --instance-type <type> --instance-id <id> \

--current-page 1 --page-size 50

探测:--instance-id dummy --ddos-region-id cn-hangzhou --instance-type ecs


> **[强制检查点 4.1]** 确认 describe-ddos-event-list 返回了 JSON 或明确错误。如果未执行,立即重试。在确认之前不要进入 4.2。

#### 4.2 原生防护巡检(仅 ddosbgp API)

> **[必须]** 仅 `ddosbgp` API。攻击事件:`describe-ddos-event`(**单数**)。四层流量:`describe-traffic`(必须调用)。地域参数:describe-ddos-event/describe-pack-ip-list 使用 `--biz-region-id`;describe-traffic 使用 `--region`。
> 有实例 → 每实例全部 3 个 API | 全部为空 → 在 cn-hangzhou 执行 3 个探测调用(全部必需)

aliyun ddosbgp describe-ddos-event \

--instance-id <id> --start-time <ts> --end-time <ts> \

--page-no 1 --page-size 50 --biz-region-id <region-id>

aliyun ddosbgp describe-pack-ip-list \

--instance-id <id> --page-no 1 --page-size 50 --biz-region-id <region-id>

aliyun ddosbgp describe-traffic \

--instance-id <id> --start-time <ts> --end-time <ts> --region <region-id>

探测:--instance-id dummy,--biz-region-id cn-hangzhou(describe-traffic:--region cn-hangzhou)


> **[强制检查点 4.2]** 你现在必须通过检查终端输出验证所有 3 个 ddosbgp API 确实已执行。如果 describe-ddos-event 或 describe-pack-ip-list 或 describe-traffic 零终端输出,停止并立即执行缺失调用。连续两次未能完成全部 3 个 → 输出错误日志并终止。在确认全部 3 个之前不要进入 4.3。

#### 4.3 高防巡检(仅 ddoscoo API)

> **[必须]** 仅 `ddoscoo` API。有实例 → 每实例全部 API | 两地地域均空 → 在 cn-hangzhou 执行探测调用

aliyun ddoscoo describe-ddos-events \

--instance-ids <id> --start-time <ts> --end-time <ts> \

--page-number 1 --page-size 50 --region <region-id>

aliyun ddoscoo describe-domain-qps-list \

--start-time <ts> --end-time <ts> --interval 300 --region <region-id>

aliyun ddoscoo describe-port-flow-list \

--instance-ids <id> --start-time <ts> --end-time <ts> \

--interval 300 --region <region-id>

aliyun ddoscoo describe-domain-status-code-list \

--start-time <ts> --end-time <ts> --interval 300 \

--query-type gf --region <region-id>

aliyun ddoscoo describe-domain-status-code-list \

--start-time <ts> --end-time <ts> --interval 300 \

--query-type upstrem --region <region-id>

探测:--instance-ids dummy,--region cn-hangzhou(同样 5 个 API)


> **[强制检查点 4.3]** 验证所有 5 个 ddoscoo API 有终端输出。任何缺失 → 立即执行。不要进入 4.4。

#### 4.4 同环比分析

变化率 = (Base - Compare) / Compare × 100%。阈值:±30%~±100% → 关注 | >±100% → 异常 | 存在黑洞/清洗 → 异常。

#### 4.5 报告输出

> **强制**:遵循 [报告模板](references/report-template.md),不得省略章节。按地域分组资产。
>
> **[必须] 数据一致性校验**:
> 1. **聚合**:汇总数字必须与明细列表计数完全一致
> 2. **去重**:跨地域同一实例/IP → 计数前去重
> 3. **空值标注(硬规则)**:空数组 `[]` → 写 `0(API 返回空)` 或 `查询失败(ErrorCode: XXX)`。禁止:“未发现异常”、“疑似误报”等模糊短语。关键指标空数据必须在章节开始包含 `[DATA MISSING]` 标签
> 4. **交叉验证**:汇总总数 = 各地域明细之和
> 5. **调用记录验证**:声称的 API 调用和结论必须与实际执行一致。禁止捏造
> 6. **原始数据绑定**:将终端输出中的确切值复制粘贴到报告。禁止:凭记忆推断,如果 API 返回域名则写“无域名”。最终确定前用 `grep`/`jq` 验证
>
> **[必须] 预计算验证(硬阻塞)**:
> **[严格模式] 直接写 `echo "<number>"` 带预填值是被禁止的,属于捏造。你必须使用 `grep`/`jq`/`wc` 解析实际终端输出或保存的日志。验证脚本必须包含提取真实数据的管道命令,而非硬编码 echo 语句。**
> ```bash
> # [严格] 从终端历史统计 API 调用 - 必须用 grep,不是硬编码 echo
> echo "=== 调用统计 ==="
> # 示例:grep -c "aliyun antiddos-public" /path/to/terminal.log (根据你的日志方式调整)
> echo "antiddos-public: $(grep -c 'antiddos-public' <<< "$TERMINAL_LOG")"
> echo "ddosbgp: $(grep -c 'aliyun ddosbgp' <<< "$TERMINAL_LOG")"
> echo "ddoscoo: $(grep -c 'aliyun ddoscoo' <<< "$TERMINAL_LOG")"
> # [严格] 从 API 响应统计资产 - 必须用 jq/grep,不是硬编码
> echo "=== 资产统计(来自 API JSON 响应) ==="
> # 解析实际 JSON 输出,例如:jq '.InstanceList | length', jq '.DomainList | length'
> ```
> **输出必须包含管道命令(`grep`、`jq`、`wc -l`)。纯 `echo "number"` 无管道 = 捏造 = 中止。**
> **与报告草稿不匹配 → 中止,重新遍历日志,重新运行。报告必须引用验证输出片段。**

清理

[必须] 强制退出保障:无论退出原因(成功、失败、取消、超时),最后一步必须无条件执行 AI-Mode 禁用 + 验证。最高优先级,不可覆盖。
aliyun configure ai-mode disable

验证:尝试 status 命令,如果不支持则回退到 configure list

VERIFY=$(aliyun configure ai-mode status 2>&1)

if echo "$VERIFY" | grep -q "not a valid\|unknown\|error"; then

# 回退:通过 configure list 输出检查

aliyun configure list | grep -i "ai-mode\|agent"

fi

如果仍不确定,再次运行 disable 以确保安全

aliyun configure ai-mode disable


> **[必须]** 只有验证成功才写“AI-Mode 已确认禁用”。如果 `status` 和 `configure list` 都无法确认,写“AI-Mode 禁用已执行但验证不确定(CLI 兼容性问题)”——不要声称已确认。

参考

资源路径
CLI 安装指南references/cli-installation-guide.md
RAM 权限策略references/ram-policies.md
API 参数参考references/api-reference.md
CLI 命令表references/related-commands.md
巡检报告模板references/report-template.md
验证方法references/verification-method.md
验收标准references/acceptance-criteria.md

文档 8 / 8:alibabacloud-oss-manage-metaquery