ESA盗刷SOP

更新时间:
复制为 MD 格式

当您的域名有非业务性流量突增时,您可以通过配置合适的ESA安全防护策略对异常的访问和攻击进行拦截。本文档将针对可能出现的异常访问特征为您推荐合适的防护策略。

及时止损

当您的站点因被恶意攻击或恶意盗刷产生了大量的异常流量,建议您根据业务场景选择以下方式及时介入,以减少进一步损失。

  1. 开启一键防盗刷:站点管理 > 安全防护 > WAF > 概述 > 防盗刷image

  2. 安全级别调整到我正在遭受攻击:站点管理 > 安全防护 > 设置 > 安全级别image

  3. 智能限频调整为严格:站点管理 > 安全防护 > WAF > 概述 > 智能限频image

说明

以上防护方式有可能拦截正常的业务访问,适用于止损场景,长期防护方案建议您有针对性的配置防护策略。

如何识别异常访问特征

  1. 定位流量/访问量异常的时间区间。

  2. 针对异常时间区间的数据进行分析。

    • 方法一:通过ESA控制台 > 流量分析,根据数据信息识别异常访问,比如断层式流量占比、聚集性访问特征。image

    • 方法二:通过实时日志/离线日志统计分析。

      您可以下载日志后,统计客户端ip、referer、User-Agent、URL的频次和流量情况。离线日志字段含义说明

日志统计脚本参考

创建脚本:

nano log_stats.sh

复制以下脚本内容并保存:

#!/usr/bin/env bash
# 日志统计脚本 (macOS/Linux 通用)
# 依赖: jq + awk
# 用法: ./log_multi_stats.sh <文件路径> [TopN]
# 示例:./log_multi_stats.sh /path/to/log.txt 10
# ==============================================
FILE="$1"
TOP_N="${2:-10}"  
if [[ -z "$FILE" ]]; then
    echo "用法: $0 <文件路径> [TopN]" >&2
    exit 1
fi
# 检查依赖
if ! command -v jq >/dev/null; then
    echo "[错误] 需要安装 jq" >&2
    exit 1
fi
# 统计函数 - 频次
stat_count() {
    local field="$1"
    echo "=== ${field} 频次 TOP${TOP_N} ==="
    jq -r --arg f "$field" '.[$f]' "$FILE" \
    | sort \
    | uniq -c \
    | sort -nr \
    | head -"$TOP_N" \
    | awk '{print $2, $1}'
    echo
}
# 统计函数 - 流量
stat_sum() {
    local field="$1"
    echo "=== ${field} 对应 EdgeResponseBytes 总和 TOP${TOP_N} ==="
    jq -r --arg f "$field" '.[$f] + " " + (.EdgeResponseBytes|tostring)' "$FILE" \
    | awk '{sum[$1] += $2} END {for (k in sum) printf "%s %d\n", k, sum[k]}' \
    | sort -k2,2nr \
    | head -"$TOP_N"
    echo
}
# 要统计的字段列表
FIELDS=(
    "ClientIP"
    "ClientRequestReferer"
    "ClientRequestURI"
    "ClientRequestUserAgent"
)
# 循环统计
for f in "${FIELDS[@]}"; do
    stat_count "$f"
    stat_sum "$f"
done

保存脚本操作:

  • Control + O保存

  • Enter确认文件名

  • Control + X退出 nano

赋予脚本执行权限:

chmod +x log_stats.sh

运行脚本,以统计/path/to/log.txt 日志文件中客户端ip、referer、User-Agent、URL频次和流量top5信息为例:

./log_stats.sh /path/to/log.txt 5

输出示例:

image

常见的异常访问特征

客户端ip/ip段相对集中的高频次访问的恶意请求

ip/ip段封禁(适合少量聚集性IP/IP段封禁需求)

  1. 登录ESA控制台

  2. 在站点管理页面找到目标站点,查看站点详情。

  3. 在左侧菜单栏,选择安全防护 > WAF > IP访问规则,输入目标IP/IP段,执行动作拦截,添加规则。image

批量IP/IP段封禁(适合大量IP/IP段封禁需求)

  1. 登录ESA控制台

  2. 在左侧菜单栏,选择全局配置 > 分组 > 新建分组,选择IP/网段类型,输入您需要封禁的IP/IP段,确定保存分组。image

  3. 在左侧菜单栏,选择站点管理,单击目标站点详情。

  4. 在左侧菜单栏,选择安全防护 > WAF > 自定义规则,选择客户端ip匹配在分组中,执行动作拦截,即可实现批量拦截。image

区域性IP封禁(适合区域性聚集异常访问防护)

若您查看流量分析中,IP/IP段不聚集,但异常访问客户端归属的国家/地区或中国内地省份比较聚集,您可以通过区域ip封禁来防护恶意请求。imageimage

  1. 登录ESA控制台

  2. 在左侧菜单栏,选择站点管理,单击目标站点详情。

  3. 在左侧菜单栏,选择安全防护 > WAF > 自定义规则,选择国家/地区、省份 > 等于其中任意一个,执行动作拦截。image

说明
  • 由于IP库的固有特性,可能存在预期外的拦截和放行,您可以结合IP访问规则中的黑、白名单功能完善您的防护策略。

  • 设置区域封禁前,请您一定确认区域封禁需求,误配置可能会对您的正常业务造成影响。

referer集中的盗刷场景

纯网页空referer盗刷

