WAF防护

更新时间: 2024-04-07 10:33:00

DCDN结合边缘Web应用防火墙WAF(Web Application Firewall)能力,在DCDN节点上提供WAF防护功能,可以有效识别业务流量恶意特征,将正常、安全的流量回源到服务器。避免网站服务器被恶意入侵,保障业务的核心数据安全,解决因恶意攻击导致的服务器性能异常问题。

不同套餐支持情况

功能项

基础版

标准版

高级版

企业版

自定义规则

3条

10条

50条

100条

频次控制

不支持

2条

5条

10条

托管规则

不支持

支持

支持

支持

扫描防护

不支持

5条

10条

20条

白名单

2条

3条

5条

10条

请求特征匹配类型(MatchType)

  • IP源地址

  • 主机名

  • IP源地址

  • 主机名

  • URI

  • URI 路径

  • URI 查询字符串

  • URI 指定查询字符串

  • IP源地址

  • 主机名

  • URI

  • URI 路径

  • URI 查询字符串

  • URI 指定查询字符串

  • Cookie

  • Cookie 值

  • 国家/地区

  • 引用方

  • 请求方法

  • SSL/HTTPS

  • HTTP 版本

  • 用户代理

  • X-Forwarded-For

  • 请求标头

  • MIME类型

  • IP源地址

  • 主机名

  • URI

  • URI 路径

  • URI 查询字符串

  • URI 指定查询字符串

  • Cookie

  • Cookie 值

  • 国家/地区

  • 引用方

  • 请求方法

  • SSL/HTTPS

  • HTTP 版本

  • 用户代理

  • X-Forwarded-For

  • 请求标头

  • MIME类型

  • ASN编号

  • HTTP 请求Body

  • Body查询字符串

功能介绍

配置项

功能描述

自定义规则

如果您的站点需要自定义控制用户的访问策略,您可以在自定义规则中设置请求匹配条件,并通过拦截、观察等方式控制匹配到的用户请求,帮助您的站点更加灵活的限制用户可访问的内容。

频次控制

频次控制用于抑制某一类特征的请求访问,例如同一个客户端IP在某一段时间内高频访问您的站点,您希望在超过某个阈值后使用滑块控制其访问频次或拉黑一段时间,即可使用频次控制功能。

托管规则

SQL注入、跨站脚本、代码执行、CRLF、远程文件和WebShell等入侵型攻击一般难以察觉且危害大,很难使用自定义规则、频次控制等规则自行配置攻击特征进行防护。托管规则是阿里云系统内置的智能托管防护规则,可以智能防护OWASP攻击和最新的源站漏洞攻击,您可以直接启用各类攻击的防护而无需手动配置和更新。

扫描防护

扫描防护模块通过识别扫描行为和扫描器特征,阻止攻击者或扫描器对网站的大规模扫描行为,对攻击源执行拦截操作或自动拉入黑名单,帮助Web业务降低被入侵的风险并减少扫描带来的垃圾流量。

白名单

白名单规则允许您根据业务场景,自定义放行具有指定特征的请求,使请求不经过全部或特定防护规则(自定义规则、频次控制、托管规则、扫描防护、Bot管理)的检测。

规则支持筛选的用户请求特征

一条完整的用户请求筛选规则由条件表达式逻辑判断运算符构成:

image

  • 条件表达式:筛选满足特定特征的用户请求。

  • 逻辑判断运算符:组合多个条件表达式筛选的用户请求。

您可以根据实际业务需求设置多个条件表达式并组合用于筛选用户请求。

条件表达式

全站加速 DCDN支持匹配多种用户请求的特征,您可根据需求设置条件表达式用于筛选用户请求。

image

条件表达式支持的配置

说明

选择包含以下各项不包含以下各项时支持输入多个值,请逐个输入并按回车确认或在下拉列表中选择。

匹配类型(MatchType)

匹配类型

(英文名称)

匹配类型含义

匹配类型

变量

支持的匹配运算符(MatchOperator)

匹配值(MatchValue)

是否支持区分大小写

匹配值是否允许配置空字符串

请求方法

Request Method

客户端请求使用的请求方法。

http.request.method

  • 等于

  • 不等于

  • 包含以下各项

  • 不包含以下各项

可选值:

  • GET

  • POST

  • PURGE

  • PUT

  • HEAD

  • OPTIONS

  • DELETE

  • PATCH

HTTP 版本

HTTP Version

客户端请求使用的HTTP版本。

http.request.version

可选值:

  • HTTP/1.0

  • HTTP/1.1

  • HTTP/2.0

  • HTTP/3.0

