全部产品
Search
文档中心

Web 应用防火墙:基础防护规则和规则组

更新时间:Sep 06, 2024

接入Web 应用防火墙 WAF(Web Application Firewall)后,您可以通过设置基础防护规则和防护规则组,帮助Web业务防御SQL注入、XSS跨站、代码执行、WebShell上传、命令注入等常见的Web应用攻击。本文介绍如何设置基础防护规则和规则组。

背景信息

支持的解码

基础防护规则支持23种不同格式的解码,包括:

  • JSON、XML、Multipart等数据格式的解析,用以提升检测的准确率。

  • Unicode、HTML实体等多种编码绕过的识别,用以提升检测的召回率。

支持的检测模块

  • 规则防护(默认开启)

    基于模式匹配的防护方法,依赖于预定义的规则(即规则组)来识别已知的攻击模式,可防御常见Web应用攻击。

    • WAF按照防护严格程度,内置了三套默认规则组:

      • 中等规则组:默认选用该规则组。

      • 宽松规则组:如需减少误拦截,可选用该规则组。

      • 严格规则组:如需提高攻击检测命中率,可选用该规则组。

    • 您也可以根据业务需要,配置自定义规则组。

  • 语义防护(默认开启)

    更智能的防护方法,通过分析请求的内容和上下文来理解语义与语法结构,能够更好地识别未知的攻击形式,可防御SQL注入攻击。

  • 智能运维(默认关闭)

    根据历史业务流量进行AI学习,发现URL粒度不适用的规则,并自动添加白名单,有效降低误拦截风险。

支持的规则模板

模板

默认规则模板

自定义规则模板

生成方式

系统内置。

用户创建。

检测模块

规则防护

默认开启,应用中等规则组拦截模式。

自定义应用的规则组(包括默认规则组和自定义规则组)、规则动作

语义防护

默认开启,应用观察模式,并开启针对非注入型攻击的完整SQL语句检测开关。

自定义应用的规则动作,根据业务情况开启或关闭完整SQL语句检测

智能运维

默认关闭。

根据业务情况开启或关闭智能白名单

生效对象

接入WAF而没有关联自定义规则模板的防护对象或对象组。

选中的防护对象或对象组。

前提条件

创建自定义规则组

自定义规则组可以从零创建,也可以在默认规则组的基础上创建。

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

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

  3. 基础防护规则区域,单击规则组管理

  4. 规则组管理页面,单击新建规则组

  5. 配置规则组基本信息后,单击下一步

    重要

    自定义规则组创建完毕后,规则组基本信息不允许再次修改。

    配置项

    说明

    规则组名称

    为该规则组设置一个名称。

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

    选择规则模板

    为该规则组选择规则模板,可选项:

    • 无模板,从零创建:不指定模板,自定义添加规则。

      重要

      选择该选项后,是否自动更新开关默认关闭,且不支持修改。

    • 默认规则组:基于阿里云安全内置的防护规则组,支持宽松规则组、中等规则组和严格规则组。

    是否自动更新

    开启后,官方默认规则组中新增或移除的规则(例如0day应急规则或不再适用的规则)将自动同步到当前自定义规则组。

    重要
    • 自定义规则组创建完毕后,此设置不允许再次修改。

    • 选择规则模板配置为默认规则组时,支持开启或关闭该开关。

  6. 设置防护规则配置向导页,单击添加规则,通过输入规则IDCVEID,设置危险等级防护类型应用类型,筛选并选中规则库的防护规则,单击添加;或单击全部添加

    说明
    • 如果在步骤5选择规则模板配置为默认规则组,且要添加的规则已在规则库中,可跳过该步骤。

    • 规则列表的规则默认按照更新时间倒序排列。

    完成添加后,如果您需要删除已添加的防护规则,可在规则列表,通过输入规则IDCVEID,设置危险等级防护类型应用类型,筛选并选中防护规则,单击移除;或单击清除所有

  7. 单击下一步后,在创建完成向导页,单击完成

    成功创建规则组后,您可以在规则组列表执行如下操作:

    • 单击内置规则数列的数字,查看规则组内置的规则。

    • 编辑复制删除规则组。

      说明
      • 防护规则组基本信息不允许修改。

      • 复制后的规则组默认命名为“原规则组名称-copy”。复制后的规则组无关联防护对象。

      • 已关联防护模板的规则组不允许被删除。如果您需要删除该规则组,请先删除与基础防护规则的关联关系。

