常见问题

更新时间:
复制 MD 格式

ESA与WAF 3.0是什么关系?

ESA已原生集成基于WAF 3.0的Web应用防火墙防护能力。站点接入ESA后,ESA会自动为站点提供WAF安全防护,无需单独购买和部署WAF 3.0产品。

ESA是否支持串联独立WAF?

边缘安全加速ESA支持DNS→ESA→独立WAF的串联部署架构。将ESA的回源地址配置为独立WAF的服务地址,流量先经过ESA加速和基础防护,再转发至独立WAF进行深度安全检测。

配置方式:登录ESA控制台,在站点DNS记录中将记录值/源站设置为独立WAF的IP地址(A/AAAA记录)或域名(CNAME记录)。

ESA内置WAF包含托管规则、自定义规则、频次控制等功能,适用于大多数Web防护场景。如需独立WAF的高级自定义防护能力,可采用上述串联架构。

ESA遭受大范围攻击怎么办?

  1. 打开WAF配置,将概述页签中的智能限频防护等级调整到严格,执行动作调整为拦截。

  2. 进入安全分析页签中,在数据总览部分,查看异常的客户端IP,利用自定义规则拦截这些IP。

  3. 进入安全分析页签中,在概览中查看请求分析的数据。针对异常数据创建WAF自定义规则拦截。例如,在Referer中发现值为-的请求最多,则创建拦截空Referer的请求和Referer为-的请求(当请求存在Referer头,但是值为空时,在控制台上会以-展示)。

为什么我ESA中的WAF配置不生效?

检查配置的规则是否正确

规则表达式的正确性直接影响WAF规则的执行效果。请确保以下几点:

  • 匹配字段:确认您使用的匹配字段是否符合预期。例如:

    • URI 包含查询字符串(如 /content?page=1234),而 URI路径 仅包含路径部分(如 /content)。

    • 如果规则中使用了 URI等于/content,但实际请求中带有查询字符串,则规则不会生效。

  • 匹配运算符:检查所选运算符是否适合当前场景(如“等于”、“包含”等)。

  • 匹配值:确保匹配值与实际请求一致。

解决方法:参考匹配字段、运算符和分组符号、匹配值文档中的示例,逐一核对规则配置。

检查请求是否命中了白名单规则

IP访问规则和白名单规则的优先级高于其他规则。如果请求命中了IP访问规则的放行策略或白名单规则,则后续的WAF规则将被跳过,从而导致配置看似不生效。排查步骤如下:

  1. 在安全分析模块中,根据筛选条件过滤出异常请求。

  2. 查看采集日志模块中该请求命中的规则信息。

  3. 如果最终执行防护规则的是IP访问规则(最终执行防护动作为放行)或白名单规则,则证明请求因命中放行规则而跳过了其他规则。

解决方法:调整IP访问规则的放行策略和白名单规则,确保其范围不会覆盖需要防护的请求。

检查请求是否绕过ESA直接访问源站

如果攻击请求未经过ESA,而是直接访问源站,WAF规则无法生效。排查步骤如下(以Nginx为例):

  1. 获取请求IP地址:

    1. 打开Nginx配置文件(默认路径为 /etc/nginx/nginx.conf),查看 access.log 的格式及位置。

    2. 查看 access.log 文件,提取请求的 $remote_addr 值,$remote_addr 字段表示直接连接到Nginx的IP地址。

  2. 验证IP来源:

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

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

    3. 在源站防护页面,单击配置。

    4. 打开状态开关,在弹出的对话框中勾选我已确认风险。,单击开启。

    5. 将日志中获取的IP同IPv4列表中的IP(IPv4列表中是IP区段)进行匹配。若匹配上,证明源站的请求是从ESA来的;反之,则证明请求没有经过ESA,而是直接请求的源站。

解决方法:启用源站防护功能,将ESA的节点IP列表配置到源站防火墙规则中,仅允许白名单中的流量访问源站。

如何拦截空Referer请求和不带Referer的请求?

拦截空Referer请求

定义:

“空Referer请求”是指HTTP请求中包含 Referer 字段,但其值为空(即 Referer: "")。这种情况通常由某些浏览器或代理工具导致。安全分析概览页中Referer选项的-就是空Referer请求。