国家/地区

Country or Region

客户端IP地址归属的国家/地区。

ip.geoip.country

您可以通过下拉列表来选择。

文件名

File Name

客户端请求的文件的名称

http.request.uri.path.file_name

不包含文件后缀的文件名,如:

  • /a/b 文件名是b

  • /a/b/ 文件名为空

  • /foo.tar.bz2 文件名为foo.tar

  • 128_128.jpg 文件名为128_128

文件扩展名

File Extension

客户端请求的文件的后缀名。

http.request.uri.path.extension

从右向左识别,识别到第一个".",不包含"."。例如:文件foo.tar.bz2的后缀是bz2。

IP源地址

IP Source Address

客户端的IP。

ip.src

  • 支持填写IPv4格式IP,例如:192.168.X.X

  • 支持填写IPv6格式IP,例如:240e:95c:3004:2:3:0:0:XXX

  • 支持网段方式填写,例如:192.168.XXX.XXX/31

SSL/HTTPS

SSL/HTTPS

客户端请求使用的协议类型。

http.request.scheme

  • 等于

  • 不等于

可选值:

  • http

  • https

主机名

Hostname

客户端请求携带的hostname。

匹配顺序:请求URL中的host>请求头HOST中的host。

http.host

  • 等于

  • 不等于

  • 包含字符串

  • 不包含字符串

  • 字符串开头为

  • 字符串结尾为

  • 字符串开头不是

  • 字符串结尾不是

  • 与正则表达式匹配

  • 与正则表达式不匹配

  • 值为其中任意一项

  • 值不为其中任意一项

例如:["www1.alibaba.com","www2.alibaba.com"]

URI

URI

客户端请求URL中的路径,包含请求参数。

http.request.uri

例如:/articles/index?section=330688&expand=comments

主机URI 完整名

URI FULL

客户端请求的完整URI。

http.request.full_uri

例如:htt­ps://www.example.org/articles/index?section=330688&expand=comments

URI 路径

URI Path

客户端请求URL中的路径,不含请求参数。

http.request.uri.path

例如:/articles/index

URI 查询字符串

URI Query String

客户端请求URL中完整的请求参数。

http.request.uri.query

例如:section=330688&expand=comments

URI 指定查询字符串

URI Specifies Query String

客户端请求URL中指定的请求参数。

http.request.uri.args["session"]

支持输入指定查询字符串的参数名称,对指定参数的值进行匹配,例如:参数session的值330688。

说明

仅在如下匹配运算符时支持空值:

  • 等于

  • 不等于

  • 包含

  • 与正则表达式匹配

Cookie

Cookie

客户端请求携带的Cookie。

http.cookie

  • 等于

  • 不等于

  • 包含字符串

  • 不包含字符串

  • 与正则表达式匹配

  • 与正则表达式不匹配

例如:session=330688;background=light。

用户代理

User-Agent

客户端请求携带的客户端信息。

http.user_agent

例如:curl/7.29.0。

引用方

Referer

发起客户端请求的原始页面的URL。

http.referer

例如:http://refer.com.cn。

X-Forwarded-For

X-Forwarded-For

客户端请求中X-Forwarded-For标头的值。

http.x_forwarded_for

例如:192.168.1.X,192.168.2.X

请求标头

Request Header

客户端请求中指定标头。

http.request.headers["session"]

支持输入指定标头名称,对指定请求标头的值进行匹配,例如:标头session的值330688。

Cookie 值

Cookie value of

客户端请求中指定的Cookie参数。

http.request.cookies["session"]

支持输入指定Cookie参数,对指定Cookie参数的值进行匹配,例如:参数session的值330688。

逻辑判断运算符

对同一个层级内的条件(包括被嵌套的条件集合)进行逻辑判断,支持And和Or。

  • And(并且):逻辑与运算符,所有条件都匹配才会匹配成功。

  • Or(或者):逻辑或运算符,其中一个条件匹配即可匹配成功。

执行动作说明

当请求命中某条规则时,要执行的防护动作说明如下:

执行动作

说明

拦截

表示拦截命中规则的请求,并向发起请求的客户端返回拦截响应页面。

说明

若需要在拦截操作中自定义拦截页面时,请参见自定义页面

观察

表示不拦截命中规则的请求,只通过日志记录请求命中了规则。您可以通过WAF日志,查询命中当前规则的请求,分析规则的防护效果(例如,是否有误拦截等)。

JS挑战

表示WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则拦截请求。

滑块验证

表示WAF向客户端返回滑动验证页面。如果客户端成功执行滑动验证,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则拦截请求。