关于 alibabacloud-ddos-security-monitor
用于检查 Alibaba Cloud 账户下的 DDoS 防护产品,通过 Aliyun CLI 查询资产、攻击事件和流量,并生成对比检查报告。
主要功能
- 01检查 Basic、Native 和 Anti-DDoS Pro/Premium
- 02跨区域盘点实例
- 03查询攻击事件与流量数据
- 04比较时段并汇总报告
适用场景
- 01审查账户中的 DDoS 防护资产
- 02对比不同时段的攻击与流量
- 03汇总多区域检查结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-ddos-security-monitor安装后在 Claude Code 中输入/alibabacloud-ddos-security-monitor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdapi-reference.mdcli-installation-guide.mdcli-setup.mdram-policies.mdrelated-commands.mdreport-template.mdverification-method.md详细介绍
DDoS 安全产品巡检与监控
此技能通过 Aliyun CLI 直接调用 OpenAPI,在 Alibaba Cloud 账号下对 DDoS 安全产品进行安全巡检,全程不使用任何脚本或 SDK。
架构:antiddos-public (基础防护) + ddosbgp (原生防护) + ddoscoo (Anti-DDoS Pro/Premium) -> CLI OpenAPI -> 巡检报告
产品与 API 概览
| 产品 | CLI 代码 | 用途 |
|---|---|---|
| DDoS 基础防护 | antiddos-public | ECS/SLB 的默认免费防护,Region 参数:--ddos-region-id |
| DDoS 原生防护 | ddosbgp | 付费升级,原生 IP 级防护,Region 参数:--biz-region-id 或 --region |
| DDoS Anti-DDoS Pro/Premium | ddoscoo | 专用 Anti-DDoS IP,L4/L7 防护,Region 参数:--region |
[MUST] 严格隔离产品路由:绝不能混用这三个产品的 API。绝不能用
ddoscooAPI 替代ddosbgp查询,反之亦然。若检测到混用,立即中止。[MUST] ddosbgp 终端节点路由:
ddosbgp describe-instance-list的默认终端节点不支持中国大陆 Region。所有describe-instance-list调用都必须指定--endpoint ddosbgp.cn-hangzhou.aliyuncs.com。[MUST] 易混淆 API 警告:
场景 正确命令 错误命令(禁止) 原生防护攻击事件 ddosbgp describe-ddos-event(单数)ddoscoo describe-ddos-eventsAnti-DDoS Pro 攻击事件 ddoscoo describe-ddos-events(复数)ddosbgp describe-ddos-event
前置检查
需要 Aliyun CLI >= 3.3.3 — 请参阅 CLI 安装指南。 需要凭证 — 请参阅 CLI 凭证设置。运行
aliyun configure list进行验证。 RAM 权限 — 请参阅 RAM 权限策略。**[MUST] 权限错误处理:**遇到权限错误时:1)阅读
references/ram-policies.md2)使用ram-permission-diagnose技能 3)暂停操作,直至用户确认已授予权限。[MUST] AI-Mode 生命周期 — 在调用任何 CLI 命令前启用,并在每个退出点禁用:
aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ddos-security-monitor"
参数确认
重要:执行前必须与用户确认所有可自定义参数。
| 参数 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
| 巡检产品范围 | 可选 | 基础防护/原生防护/Anti-DDoS Pro,默认全部 | 全部 |
| 时间范围 | 可选 | 巡检时间窗口 | 最近 24 小时 |
| 对比模式 | 可选 | 环比前一天 / 环比前一周 / 自定义 | 环比前一天 |
| 基础防护实例类型 | 可选 | ecs/slb/eip/ipv6/swas/waf/ga_basic | ecs |
Region 策略
[MUST] ddosbgp Region 遍历(动态扩展 + 硬编码回退):
- 硬编码基线(12 个 Region,不得减少):
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 个 Region。必须遍历全部 Region,绝不能因结果为空或出错而中断。
antiddos-public:仅从
cn-hangzhou查询(集中查询)。 ddoscoo:必须同时查询cn-hangzhou和ap-southeast-1。
核心巡检工作流
阶段 1:环境、凭证与权限预检查
# 1.1 Check CLI version + enable 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 Set global timeout and enable auto plugin install
aliyun configure set --auto-plugin-install true --connect-timeout 10 --read-timeout 30
aliyun plugin update
# 1.3 Check credential configuration
aliyun configure list
# 1.4 Validate permissions (one call per product)
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 → 权限正常 |
Forbidden.RAM/NoPermission→ 参见 RAM 策略
[MUST] 中止规则:如果任一预检查连续失败 3 次,运行
aliyun configure ai-mode disable,输出错误报告并终止。
阶段 2:产品清单检查(必须遍历多个区域)
[MUST] 循环规则:必须查询所有区域。遇到任何错误(InvalidRegionId/Empty/Throttling)时,记录日志并
continue——禁止中断或退出。循环结束后,确认已执行次数 >= 12(ddosbgp)或 = 2(ddoscoo)。每次调用后立即记录结果——禁止依赖记忆。空结果处理:
Total: 0→ 记录“无实例”,继续 | 错误代码 → 记录错误,继续 | 正常 → 提取实例 ID。 遍历后,整理出 区域 -> 实例 ID 列表映射,供阶段 4 使用。
# 2.1 Basic Protection assets
aliyun antiddos-public describe-instance-ip-address \
--ddos-region-id cn-hangzhou --instance-type ecs --current-page 1 --page-size 50
# 2.2 Native Protection - [MUST execute full loop in single 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
# [MANDATORY] NEVER break/return/exit - on ANY error, MUST continue
echo "=== ddosbgp query $region ==="
# [CRITICAL] Must specify --endpoint for mainland China Regions
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 Native Protection associated IPs (per discovered instance, uses --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 Anti-DDoS Pro instances [MUST query both Regions]
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 Anti-DDoS Pro associated domains (per discovered instance)
aliyun ddoscoo describe-domains --instance-ids <instance-id> --region <region-id>
[MUST] 结束验证:1)区域数量:ddosbgp >= 12,ddoscoo = 2 2)产品隔离:API 前缀不得混用 3)实例去重:全局实例(CoverageType=4)会出现在每个区域中——按 InstanceId 去重
阶段 3:确认比较周期
询问用户比较周期,并将其解析为精确到秒的 Unix 时间戳。[MUST] 使用 bash date 命令——禁止手动计算:
BASE_END=$(date +%s)
BASE_START=$((BASE_END - 86400))
COMPARE_END=$((BASE_START))
COMPARE_START=$((COMPARE_END - 86400))
# Week-over-week: offset 604800s | Hour-over-hour: offset 3600s
echo "Base: $BASE_START ~ $BASE_END | Compare: $COMPARE_START ~ $COMPARE_END"
阶段 4:执行检查并生成报告
[MUST] 顺序执行保护:对每个实例,严格按顺序执行 API 调用链。不得停留在“规划”阶段——每个 API 都必须实际执行
aliyun命令并显示输出。每个子步骤(4.1/4.2/4.3)完成后,打印echo "[Step 4.X Complete]"。未完成所有调用就进入 4.4/4.5,属于禁止行为。[MUST] 根据清单路由:所有区域都没有实例 → 在 cn-hangzhou 上执行探测调用(
--instance-id dummy)以保留执行记录,并报告“未配置”。部分区域有实例 → 检查这些实例,跳过空区域。绝不替换为其他产品 API。
4.1 基础防护检查
# Has assets: real ID | No assets: probe call
aliyun antiddos-public describe-ddos-event-list \
--ddos-region-id <region-id> --instance-type <type> --instance-id <id> \
--current-page 1 --page-size 50
# Probe: --instance-id dummy --ddos-region-id cn-hangzhou --instance-type ecs
[MANDATORY CHECKPOINT 4.1] 确认 describe-ddos-event-list 已返回 JSON 或明确的错误。如果尚未执行,立即重试。确认前不得进入 4.2。
4.2 原生防护检查(仅限 ddosbgp API)
[MUST] 仅使用
ddosbgpAPI。攻击事件:describe-ddos-event(单数形式)。L4 流量:describe-traffic(必须调用)。区域参数:describe-ddos-event/describe-pack-ip-list 使用--biz-region-id;describe-traffic 使用--region。 有实例 → 每个实例调用全部 3 个 API | 所有区域均为空 → 在 cn-hangzhou 上调用 3 个探测 API(全部必需)
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>
# Probe: --instance-id dummy, --biz-region-id cn-hangzhou (describe-traffic: --region cn-hangzhou)
[MANDATORY CHECKPOINT 4.2] 现在必须检查终端输出,确认所有 3 个 ddosbgp API 均已实际执行。如果 describe-ddos-event、describe-pack-ip-list 或 describe-traffic 中任何一个没有终端输出,立即停止并执行缺失的调用。连续两次未能完成全部 3 个调用 → 输出错误日志并终止。确认全部 3 个调用前不得进入 4.3。
4.3 Anti-DDoS Pro/Premium 检查(仅限 ddoscoo API)
[MUST] 仅使用
ddoscooAPI。有实例 → 对每个实例调用全部 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>
# Probe: --instance-ids dummy, --region cn-hangzhou (same 5 APIs)
[MANDATORY CHECKPOINT 4.3] 确认全部 5 个 ddoscoo API 均有终端输出。任何调用缺失 → 立即执行。不得进入 4.4。
4.4 环比分析
变化率 = (基准值 - 比较值) / 比较值 × 100%。阈值:±30%~±100% → 关注 | >±100% → 异常 | 存在黑洞或流量清洗 → 异常。
4.5 报告输出
强制要求:遵循报告模板,不得省略任何章节。按地域对资产分组。
[必须] 数据一致性校验:
- 汇总:摘要中的数字必须与明细列表的计数完全一致
- 去重:跨地域的相同实例/IP → 计数前去重
- 空值标注(硬性规则):空数组
[]→ 写为0 (API returned empty)或Query failed (ErrorCode: XXX)。禁止使用“未发现异常”“似乎是误报”等模糊表述。关键指标数据为空时,必须在章节开头添加[DATA MISSING]标签- 交叉校验:汇总总数 = 各地域明细之和
- 调用记录核实:声称的 API 调用和结论必须与实际执行情况一致。严禁捏造
- 原始数据绑定:将终端输出中的准确值复制粘贴到报告中。禁止凭记忆推断;如果 API 返回了域名,就禁止写“没有域名”。定稿前使用
grep/jq验证[必须] 预计算验证(硬性阻断条件): [严格模式] 禁止直接使用预填的数值编写
echo "<number>",这将被视为捏造。必须使用grep/jq/wc解析实际终端输出或已保存的日志。验证脚本必须包含用于提取真实数据的管道命令,而非硬编码的 echo 语句。# [STRICT] 从终端历史记录中统计 API 调用次数——必须使用 grep,不得硬编码 echo echo "=== Call statistics ===" # 示例: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")" # [STRICT] 从 API 响应中统计资产数量——必须使用 jq/grep,不得硬编码 echo "=== Asset statistics (from API JSON responses) ===" # 解析实际 JSON 输出,例如:jq '.InstanceList | length'、jq '.DomainList | length'输出必须包含管道命令(
grep、jq、wc -l)。只写echo "number"而不使用管道 = 捏造 = 中止。 与报告草稿不一致 → 中止、重新遍历日志并再次运行。报告必须引用验证输出片段。
清理
[必须] 强制退出保障措施:无论退出原因是什么(成功、失败、取消、超时),最后一步都必须无条件执行禁用 AI-Mode 并进行验证。优先级最高,不可覆盖。
aliyun configure ai-mode disable
# Verify: try status command, if unsupported fall back to configure list
VERIFY=$(aliyun configure ai-mode status 2>&1)
if echo "$VERIFY" | grep -q "not a valid\|unknown\|error"; then
# Fallback: check via configure list output
aliyun configure list | grep -i "ai-mode\|agent"
fi
# If still uncertain, run disable again to be safe
aliyun configure ai-mode disable
[必须] 只有在验证成功后,才能写“AI-Mode confirmed disabled”。如果
status和configure list均无法确认,则写“AI-Mode disable executed but verification inconclusive (CLI compatibility issue)”——不得声称已确认。