mcpField
A
alibabacloud-ddos-security-monitor

alibabacloud-ddos-security-monitor

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

关于 alibabacloud-ddos-security-monitor

用于检查 Alibaba Cloud 账户下的 DDoS 防护产品,通过 Aliyun CLI 查询资产、攻击事件和流量,并生成对比检查报告。

主要功能

  1. 01检查 Basic、Native 和 Anti-DDoS Pro/Premium
  2. 02跨区域盘点实例
  3. 03查询攻击事件与流量数据
  4. 04比较时段并汇总报告

适用场景

  1. 01审查账户中的 DDoS 防护资产
  2. 02对比不同时段的攻击与流量
  3. 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.md
api-reference.md
cli-installation-guide.md
cli-setup.md
ram-policies.md
related-commands.md
report-template.md
verification-method.md

详细介绍

DDoS 安全产品巡检与监控

此技能通过 Aliyun CLI 直接调用 OpenAPI,在 Alibaba Cloud 账号下对 DDoS 安全产品进行安全巡检,全程不使用任何脚本或 SDK。

架构:antiddos-public (基础防护) + ddosbgp (原生防护) + ddoscoo (Anti-DDoS Pro/Premium) -> CLI OpenAPI -> 巡检报告

产品与 API 概览

产品CLI 代码用途
DDoS 基础防护antiddos-publicECS/SLB 的默认免费防护,Region 参数:--ddos-region-id
DDoS 原生防护ddosbgp付费升级,原生 IP 级防护,Region 参数:--biz-region-id 或 --region
DDoS Anti-DDoS Pro/Premiumddoscoo专用 Anti-DDoS IP,L4/L7 防护,Region 参数:--region

[MUST] 严格隔离产品路由:绝不能混用这三个产品的 API。绝不能用 ddoscoo API 替代 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-events
Anti-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.md 2)使用 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_basicecs

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] 仅使用 ddosbgp API。攻击事件: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] 仅使用 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>
# 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 报告输出

强制要求:遵循报告模板,不得省略任何章节。按地域对资产分组。

[必须] 数据一致性校验:

  1. 汇总:摘要中的数字必须与明细列表的计数完全一致
  2. 去重:跨地域的相同实例/IP → 计数前去重
  3. 空值标注(硬性规则):空数组 [] → 写为 0 (API returned empty) 或 Query failed (ErrorCode: XXX)。禁止使用“未发现异常”“似乎是误报”等模糊表述。关键指标数据为空时,必须在章节开头添加 [DATA MISSING] 标签
  4. 交叉校验:汇总总数 = 各地域明细之和
  5. 调用记录核实:声称的 API 调用和结论必须与实际执行情况一致。严禁捏造
  6. 原始数据绑定:将终端输出中的准确值复制粘贴到报告中。禁止凭记忆推断;如果 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)”——不得声称已确认。

参考资料

资源路径
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

评论

支持 Markdown