DDoS 安全产品巡检与监控
本 Skill 通过阿里云 CLI 直接 OpenAPI 调用(不使用任何脚本或 SDK)对阿里云账号下的 DDoS 安全产品执行安全巡检。
架构:antiddos-public(基础防护) + ddosbgp(原生防护) + ddoscoo(高防) -> CLI OpenAPI -> 巡检报告
产品与 API 概览
| 产品 | CLI 代码 | 用例 |
|---|---|---|
| DDoS 基础防护 | antiddos-public | ECS/SLB 默认免费防护,地域参数:--ddos-region-id |
| DDoS 原生防护 | ddosbgp | 付费升级,原生 IP 级防护,地域参数:--biz-region-id 或 --region |
| DDoS 高防 | ddoscoo | 专用高防 IP,四层/七层防护,地域参数:--region |
[必须] 严格产品路由隔离:三个产品的 API 绝不能混用。绝不用ddoscooAPI 替代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.md2) 使用ram-permission-diagnoseskill 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_basic | ecs |
地域策略
[必须] 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 兼容性问题)”——不要声称已确认。
阿里云skills
◯ 评论 0