当您的业务为纯网页业务时,若您存在大量的非主页空referer的异常请求,建议您配置除主页外的referer防护策略。

  1. 登录ESA控制台,在左侧菜单栏,选择站点管理,单击目标站点详情。

  2. 在左侧导航栏,选择安全防护 > WAF,单击自定义规则页签。

  3. 填写规则名称,配置非主页禁止空referer访问规则。在如果请求匹配以下规则...区域设置要匹配的用户请求特征,请求匹配规则参见规则表达式的组成image

  4. 如果您需要更为宽松的防护策略,您可以在执行动作中选择JS挑战或滑块挑战。

如您空referer请求大部分来源于主页,且远超正常业务量,可能存在主页盗刷情况。首页访问一般不包含referer,不好区分真实请求和异常请求,因此时常成为恶意访问的目标。如果只需要针对首页做限制,可单独针对首页进行JS挑战,或者对全局配置js挑战。image

说明

js挑战对接口类的请求、图片视频类请求的兼容性不好,建议只针对加载页面场景时使用。纯资源类的域名,一般包含referer,可设置referer的条件后进行额外拦截限制。

如除主页外需要部分URL可以直接请求,您可以结合WAF > 白名单功能,对于特定URLreferer访问放行。

  1. 登录ESA控制台,在左侧菜单栏,选择站点管理,单击目标站点详情。

  2. 在左侧导航栏,选择安全防护 > WAF,单击白名单页签,新增规则。

  3. 填写规则名称,配置特定URI允许空referer访问。在如果请求匹配以下规则...区域设置要匹配的uri请求特征,请求匹配规则参见规则表达式的组成image

业务包含H5、小程序和APP或者客户端程序的场景解决方案

由于APP/客户端程序不像浏览器存在引用的逻辑,发起请求一般都是直接构造,因此天然不包含referer(不绝对),因此当业务场景包含APP或者客户端程序时,referer防盗链无法直接设置,需要限定条件后才能配置,避免影响正常用户。

小程序常见UA(由于UA可以被伪造,以下提供的UA标识仅供参考):

平台

UA 中关键标识

微信小程序

MicroMessenger/x.x.x

支付宝小程序

AlipayClient/x.x.xNebula

百度小程序

BaiduApp/x.x.x或 swan

字节(抖音)

BytedanceWebviewDouyin

这里以java-1.1UA作为APP/客户端程序的标识,提供一个包含程序、支付宝小程序、以及H5的防护配置方案。

表达式:(not lower(http.user_agent) contains "alipayclient" and not lower(http.user_agent) contains "java-1.1") or (not lower(http.user_agent) contains "alipayclient" and not lower(http.user_agent) contains "java-1.1")image

此方案的逻辑为:当用户请求的ua不是特定的APP程序、不是指定的小程序时,整个页面站点都执行JS挑战。

其中的条件部分,可根据实际业务场景,灵活替换。

如果您需要更有针对性地对网页/小程序业务进行防护,为您提供Bots高级防护方案(企业版)。通过高级模式,您可以为站点配置针对特定请求的防护规则集,并对不同的防护行为单独设置生效时间。高级模式还支持防护移动应用,也可以将规则集跨域配置到您账户下的其他站点中。

  1. ESA控制台,选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择安全防护 > Bots。

  3. Bots页面,选择高级模式,单击创建规则集。

  4. 如您需要的对app业务进行防护,防护目标类型选择APP。

  5. 根据您需要过滤的请求条件在如果请求匹配以下规则...中配置规则表达式。

    例如您可以对app业务中被异常访问的URL进行Bot特征识别和Bot限速,更多Bot防护方法您可以参考Bots快速上手image

referer高频接口请求的解决方案

当您发现接口请求的频率不太正常,导致源站经常处理不过来最终异常,可使用ESA的频次控制能力,限制单个IP调用接口的次数。image

聚集性UA高频次访问

ip/referer特征外,如果您的异常流量产生伴随着User-Agent聚集性异常访问,您也可以针对异常User-Agent请求进行防护。

  1. 登录ESA控制台

  2. 在左侧菜单栏,选择站点管理,单击目标站点详情。

  3. 在左侧菜单栏,选择安全防护 > WAF > 自定义规则。

  4. 配置User-Agent规则:

    • 输入规则名称

    • 在如果请求匹配以下规则...位置配置规则:

      • 当异常UA可判断,比如大量携带"spider"的异常请求访问,您可以拦截包含"spider"的User-Agent访问您的站点,配置User Agent包含 spider,执行动作拦截/挑战。image

      • 如占比较大的UA看起来无明显异常,比如正常的浏览器访问,建议您挑战此UA访问,比如占比最大的UA为标准ua格式image配置User Agent等于 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xx.xx.x Safari/537.36,执行动作挑战。image

说明

js挑战对接口类的请求、图片视频类请求的兼容性不好,建议只针对加载页面场景时使用。

特殊静态文件频繁异常访问

当您的某些静态文件出现大量超预期访问时,您可以结合上述访问特征,针对特定的URL进行访问频次的限制。

  1. 登录ESA控制台

  2. 在左侧菜单栏,选择站点管理,单击目标站点详情。

  3. 在左侧菜单栏,选择安全防护 > WAF > 频次控制规则。

  4. 配置对应的频次控制规则:

    • 输入规则名称

    • 在如果请求匹配以下规则...位置配置规则。

      比如某个客户端ip频繁访问您的某些静态文件,您可以根据静态文件特征,配置当URI/URI路径/URI字符串/文件扩展名等匹配时,对相同客户端请求做频次限制(需标准版及以上版本)。

    image

    image