全部产品
Search
文档中心

Web 应用防火墙:自定义规则

更新时间:Sep 06, 2024

接入Web应用防火墙(Web Application Firewall,简称WAF)后,您可以自定义访问控制规则和频率控制规则,防御符合规则的请求。本文介绍如何创建自定义规则模板并添加自定义规则。

背景信息

自定义规则分为以下类型:

自定义规则

说明

相关配置

访问控制规则

根据客户端IP、请求URL及常见的请求头字段定义请求特征匹配条件,对命中匹配条件的请求执行相应处置。例如,您可以使用自定义规则拦截访问指定URI的请求、对包含指定User-Agent内容的请求进行校验等。

  • 关闭频率设置后,启用访问控制规则。

  • 开启频率设置,启用频率控制规则。

具体操作,请参见步骤二:在自定义规则模板中添加防护规则

频率控制规则

在访问控制匹配条件的基础上,定义访问频率检测条件,对访问频率异常的统计对象执行相应处置。例如,如果同一个IP或会话在短时间内频繁命中匹配条件,您可以通过启用频率控制,在一段时间内拦截该IP或会话的请求。

前提条件

步骤一:创建自定义规则模板

自定义规则不提供默认规则模板。如果您需要启用自定义规则,您必须新建一个规则模板,再配置对应规则。

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

  2. 在左侧导航栏,选择防护配置 > Web基础防护

  3. Web基础防护页面下方自定义规则区域,单击新建模板

    说明

    如果您是第一次创建自定义规则模板,您也可以在Web基础防护页面上方的自定义规则卡片区域,单击立即配置

  4. 新建模板 - 自定义规则面板,完成以下配置,单击确定

    配置项

    说明

    模板名称

    为该模板设置一个名称。

    长度为1~255个字符,支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)和短划线(-)。

    是否设置为默认模板

    选择是否将该模板设置为当前防护模块的默认模板。

    一个防护模块只允许设置一个默认模板。默认模板无需设置生效对象,默认应用于所有未关联到自定义规则模板的防护对象和对象组(包括后续新增、从自定义规则模板中移除的防护对象和对象组)。

    规则配置

    您可以单击新建规则,为当前模板新建自定义规则;或者忽略该设置,在创建规则模板后,再为模板新建规则。关于新建自定义规则的具体操作,请参见步骤二:在自定义规则模板中添加防护规则

    生效对象

    从已添加的防护对象及对象组中,选择要应用该模板的防护对象防护对象组

    一个防护对象或对象组只能关联到当前防护模块下的一个模板。关于添加防护对象和对象组的具体操作,请参见配置防护对象和防护对象组

    新建的规则模板默认开启。您可以在规则模板列表执行如下操作:

    • 查看模板关联的防护对象/组的数量。

    • 通过模板开关,开启或关闭模板。

    • 编辑删除规则模板。

    • 单击规则模板名称左侧的展开图标 图标,查看规则模板包含的规则。

步骤二:在自定义规则模板中添加防护规则