解决方法:

通过概述页签提供的拦截空Referer请求模板快速创建规则。

拦截不带Referer的请求

定义:

“不带Referer的请求”是指HTTP请求中完全不包含 Referer 字段。这种情况可能由攻击者故意构造,也可能因某些客户端(如隐私模式浏览器)默认行为导致。

解决方法:

如果要拦截不存在Referer的请求,可以使用自定义规则。匹配规则填写Referer不存在。

匹配规则中的URI、URI路径、URI查询字符串有什么区别?

一个URI 的完整结构可以分为以下几个部分:

scheme:[//host]path[?query][#fragment]
  • scheme: 协议类型,例如 http、https、ftp 等。

  • host: 主机名,例如 www.example.com。

  • path: 资源在服务器上的路径,例如 /users/profile。

  • query: 查询字符串,用于传递参数,例如 ?id=123&name=John。

  • fragment: 片段标识符,用于定位页面中的特定部分,例如 #section1。

三者区别如下:

属性

URI

URI路径

URI查询字符串

定义

唯一标识资源的完整字符串

指定资源在服务器上的位置

向服务器传递额外参数的部分

位置

整个 URI

在 host 之后,? 之前

在 ? 之后,# 之前

示例

https://www.example.com/users/profile

/users/profile

?id=123&name=John

如何查看请求被哪个规则拦截了?

  • 在响应拦截界面上,可以看到拦截的规则名称(Denied by xxx)和规则ID(RuleID)。可以通过规则名称确定被哪一种规则拦截,然后再通过拦截页面的规则ID和控制台的规则ID匹配,确定请求被哪个规则拦截。

  • 在安全分析的采样日志中,同样可以看到请求是否被拦截以及拦截规则。

如何获取安全防护规则的ID?

前往对应的安全防护规则,即可在规则列表中获取对应规则的ID。

如何快速拦截大量的IP

  1. 准备将要拦截的IP/网段,中间采用英文逗号,分割(可以从安全分析页面通过分析获取目标 IP)。

  2. 进入ESA的分组控制台,点击新建分组,将准备好的IP填入分组。

  3. 使用自定义规则拦截IP。在创建自定义规则时,匹配项选择客户端IP,匹配逻辑选择在分组中,匹配值选择上一步创建的分组名称。

  4. 点击确定,拦截规则即可创建成功并生效。

配置的规则会在哪个域名生效?

  1. 如果创建的规则中,声明了主机名的匹配规则,则该规则只会对命中主机名规则的域名生效。例如,下面的示例表示只有域名为www.example.com和api.example.com的请求,并且不存在Referer头的请求才会被拦截。

  2. 如果创建的规则中,匹配规则没有声明主机名的匹配规则,则站点下所有的域名的请求只要命中规则上,都会生效。

WAF 设置 IP 黑名单或托管规则后,为何控制台拦截量统计较少?

确认返回状态码为 403 即表示已拦截成功。控制台统计可能存在延迟,可检查离线日志中 403 与 200 状态码的数量核实。

如何清除或缩短 ESA WAF 对已拦截 IP 的默认拦截时间?

目前不支持手动删除拦截记录或缩短拦截时间,需等待自动解封。

ESA WAF 白名单规则中匹配以 /api/ 开头的 URL 应使用什么语法?

要匹配所有以 /api/ 开头的 URL 请求,可在匹配条件中编辑表达式为 (starts_with(http.request.uri.path, "/api/")) 。

WAF IP 访问规则白名单上限是按单个域名计算还是账户共用?

WAF IP 访问规则白名单的配额按账户套餐下所有站点(域名)共用计算,并非针对单个域名独立计算。例如企业版默认上限为 400 条,由该账户下所有站点共享。

IP 访问规则配额达到上限(错误码 PhaseIpAccessRule.PerInstance.Length.OverQuota)或白名单数量不足时,是否支持申请提升配额?

目前暂不支持单独调升 IP 访问规则或白名单的特定项配额。建议通过创建“网段分组”并将分组添加到白名单的方式来规避条目限制,这样既可以绕过直接添加 IP 的配额瓶颈,也便于后续批量维护管理。

IP 白名单规则显示超出配额但实际未使用怎么办?

该情况通常由配额按账户维度共用导致,请检查账户下其他站点的 IP 规则占用情况。如确认账户整体未超限但仍报错,请联系我们并提供站点信息以便后台排查数据一致性。

在 WAF 中拦截恶意 IP 后,该 IP 是否无法再发起 DDoS 攻击?

是的。在 WAF 中将恶意 IP 加入黑名单后,该 IP 的请求将在边缘节点被直接拒绝,无法再访问业务源站,从而阻断该 IP 发起的进一步 DDoS 攻击请求。

病毒库和特征库在哪里查看?

ESA WAF 不提供独立的病毒库或特征库版本查看入口,也不提供对应的版本号或更新日志。防护规则由阿里云自动更新,您无需手动维护或升级规则库。

如需查看和配置安全策略,登录ESA 控制台,选择目标站点,在左侧导航栏选择安全防护 > WAF,在托管规则页签中查看和配置。托管规则由阿里云智能托管,用于防护 OWASP 攻击和最新的源站漏洞攻击。

配置 IP 相关匹配条件时,应该使用哪个字段来防止 IP 伪造?

自定义规则的匹配字段中,客户端IP(ip.src)与X-Forwarded-For(http.x_forwarded_for)是两个语义不同的独立匹配字段:客户端IP 取自与 ESA 建立连接的客户端 IP,不受客户端请求头影响;X-Forwarded-For 是 HTTP 请求头中的字段,可以被客户端任意伪造。因此配置基于 IP 的匹配条件(如地域限制、IP 黑白名单)时,建议优先使用客户端IP 作为匹配字段,避免使用X-Forwarded-For,以防止攻击者通过伪造该请求头绕过拦截规则。

如果您的源站需要获取客户端真实 IP,建议在转换规则的托管转换中开启添加真实客户端 IP 请求头,默认会在回源请求中添加名为 ali-real-client-ip 的请求头(标头名称可自定义),源站侧读取该请求头即可获取真实客户端 IP,而不依赖可能被伪造的 X-Forwarded-For 头。

如果您需要避免客户端提交的 X-Forwarded-For 头传递到源站造成干扰,可以在转换规则中配置修改出站请求头功能,对指定请求头执行新增、删除或修改操作。

为什么配置了地域/国家拦截规则,但非目标地区 IP 仍能访问?

如果规则中除国家/地区匹配条件外,还组合了其他匹配条件(如主机名、URI 等),当这些组合条件与实际请求不完全一致时,整条规则不会被触发,非目标地区的 IP 就可能正常访问。建议检查规则表达式中主机名、URI 等字段的值是否与实际访问的请求特征一致,也可以先通过安全分析或事件分析查看实际流量特征,再据此调整规则逻辑。组合条件的表达式语法可参见请求匹配规则。

为什么基于国家/地区的拦截规则会出现误拦截或无法识别 Unknown 地区?

IP 归属地信息(洲、国家/地区、省份、运营商)无法做到 100% 准确,且 VPN 或代理服务会改变 IP 的归属地显示,导致地理位置拦截失效。

私有 IP 段(如 100.64.0.0/10)及代理 IP 可能被识别为 Unknown 地区,ESA 不支持直接拦截 Unknown 地区。

建议:

  • 在地域限制规则中增加 User-Agent 或 Referer 的组合条件(例如:非指定地域 AND User-Agent 不是特定值),降低单独依赖地域判断带来的误报。

  • 出现误拦截时,可配置白名单规则放行正常 IP。

访问出现 403 Forbidden 错误如何排查?

访问返回 403 Forbidden,常见原因包括:命中了 WAF 的自定义规则拦截动作、命中了 IP 黑名单、触发了 Referer 防盗链规则、或触发了地域/国家访问限制等访问控制策略。

排查时,建议先获取完整的 HTTP 响应头信息,响应头中通常会包含命中规则的相关标识,可用于定位具体触发的规则;然后登录 ESA 控制台,在安全防护模块下逐一检查自定义规则的匹配条件与执行动作、IP 访问规则(黑名单)配置,以及缓存资源相关配置,确认是哪条规则或策略导致了本次拦截。