创建自定义规则模板

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

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

    说明

    首次新建基础防护规则模板时,也可在Web基础防护页面上方的基础防护规则卡片区域,单击立即配置

  3. 新建模板 - 基础防护规则面板,完成以下模板配置后,单击确定

    说明

    新建的规则模板默认开启。

    配置项

    说明

    模板信息

    • 模板名称

      为该模板设置一个名称。

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

    • 是否设置为默认模板

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

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

    规则配置

    • 规则动作

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

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

        说明

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

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

        重要

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

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

      说明

      您可以通过安全报表,查询拦截类、观察类防护规则的命中详情。更多信息,请参见安全报表

    • 规则组类型

      配置基础防护规则关联的规则组类型并选择相应的规则组。可选项:

      • 默认:选择该项后,关联默认规则组,支持宽松规则组中等规则组严格规则组

      • 自定义:选择该项后,需在下拉列表中选择相应的规则组。关于新建规则组的具体操作,请参见创建自定义规则组

    语义引擎

    语义引擎默认开启,可防御SQL注入攻击。

    针对非注入型攻击,语义引擎提供完整SQL语句检测开关,用于开启或关闭该检测。

    说明

    非完整SQL语句和完整SQL语句区别如下:

    • 非完整SQL语句:指请求中包括SQL片段,后端业务可通过拼接,形成完整的SQL,例如/query.php?name='and 1=1%23

    • 完整SQL语句:指请求中包含完整的SQL,例如/query.php?sql=select name from users where 1=1%23

    语义引擎支持如下配置:

    • 规则动作

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

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

        说明

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

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

        重要

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

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

      说明

      您可以通过安全报表,查询拦截类、观察类防护规则的命中详情。更多信息,请参见安全报表

    • 完整SQL语句检测(默认开启)

      如果WAF检测到请求中包含非注入型攻击,即包含完整的SQL(例如/query.php?sql=select name from users where 1=1%23),WAF会根据设置的规则动作作出相应处置。

      说明

      如果您的实际业务存在数据分析场景,例如phpmyadmin、Adminer等,建议关闭此检测。

    协议合规

    由于每种语言处理HTTP请求数据格式要求的松散程度不同,从而衍生出多种绕过WAF防御的方式,比较典型的是文件上传场景,协议合规主要是从协议层面判断数据格式是否符合标准,是防御文件上传等类型变种攻击的利器。

    协议合规需要企业版和旗舰版支持,高级版默认不支持,按量单独计费。

    智能运维

    打开智能白名单开关后,WAF将根据历史业务流量进行AI学习,发现URL粒度不适用的规则,并自动添加白名单,有效降低误拦截风险。

    自动添加的白名单规则会在白名单规则列表的AutoTemplate模板中显示。更多信息,请参见查看白名单

    说明

    仅按量付费版、包年包月企业版或旗舰版支持该功能。

    生效对象

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

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

    成功创建规则模板后,您可以在规则列表执行如下操作:

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

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

    • 编辑删除规则模板。

    • 如果在创建基础防护模板时,已打开智能白名单开关(防护规则后缀显示为已开启智能白名单图标),您可以单击操作列的智能下发记录,查看智能白名单下发记录。如果未打开智能白名单开关(防护模板后缀显示为未开启智能白名单图标),您可以直接在模板列表,打开或关闭智能白名单开关。

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

    您也可以在基础防护规则区域,单击规则组管理,查看规则组与规则模板的关联关系。

后续操作

您可以在安全报表页面的基础防护规则页签,查询具体防护规则的命中记录。例如,您可以在攻击事件记录区域,单击规则ID对应的查看详情,了解命中该规则的攻击详情。更多信息,请参见基础防护规则

重要

Web基础防护页面不支持通过规则ID搜索具体的基础防护规则。如果您认为某个规则误拦截了正常业务流量,可通过白名单模块设置针对该规则的白名单规则。关于配置白名单规则的具体操作,请参见设置白名单规则放行特定请求

相关文档