规则库管理

在您使用Web应用防火墙(Web Application Firewall,简称WAF)3.0时,可以通过规则库管理查看系统内置的所有防护规则,以及配置适用于混合云防护的自定义防护规则。本文介绍了如何通过规则库管理功能配置您的自定义防护规则。

系统防护规则

系统防护规则由阿里云安全团队后台维护和更新,目前仅支持查看。

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地在左侧导航栏,选择检测与响应 > 规则库管理

  2. 选择系统防护规则。页签左侧展示规则信息,页签右侧展示规则更新动态情况。

自定义防护规则

自定义规则只适用于混合云防护对象。在规则库管理中,您可以对自定义规则进行新增、查看、编辑、删除。

新建自定义防护规则

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地

  2. 在左侧导航栏,选择检测与响应 > 规则库管理

  3. 选择自定义防护规则区域,单击新建规则完成以下模板配置后,单击确定

    配置项

    说明

    规则名称

    支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)和短划线(-)。

    检测模块名称

    支持SQL注入跨站脚本代码执行CRLF本地文件包含远程文件包含webshell其它OS命令注入表达式注入Java反序列化PHP反序列化SSRF路径穿透协议违背任意文件上传文件包含等。

    规则等级

    自定义规则所属的规则等级。支持宽松中等严格超严格

    规则状态

    默认状态为关闭,请前往防护模板-引擎配置页面开启生效。

    规则动作

    新建规则的规则动作默认为拦截,您可以在基础防护规则模板的引擎配置面板中启用规则时进行更改。

    规则描述

    描述该规则的条件及目的,非必填项。

    匹配字段

    设置该规则要匹配的请求特征。

    规则中最多支持添加十个条件。如果定义了多个条件,需同时满足才算命中规则。

    每个条件由匹配字段逻辑符匹配内容组成。配置示例如下:

    • 示例1:匹配字段URI逻辑符包含匹配内容/login.php,表示当被请求的路径包含/login.php时,则请求命中该规则。

    • 示例2:匹配字段IP逻辑符属于匹配内容192.1X.XX.XX,表示当发起连接的客户端IP192.1.XX.XX时,则请求命中该规则。

    关于匹配字段和逻辑符的更多说明,请参见匹配条件说明

    说明

    单个账号(包含子账号)最多创建200条自定义规则

  4. 页面提示操作成功后,证明规则新建完成。

启用自定义防护规则

在新建自定义防护规则后,若想让该防护规则关联对应混合云防护对象,需要进入规则引擎配置启用。

  1. 在左侧导航栏,选择防护配置 > Web基础防护Web基础防护页面下方基础防护规则区域找到目标规则模版,单击操作列下的编辑

  2. 进入编辑模板 - 基础防护规则面板后,单击引擎配置进入自定义防护规则,选择你的目标规则将规则状态开启。

编辑自定义防护规则

自定义防护规则页面中,单击操作列下的编辑,在编辑规则的弹窗中可以编辑规则名称、规则等级规则状态规则描述、匹配字段。完成编辑后,单击确定,待页面弹出操作成功的提示后,您能在页面上查看编辑后的规则信息。

删除自定义防护规则

自定义防护规则页面中,选择要删除的目标规则,单击操作列下的删除,删除该规则。

重要

一旦规则被删除,即使在检测引擎中将该规则的状态设置为“启用”,该规则也将不再生效,并在检测引擎中同步删除。

匹配条件说明

支持的匹配字段

匹配字段

说明

支持的逻辑符

Filename

匹配请求中整个文件的特征。例如abc.php

包含、正则匹配、等于、前缀匹配、后缀匹配。

URI PATH

匹配请求中的当前URI,不带请求参数,等价于path。

包含、正则匹配、等于、前缀匹配、后缀匹配。

RAW-URL

匹配请求中的当前URI,不带请求参数,不做解码。例如:%2Ftest.php。

包含、正则匹配、等于、前缀匹配、后缀匹配。

URI

如/login.php?a=1,不包含域名。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Http-Method

匹配请求方法,例如:GET/POST/DELETE/PUT/OPTIONS/CONNECT/HEAD/TRACE/PATCH

包含、正则匹配、等于、前缀匹配、后缀匹配。

Directory

匹配完整路径中的特征,包括urifile,例如:/abc/123.txt。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Param

匹配参数和参数名中的特征,例如:?a=b , ?号以后的范围。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Raw-Header

匹配完整header中的特征,不做解码,做key/value拆分,例如:整个header作为整体,不做解码和key/value拆分。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Body

匹配请求body中的特征,例如:完整的body,不做key/value拆分。

包含、正则匹配、等于、前缀匹配、后缀匹配。

File Extension

匹配URL中文件扩展名中的特征,例如:.jspa。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Multipart

例如:multipart格式,filename=../test, multipart.filename, 可以精准匹配到filename后的值,避免过度匹配。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Header

cookie:../test ,header.cookie, 可以精准匹配到cookie后的值,避免过度匹配。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Query String Parameter

假设您有一个URL如下:

https://example.com/path?queryarg.k=value1&queryarg.other=value2

在这个URL中,您关心的查询参数是queryarg.k,而它的值是value1。queryarg.k , 可以精准匹配到k后的值,避免过度匹配,同时避免提取到queryarg.other或者其他类似的查询参数。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Body Paramter

在请求的body中, postarg.k 可以精准匹配到v后的值,避免过度匹配。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Multipart-Keys

请求的Content-Type: multipart/form-data。匹配的范围是文件名。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Multipart-Values

请求的Content-Type: multipart/form-data。匹配的范围是文件内容。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Header-Keys

匹配headerk-v的特征,匹配范围是headerkey。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Header-Values

匹配headerk-v的特征,匹配范围是headervalue。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Post-Arg-Keys

匹配body中参数名的特征,form表单格式,例如:bodyk=v,匹配范围是k。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Post-Arg-Values

匹配body中参数值的特征,form表单格式,例如:bodyk=v,匹配范围是v。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Query-Arg-Keys

匹配url中参数名的特征,例如:/test.php?k=v,匹配k。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Quer-Arg-Values

queryarg_values 匹配url中参数值的特征,例如:/test.php?k=v,匹配v。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Cookie-Keys

cookie_keys 匹配cookie中参数名的特征,例如:cookie: a=b;c=d,匹配a或者c。

包含、正则匹配、等于、前缀匹配、后缀匹配。

Cookie-Values

匹配cookie中参数值的特征,例如:cookie: a=b;c=d,匹配b或者d。

包含、正则匹配、等于、前缀匹配、后缀匹配。