IPS 告警事件分析
Skill 适用范围说明:
- 本 Skill 以阿里云 CLIcloudfw命令作为主要数据来源。
- 不依赖本地日志文件、SIEM 导出数据或直接访问主机。
- 不需要 SSH 或直接连接服务器 IP。
- 针对 IP 维度的排查,优先使用带--SrcIP或--DstIP的DescribeRiskEventGroup。
场景描述
查询并分析阿里云云防火墙 IPS(入侵防御系统)检测到的安全事件与告警,帮助快速定位威胁并提供修复建议。
架构:云防火墙服务 → IPS 引擎 → 事件检测 + 攻击分析 + 防护配置
能力级别:查询(只读)
数据来源:所有数据仅通过阿里云 CLI 命令(aliyun cloudfw ...)获取。不使用日志文件、数据库、服务器访问或 SIEM——只用 CLI 命令。不要在工作区中搜索文件。不要向用户索要任何东西。直接运行命令即可。
核心能力:
- 告警概览 —— IPS 告警统计,包括攻击次数、拦截次数和严重程度分布
- 告警事件详情 —— IPS 告警事件明细列表,包含源/目的、攻击类型和处理状态
- 被攻击资产 Top 排名 —— 被攻击最多的资产排名
- 攻击类型分析 —— 攻击类型和应用的分布
- IPS 配置状态 —— 当前 IPS 运行模式、规则开关和规则库版本
- 修复建议 —— 基于告警数据的分优先级安全建议
前置条件
预检查:需要阿里云 CLI >= 3.3.3
运行aliyun version确认 >= 3.3.3。如果未安装或版本过低,
运行curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash安装/更新,
或参阅references/cli-installation-guide.md获取安装说明。
预检查:需要更新阿里云 CLI 插件
[必须] 运行aliyun configure set --auto-plugin-install true启用插件自动安装。
[必须] 运行aliyun plugin update确保现有插件始终为最新版本。
[必须] CLI User-Agent —— 每次调用 aliyun CLI 命令都必须包含:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
在核心工作流开始时(任何 CLI 调用之前):
[必须] 启用 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-cfw-ips-event"
[必须] 在每一个退出点禁用 AI-Mode —— 在交付最终响应之前(无论何种原因),必须先禁用 AI-mode。这适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束,或任何不再执行 CLI 命令的场景。
AI-mode 仅用于 Agent Skill 调用场景,Skill 停止运行后绝不能保持启用状态。
aliyun configure ai-mode disable
认证
预检查:需要阿里云凭证
安全规则:
- 绝不读取、回显、打印、cat 或显示 AK/SK 值
- 绝不要求用户在对话或命令行中直接输入 AK/SK
- 绝不使用带有明文凭证值的aliyun configure set
- 只能使用aliyun configure list检查凭证状态
```bash
aliyun configure list
```
检查输出中是否存在有效 profile(AK、STS 或 OAuth 身份)。
如果不存在有效 profile,请在此停止。
1. 从 阿里云控制台 获取凭证
2. 在本会话之外配置凭证(通过终端中的aliyun configure或 shell profile 中的环境变量)
3. 在aliyun configure list显示有效 profile 后返回并重新运行
RAM 策略
[必须] RAM 权限预检查: 在执行任何命令之前,验证当前用户具有所需权限。
1. 使用ram-permission-diagnoseskill 获取当前用户权限
2. 与references/ram-policies.md进行比对
3. 如果缺少任何权限,中止并提示用户
最低所需权限 —— 完整策略 JSON 见 references/ram-policies.md。
或者,附加系统策略:AliyunYundunCloudFirewallReadOnlyAccess
参数确认
重要:参数确认 —— 在执行任何命令或 API 调用之前,
检查用户是否已在请求中提供了必要参数。
- 如果用户请求明确提到某个参数值(例如“查看最近 7 天的 IPS 告警”意味着使用 7 天时间范围),直接使用该值,无需确认。
- 对于具有合理默认值的可选参数(PageSize、CurrentPage、时间范围),除非用户另有说明,否则使用默认值,无需询问。
- 不要重复询问用户已明确说明的参数。
| 参数名 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
| RegionId | 必填 | 云防火墙的阿里云地域。仅有两个取值:cn-hangzhou(中国大陆)、ap-southeast-1(香港/海外)。 | cn-hangzhou(直接使用,无需询问;仅当用户明确提到香港/海外/国际时才使用 ap-southeast-1) |
| StartTime | 大多数 API 必填 | 告警查询的开始时间(Unix 秒级时间戳) | “今天”为 24 小时前,“最近”/“本周”为 7 天前(直接使用,无需询问) |
| EndTime | 大多数 API 必填 | 告警查询的结束时间(Unix 秒级时间戳) | 当前时间(直接使用,无需询问) |
| PageSize | 可选 | 分页 API 的每页条数 | 50(直接使用,无需询问) |
| CurrentPage | 可选 | 分页 API 的页码 | 1(直接使用,无需询问) |
输入校验(必须)
将所有 Agent 提供的输入视为不可信。在构建 CLI 命令之前进行校验。
校验规则:
RegionId:必须精确为cn-hangzhou或ap-southeast-1之一。StartTime/EndTime:必须为 10 位 Unix 秒级时间戳(^[0-9]{10}$),且StartTime < EndTime。CurrentPage:正整数(>=1)。PageSize:1-100 范围内的整数。SrcIP/DstIP:必须为有效 IPv4 格式(a.b.c.d,每个八位组0-255)。
安全命令构建规则:
- 绝不将原始用户文本拼接进 shell 命令。
- 只将校验后的值传入固定的 CLI flag 模板。
- 如果任何校验失败,停止执行并返回明确的校验错误。
错误处理与工作流韧性
关键:失败时继续。 如果任何单个 API 调用失败,不要停止整个工作流。
记录该步骤的错误,然后继续执行下一步。展示所有成功收集到的数据。
重试逻辑
对于每次 API 调用:
- 如果调用因瞬时错误失败(网络超时、限流
Throttling.User、ServiceUnavailable、HTTP 500/502/503),最多重试 2 次,每次重试之间延迟 3 秒。 - 如果调用因永久错误失败(例如
InvalidParameter、Forbidden、InvalidAccessKeyId),不要重试。记录错误并继续。 - 所有重试耗尽后,记录“[Step X] Failed: {error message}”并继续下一步。
超时策略(必须)
在任何 API 调用之前,显式设置 CLI 超时:
export ALIBABA_CLOUD_CONNECT_TIMEOUT=10
export ALIBABA_CLOUD_READ_TIMEOUT=30
ALIBABA_CLOUD_CONNECT_TIMEOUT=10:连接超时快速失败。ALIBABA_CLOUD_READ_TIMEOUT=30:防止每次请求长时间挂起。- 超时错误视为瞬时错误,遵循重试逻辑。
无告警事件
如果 Step 1(DescribeRiskEventStatistic)返回全零:
- 告知用户:“在指定时间范围内未检测到 IPS 告警事件。”
- 仍然继续执行 Step 6 和 Step 7,报告 IPS 配置状态。
步骤独立性
工作流步骤具有以下依赖关系:
- Step 1(统计) 应首先运行以提供上下文。
- Step 2-7 相互独立 —— 任何一步失败都不应阻止其他步骤执行。
部分结果
在呈现最终总结报告时:
- 对于成功的步骤,正常展示收集到的数据。
- 对于失败的步骤,在对应部分显示“N/A(错误:{简要错误})”。
- 即使部分步骤失败,也始终呈现总结报告——部分数据总比没有数据好。
核心工作流
所有 API 调用使用阿里云 CLI cloudfw 插件。
请求/响应 schema 仅维护在 references/api-analysis.md 中。不要在本文件中重复逐字段描述。
User-Agent:所有命令必须包含 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
地域:通过 --region {RegionId} 全局 flag 指定
关键:本 Skill 为只读(仅查询)。 以下所有命令都是安全的只读查询,不会修改任何云资源。
在执行之前,与用户确认执行计划:简要列出将执行哪些步骤以及目标地域。仅在用户确认后继续。
不要询问用户调用哪些具体 API 或使用哪些数据源——这些由下面的工作流决定。
下面的意图路由表仅用于优化——如果用户意图不明确,默认计划执行所有步骤(Step 1-7)。
意图路由(自动确定,执行前确认)
根据用户措辞自动确定执行范围。在运行命令之前,向用户展示执行计划以供确认:
| 用户意图 | 执行步骤 |
|---|---|
| 完整告警分析(“今天有哪些 IPS 告警”“最近的安全事件”) | 执行所有 Step 1-7 |
| 被攻击资产排查(“哪些资产被攻击最多”) | 执行 Step 1 + Step 3 |
| 特定源 IP 告警(“这个 IP 触发了哪些告警”) | 执行 Step 2(带 --SrcIP 过滤) |
| 特定目标资产/服务器告警(“检查 x.x.x.x 上的攻击”“服务器 10.0.1.88 的安全告警”) | 执行 Step 1 + Step 2(带 --DstIP 过滤)+ Step 6 + Step 7 |
| 攻击趋势/类型(“最近攻击是否在增加”) | 执行 Step 1 + Step 4 + Step 5 |
| IPS 配置检查(“IPS 是什么模式”“规则库版本”) | 执行 Step 6 + Step 7 |
默认行为:如果无法明确判断用户意图,计划执行所有 Step 1-7,并在继续之前与用户确认。
时间参数
某些 API 需要 StartTime 和 EndTime 参数(Unix 秒级时间戳)。
如何获取时间戳:运行 date +%s 获取当前时间戳,date -d '1 day ago' +%s 获取 24 小时前,date -d '7 days ago' +%s 获取 7 天前。然后直接在 CLI 命令中使用返回的数值。
重要:不要在 CLI 命令内使用$(date +%s)这类 bash 变量替换——某些执行环境会阻止$(...)。应分别运行date命令,记下返回值,然后将其作为字面数字用于--StartTime和--EndTime参数。
默认时间范围:
- 用户说“今天” →
StartTime= 24 小时前 - 用户说“最近”/“本周” →
StartTime= 7 天前 - 未指定时间范围 → 默认 7 天前
EndTime→ 始终为当前时间戳
Step 1:IPS 告警统计概览
获取整体告警统计,了解当前安全态势。
aliyun cloudfw describe-risk-event-statistic \
--StartTime {StartTime} \
--EndTime {EndTime} \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
Step 2:IPS 告警事件详情
获取分组后的告警事件列表。这是分析的核心数据。
aliyun cloudfw describe-risk-event-group \
--CurrentPage 1 \
--PageSize 50 \
--StartTime {StartTime} \
--EndTime {EndTime} \
--DataType 1 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
可选过滤参数(根据用户意图自动添加,无需确认):
- 按方向:
--Direction in或--Direction out - 按源 IP:
--SrcIP x.x.x.x(查询“某个特定 IP 发起的攻击”) - 按目标 IP:
--DstIP x.x.x.x(查询“针对某台服务器/IP 的攻击”,支持 10.x.x.x 等私网 IP) - 按漏洞等级:
--VulLevel 3(1=低,2=中,3=高)
要点:当用户提到某台服务器或 IP 被攻击时,使用 --DstIP 过滤查询该 IP 的所有攻击记录——无需访问服务器本身。
分页:检查 TotalCount。如果超过 50,递增 CurrentPage。
Step 3:被攻击资产 Top 排名
识别哪些资产是攻击热点。
aliyun cloudfw describe-risk-event-top-attack-asset \
--StartTime {StartTime} \
--EndTime {EndTime} \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
Step 4:攻击类型 Top 排名
了解当前面临的主要威胁类型。
aliyun cloudfw describe-risk-event-top-attack-type \
--StartTime {StartTime} \
--EndTime {EndTime} \
--Direction in \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
如果还需要出站攻击类型,用 --Direction out 再调用一次。
注意:此 API 需要 Direction 参数,否则会返回错误。
Step 5:被攻击应用 Top 排名
了解哪些应用层目标正在被攻击。
aliyun cloudfw describe-risk-event-top-attack-app \
--StartTime {StartTime} \
--EndTime {EndTime} \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
Step 6:IPS 防护配置状态
检查当前 IPS 运行模式和防护能力。
aliyun cloudfw describe-default-ipsconfig \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
Step 7:IPS 规则库版本
aliyun cloudfw describe-signature-lib-version \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-ips-event
分析与报告
收集数据后,按以下结构生成报告。分析围绕告警事件展开,覆盖三个维度:“谁在攻击”“什么被攻击”“响应效果如何”。只展示有实际数据的部分;如果某个 API 调用失败,注明并继续。
1. IPS 告警态势概览
结合 Step 1 统计和 Step 6 IPS 配置,展示当前安全态势:
告警统计(时间范围:x):
| 指标 | 数值 |
|---|---|
| 总攻击事件数 | x |
| 已拦截 | x |
| 已观察/已告警 | x |
| 未处理 | x |
| 高/中/低严重程度 | x / x / x |
IPS 配置状态:
| 配置项 | 状态 |
|---|---|
| 运行模式 | 观察/拦截 |
| 基础防护 | 已启用/已禁用 |
| 虚拟补丁 | 已启用/已禁用 |
| 威胁情报 | 已启用/已禁用 |
| AI 引擎 | 已启用/已禁用 |
| 规则库版本 | x(更新时间) |
如果 IPS 处于观察模式且存在高严重程度事件,需醒目提示:“IPS 当前处于观察模式——高严重程度攻击未被拦截”。
2. 高严重程度告警事件(需立即处理)
从 Step 2 中筛选 VulLevel=3(高)或 VulLevel=2(中且事件数较多)的事件,按事件数降序排列:
| 事件名称 | 攻击类型 | 源 IP | 源位置 | 目标 IP | 目标资产 | 事件数 | 处理状态 | 首次出现 | 最后出现 |
|---|
处理状态说明:
- 已观察(RuleResult=1):IPS 检测到但未拦截——需要人工确认是否需要拦截
- 已拦截(RuleResult=2):已被 IPS 自动拦截
3. 攻击热点分析
#### 被攻击资产 Top 排名
结合 Step 3 数据,按资产展示攻击情况:
| 排名 | 目标 IP | 资源名称 | 资源类型 | 地域 | 攻击次数 | 已拦截 | 拦截率 |
|---|
重点关注拦截率低的资产——这意味着大量攻击只是被观察,并未被拦截。
#### 攻击类型分布
结合 Step 4 数据:
| 攻击类型 | 攻击次数 | 已拦截 | 拦截率 |
|---|
#### 攻击应用分布
结合 Step 5 数据:
| 应用 | 攻击次数 | 已拦截 | 拦截率 |
|---|
4. 攻击源分析
从 Step 2 事件数据中汇总源 IP 维度:
| 源 IP | 源国家/城市 | 攻击次数 | 主要攻击类型 | 目标资产数 | 处理状态 |
|---|
标记同一源 IP 攻击多个资产的情况——这通常表明存在有组织的扫描或攻击。
5. 修复建议
根据实际数据生成具体建议,按优先级排序。每条建议包含:风险描述、影响范围、建议操作。
#### P0 —— 严重(立即处理)
- 观察模式下存在高严重程度事件且未被拦截 → 将 IPS 切换为拦截模式,或手动封禁攻击源 IP
- 同一源 IP 大量攻击多个资产 → 将该 IP 加入云防火墙 ACL 黑名单
- IPS 处于观察模式且存在活跃的高严重程度攻击 → 切换为拦截模式
#### P1 —— 高(24 小时内)
- 中严重程度事件反复出现且未被拦截 → 检查目标资产漏洞并修复
- 基础防护/虚拟补丁未启用 → 建议启用,以增强防护
- 被攻击资产拦截率低 → 检查 IPS 规则覆盖情况
#### P2 —— 中(本周内)
- 同一资产遭受多种攻击类型 → 对该资产进行安全加固审查
- 威胁情报/AI 引擎规则未启用 → 建议启用
- 规则库版本过旧 → 更新至最新版本
#### P3 —— 低(定期审查)
- 低严重程度事件持续存在 → 纳入定期审查,评估是否为误报
- 优化 IPS 白名单,减少业务误报
注意:对于任何失败的步骤,在该部分数据字段中显示“N/A(错误:{简要错误})”,并在底部章节列出所有错误。
成功验证
详细验证步骤见 references/verification-method.md。
快速验证:如果所有 CLI 命令返回有效 JSON 响应且无错误码,则 Skill 执行成功。
API 与命令表
以 references/related-apis.md 作为 API 表和命令映射的唯一权威来源。
最佳实践
- 按顺序查询 —— 从告警统计(Step 1)开始,了解整体安全态势。如果所有值均为零,报告该时间范围内未检测到告警。
- 失败时继续 —— 如果任何步骤(2-7)失败,记录错误并继续执行剩余步骤。始终用已收集到的数据生成报告。
- 使用分页 —— 对于告警事件列表(Step 2),使用
CurrentPage和PageSize。默认 PageSize=50。如果TotalCount超过PageSize,遍历所有页。 - 时间范围选择 —— “今天”默认最近 24 小时,“最近”/“本周”默认最近 7 天。使用 Unix 秒级时间戳。计算方式:
date +%s获取当前时间,date -d '1 day ago' +%s获取 24 小时前,date -d '7 days ago' +%s获取 7 天前。分别运行这些命令,然后将返回值作为字面数字用于--StartTime和--EndTime。不要在 CLI 命令内使用$(...)替换。 - 地域感知 —— 云防火墙只有两个地域:
cn-hangzhou(中国大陆)和ap-southeast-1(香港/海外)。除非用户另有说明,默认使用cn-hangzhou。 - Direction 参数 —— Step 4(
DescribeRiskEventTopAttackType)需要Direction参数。默认使用in(入站)。如需查询出站,单独查询out。 - 限流 —— 间隔调用 API 以避免限流。如果收到
Throttling.User错误,等待 3 秒后重试。 - 安全 —— 绝不暴露、记录、回显或显示 AK/SK 值。
- 瞬时错误重试 —— 对于网络超时或 5xx 错误,最多重试 2 次,每次延迟 3 秒。
- 先校验所有输入 —— 在执行命令之前,拒绝无效的
RegionId、时间戳、分页和 IP 值。 - 设置显式超时环境变量 —— 在工作流命令之前始终设置
ALIBABA_CLOUD_CONNECT_TIMEOUT=10和ALIBABA_CLOUD_READ_TIMEOUT=30。
参考链接
| 参考文档 | 说明 |
|---|---|
| references/related-apis.md | 完整 API 表及参数 |
| references/ram-policies.md | 所需 RAM 权限及策略 JSON |
| references/verification-method.md | 分步验证命令 |
| references/acceptance-criteria.md | 正确/错误用法示例 |
| references/cli-installation-guide.md | 阿里云 CLI 安装指南 |
| references/api-analysis.md | 详细 API 参数与响应文档 |
好的,继续输出文档 2 / 6。
阿里云skills
◯ 评论 0