ESA遭受大范围攻击怎么办?
打开WAF配置,将概述页签中的智能限频防护等级调整到严格,执行动作调整为拦截。
进入安全分析页签中,在数据总览部分,查看异常的客户端IP,利用自定义规则拦截这些IP。
进入安全分析页签中,在概览中查看请求分析的数据。针对异常数据创建WAF自定义规则拦截。例如,在Referer中发现值为
-
的请求最多,则创建拦截空Referer的请求和Referer为-
的请求(当请求存在Referer头,但是值为空时,在控制台上会以-
展示)。
为什么我ESA中的WAF配置不生效?
检查配置的规则是否正确
规则表达式的正确性直接影响WAF规则的执行效果。请确保以下几点:
匹配字段:确认您使用的匹配字段是否符合预期。例如:
URI
包含查询字符串(如/content?page=1234
),而URI路径
仅包含路径部分(如/content
)。如果规则中使用了
URI等于/content
,但实际请求中带有查询字符串,则规则不会生效。
匹配运算符:检查所选运算符是否适合当前场景(如“等于”、“包含”等)。
匹配值:确保匹配值与实际请求一致。
检查请求是否命中了白名单规则
IP访问规则和白名单规则的优先级高于其他规则。如果请求命中了IP访问规则的放行策略或白名单规则,则后续的WAF规则将被跳过,从而导致配置看似不生效。排查步骤如下:
在安全分析模块中,根据筛选条件过滤出异常请求。
查看采集日志模块中该请求命中的规则信息。
如果最终执行防护规则的是IP访问规则(最终执行防护动作为放行)或白名单规则,则证明请求因命中放行规则而跳过了其他规则。
解决方法:调整IP访问规则的放行策略和白名单规则,确保其范围不会覆盖需要防护的请求。
检查请求是否绕过ESA直接访问源站
如果攻击请求未经过ESA,而是直接访问源站,WAF规则无法生效。排查步骤如下(以Nginx
为例):
获取请求IP地址:
打开Nginx配置文件(默认路径为
/etc/nginx/nginx.conf
),查看access.log
的格式及位置。查看
access.log
文件,提取请求的$remote_addr
值,$remote_addr
字段表示直接连接到Nginx
的IP地址。
验证IP来源:
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择安全防护 > 源站防护。
在源站防护页面,单击配置。
打开状态开关,在弹出的对话框中勾选我已确认风险。,单击开启。
将日志中获取的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 | 在 | 在 |
示例 |
|
|
|
如何查看请求被哪个规则拦截了?
在响应拦截界面上,可以看到拦截的规则名称(Denied by xxx)和规则ID(RuleID)。可以通过规则名称确定被哪一种规则拦截,然后再通过拦截页面的规则ID和控制台的规则ID匹配,确定请求被哪个规则拦截。
在安全分析的采样日志中,同样可以看到请求是否被拦截以及拦截规则。例如以下示例,请求被频次控制规则拦截。
如何快速拦截大量的IP
准备将要拦截的IP/网段,中间采用英文逗号
,
分割(可以从安全分析页面通过分析获取目标 IP)。进入ESA的分组控制台,点击新建分组,将准备好的IP填入分组。
使用自定义规则拦截IP。在创建自定义规则时,匹配项选择客户端IP,匹配逻辑选择在分组中,匹配值选择上一步创建的分组名称。
点击确定,拦截规则即可创建成功并生效。
配置的规则会在哪个域名生效?
如果创建的规则中,声明了主机名的匹配规则,则该规则只会对命中主机名规则的域名生效。例如,下面的示例表示只有域名为
www.example.com
和api.example.com
的请求,并且不存在Referer头的请求才会被拦截。如果创建的规则中,匹配规则没有声明主机名的匹配规则,则站点下所有的域名的请求只要命中规则上,都会生效。