只有添加防护规则后,自定义规则模板才具有防护作用。如果您已在创建自定义规则模板时添加了防护规则,可跳过该步骤。

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

  2. 在左侧导航栏,选择防护配置 > Web基础防护

  3. 自定义规则区域,定位到要新建规则的规则模板,单击操作列下的新建规则

  4. 新建规则对话框,完成以下配置,单击确定

  5. 配置项

    说明

    规则名称

    为该规则设置一个名称。

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

    匹配条件

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

    单击新增条件,添加一个条件。一个规则中最多可以添加五个条件。如果定义了多个条件,则只有当多个条件同时满足时,才算命中规则。

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

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

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

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

    频率设置

    选择是否启用频率控制。频率控制表示如果来自同一统计对象(IP、会话等)的请求频繁地命中规则,则在一段时间内,对该统计对象的所有访问执行相应处置。

    重要

    频率控制规则按照防护对象维度来限制同一统计对象的请求频率。假设您将一个ALB实例作为防护对象并为该ALB实例应用了频率控制规则,如果ALB实例中包含多个域名的流量,则统计访问频率时会按照多个域名一起统计。如果您只需限制对某个域名的访问频率,可以使用以下方式进行配置:

    • 方式1:将域名添加为WAF的防护对象,并为该域名对象应用频率控制规则。更多信息,请参见配置防护对象和防护对象组

    • 方式2:仍对云产品实例对象应用频率控制规则,但是在规则的匹配条件中,通过Host字段定义要限制访问频率的域名。

    启用频率控制后,您需要设置频率控制参数。

    • 频率检测条件

      统计时长(秒)内,一个统计对象命中规则的次数超过阈值(次),则对该对象进行黑名单处置。

      • 统计对象

        选择请求频率的统计对象。可选项:

        • IP:表示统计同一个IP发起请求的频率。

        • Session:表示统计来自同一个会话发起请求的频率。

        • 自定义header:表示统计包含指定Header的请求的频率。

        • 自定义参数:表示统计包含指定参数的请求的频率。

        • 自定义cookie:表示统计包含指定Cookie的请求的频率。

      • 统计时长(秒)

        设置统计周期。单位:秒。

      • 阈值(次)

        设置在统计时长(秒)内,允许统计对象命中匹配条件的最大次数。

    • 响应码检测条件

      获得响应码的响应数量或比例超过设置的数量比例(%)时,则对该对象进行黑名单处置。

      • 响应码

        选择是否在频率检测的基础上,启用响应码检测,即防护对象既要满足频率检测条件,还要满足特定的响应码特征,才会触发黑名单处置。启用响应码检测时,需设置要统计的响应码。

      • 数量

        设置在统计时长内,允许指定的响应码在请求响应中出现的最大次数。

        说明

        数量比例(%)二选一。

      • 比例(%)

        设置在统计时长内,允许指定的响应码在请求响应中的最大占比。

        说明

        数量比例(%)二选一。

    • 黑名单处置条件

      将命中频率检测条件的统计对象加入黑名单,在黑名单超时时间内,对来自该对象黑名单生效范围内的请求执行规则动作中定义的处置。

      • 黑名单生效范围

        设置黑名单处置的生效范围。可选值:

        • 仅作用于当前规则的匹配条件:表示只处置满足当前规则匹配条件的请求。

        • 作用于整个防护对象:表示处置受限制对象的所有请求。

      • 黑名单超时时间

        设置黑名单处置的生效时长。单位:秒。取值范围:60~86400。

    防护类型

    该参数无需手动设置,其值取决于频率设置开关的状态:

    • 开启频率设置时:防护类型固定为频率控制

    • 关闭频率设置时:防护类型固定为访问控制

    规则动作

    选择当请求命中该规则时,要执行的防护动作。可选项:

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

      说明

      WAF默认使用统一的拦截响应页面,您可以通过自定义响应功能,自定义拦截响应页面。更多信息,请参见设置自定义响应规则配置拦截响应页面

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

      重要

      只有开通日志服务,您才可以使用日志查询功能。更多信息,请参见开启或关闭日志服务

      观察模式方便您试运行首次配置的规则,待确认规则没有产生误拦截后,再将规则设置为拦截模式。

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

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

    • 严格滑块:表示WAF向客户端返回滑动验证页面。如果客户端成功执行滑动验证,则WAF放行本次请求,否则拦截请求。严格滑块验证模式下,客户端的每次请求都需要验证。

    说明
    • 按量付费实例、包年包月企业版和旗舰版实例支持滑块验证。

    • 自定义规则的JS校验滑块验证仅适用于静态页面。如需兼容XMLHttpRequest、Fetch等异步接口响应,您可以在BOT管理中启用JS校验和滑块验证。具体操作,请参见开通和配置Bot管理

    • 启用了JavaScript校验滑块防护动作,当访问流量命中规则后,Web应用防火墙将对客户端发起JS校验或滑块验证,当客户端验证通过后将会在HTTP报文的Header中分别植入Cookieacw_sc__v2acw_sc__v3,用于标识客户端已经通过验证。

    高级设置

    仅包年包月企业版和旗舰版、按量付费版支持高级设置,包年包月基础版、高级版不支持该功能。

    • 规则灰度:配置规则针对不同维度的对象的生效比例。

      开启规则灰度后,您还需要设置灰度维度灰度比例。灰度维度包括:IP自定义header自定义参数自定义CookieSession

    • 生效时间模式

      • 永久生效(默认):防护模板开启时,规则永久生效。

      • 按时间段生效:您可以将具体某一时区的一段时间设置为防护规则的生效时间。

      • 按周期生效:您可以将具体某一时区的每一天的一段时间设置为防护规则的生效时间。

    新建的规则默认开启。您可以在规则模板列表执行如下操作:

    • 通过状态开关,开启或关闭规则。

    • 编辑删除规则。

后续步骤

您可以在安全报表页面的自定义规则页签,查询防护规则的防护详情。更多信息,请参见IP黑名单、自定义规则、扫描防护、CC防护或区域封禁

相关文档