接入Web 应用防火墙 WAF(Web Application Firewall)后,您可以通过设置基础防护规则和防护规则组,帮助Web业务防御SQL注入、XSS跨站、代码执行、WebShell上传、命令注入等常见的Web应用攻击。本文介绍如何设置基础防护规则和规则组。
背景信息
支持的解码
基础防护规则支持23种不同格式的解码,包括:
JSON、XML、Multipart等数据格式的解析,用以提升检测的准确率。
Unicode、HTML实体等多种编码绕过的识别,用以提升检测的召回率。
支持的检测模块
规则防护(默认开启)
基于模式匹配的防护方法,依赖于预定义的规则(即规则组)来识别已知的攻击模式,可防御常见Web应用攻击。
WAF按照防护严格程度,内置了三套默认规则组:
中等规则组:默认选用该规则组。
宽松规则组:如需减少误拦截,可选用该规则组。
严格规则组:如需提高攻击检测命中率,可选用该规则组。
您也可以根据业务需要,配置自定义规则组。
语义防护(默认开启)
更智能的防护方法,通过分析请求的内容和上下文来理解语义与语法结构,能够更好地识别未知的攻击形式,可防御SQL注入攻击。
智能运维(默认关闭)
根据历史业务流量进行AI学习,发现URL粒度不适用的规则,并自动添加白名单,有效降低误拦截风险。
支持的规则模板
模板 | 默认规则模板 | 自定义规则模板 | |
生成方式 | 系统内置。 | 用户创建。 | |
检测模块 | 规则防护 | 默认开启,应用中等规则组、拦截模式。 | 自定义应用的规则组(包括默认规则组和自定义规则组)、规则动作。 |
语义防护 | 默认开启,应用观察模式,并开启针对非注入型攻击的完整SQL语句检测开关。 | 自定义应用的规则动作,根据业务情况开启或关闭完整SQL语句检测。 | |
智能运维 | 默认关闭。 | 根据业务情况开启或关闭智能白名单。 | |
生效对象 | 接入WAF而没有关联自定义规则模板的防护对象或对象组。 | 选中的防护对象或对象组。 |
前提条件
已开通WAF 3.0服务。具体操作,请参见开通包年包月WAF 3.0、开通按量付费WAF 3.0。
如果需要创建自定义规则组,请确认已开通的实例为包年包月企业版或旗舰版,或按量付费版。
已将Web业务添加为WAF 3.0的防护对象。具体操作,请参见配置防护对象和防护对象组。
创建自定义规则组
自定义规则组可以从零创建,也可以在默认规则组的基础上创建。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏,选择 。
在基础防护规则区域,单击规则组管理。
在规则组管理页面,单击新建规则组。
配置规则组基本信息后,单击下一步。
重要自定义规则组创建完毕后,规则组基本信息不允许再次修改。
配置项
说明
规则组名称
为该规则组设置一个名称。
支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)和短划线(-)。
选择规则模板
为该规则组选择规则模板,可选项:
无模板,从零创建:不指定模板,自定义添加规则。
重要选择该选项后,是否自动更新开关默认关闭,且不支持修改。
默认规则组:基于阿里云安全内置的防护规则组,支持宽松规则组、中等规则组和严格规则组。
是否自动更新
开启后,官方默认规则组中新增或移除的规则(例如0day应急规则或不再适用的规则)将自动同步到当前自定义规则组。
重要自定义规则组创建完毕后,此设置不允许再次修改。
仅选择规则模板配置为默认规则组时,支持开启或关闭该开关。
在设置防护规则配置向导页,单击添加规则,通过输入规则ID或CVEID,设置危险等级、防护类型、应用类型,筛选并选中规则库的防护规则,单击添加;或单击全部添加。
说明如果在步骤5将选择规则模板配置为默认规则组,且要添加的规则已在规则库中,可跳过该步骤。
规则列表的规则默认按照更新时间倒序排列。
完成添加后,如果您需要删除已添加的防护规则,可在规则列表,通过输入规则ID或CVEID,设置危险等级、防护类型、应用类型,筛选并选中防护规则,单击移除;或单击清除所有。
单击下一步后,在创建完成向导页,单击完成。
成功创建规则组后,您可以在规则组列表执行如下操作:
单击内置规则数列的数字,查看规则组内置的规则。
编辑、复制或删除规则组。
说明防护规则组基本信息不允许修改。
复制后的规则组默认命名为“原规则组名称-copy”。复制后的规则组无关联防护对象。
已关联防护模板的规则组不允许被删除。如果您需要删除该规则组,请先删除与基础防护规则的关联关系。
创建自定义规则模板
在左侧导航栏,选择 。
在Web基础防护页面下方基础防护规则区域,单击新建模板。
说明首次新建基础防护规则模板时,也可在Web基础防护页面上方的基础防护规则卡片区域,单击立即配置。
在新建模板 - 基础防护规则面板,完成以下模板配置后,单击确定。
说明新建的规则模板默认开启。
配置项
说明
模板信息
模板名称:
为该模板设置一个名称。
支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)和短划线(-)。
是否设置为默认模板:
选择是否将该模板设置为当前防护模块的默认模板。
一个防护模块只允许设置一个默认模板。默认模板无需设置生效对象,默认应用于所有未关联到自定义规则模板的防护对象和对象组(包括后续新增、从自定义规则模板中移除的防护对象和对象组)。
规则配置
规则动作:
选择当请求命中该规则时,要执行的防护动作。可选项:
拦截:表示拦截命中规则的请求,并向发起请求的客户端返回拦截响应页面。
说明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搜索具体的基础防护规则。如果您认为某个规则误拦截了正常业务流量,可通过白名单模块设置针对该规则的白名单规则。关于配置白名单规则的具体操作,请参见设置白名单规则放行特定请求。
相关文档
如果您想了解WAF 3.0的防护对象、防护模块及防护流程等信息,请参见防护配置概述。
如果您想使用API创建防护模板,请参见CreateDefenseTemplate - 创建防护模板。
如果您想创建一个基础防护规则,并配置规则内容,请参见CreateDefenseRule - 创建防护规则。