基础防护规则

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

重要

北京时间2024117日基础防护规则功能升级,参见【公告】WAF 3.0基础防护规则功能升级。本文介绍的是新版本的基础防护,如果您使用的是旧版本的基础防护功能请参照基础防护规则和规则组

模块功能概述

基础防护规则中每个模板使用独立的检测引擎。根据业务经验,把众多系统防护规则划分成各个检测模块,每个检测模块各自负责识别不同类型的攻击。规则模板、检测引擎、检测模块、规则之间的关系图如下。

公有云防护场景

混合云防护场景

imageimage

功能特性

支持多种解码

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

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

  • 支持识别使用特殊编码(如UnicodeHTML实体)绕过安全检查的方法,以提升攻击的检出率。

支持智能加白引擎

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

支持混合云场景下的自定义防护规则

自定义防护规则仅对混合云接入的防护对象生效。如需添加自定义防护规则,并在规则模板中使用,请参见规则库管理

前提条件

创建规则模板

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地在左侧导航栏,选择防护配置 > Web基础防护基础防护规则区域,单击新建模板

  2. 新建模板 - 基础防护规则面板,请按照以下步骤完成模板配置,配置完成后,单击确定

    1. 步骤一:配置模板信息

      配置项

      配置字段

      说明

      模板信息

      模板名称

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

      是否设置为默认模板

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

    2. 步骤二:引擎设置

      配置项

      配置字段

      说明

      引擎设置

      检测引擎自动更新

      默认为开启状态,开启后未来阿里云安全团队默认规则中新增或移除的规则(如0day应急规则或不再适用的规则)将对当前检测引擎中的规则自动同步。

      引擎配置

      系统防护规则:基于阿里云安全内置的检测模块,包含超严格严格中等宽松四种等级规则,其中超严格等级和严格等级的规则状态默认关闭,中等等级和宽松等级的规则状态默认开启。

      说明

      所支持的检测模块可以参考检测模块说明

      防护规则支持如下配置:

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

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

          说明

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

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

          重要

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

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

        说明

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

      • 规则状态:可选择开启或关闭。若关闭,请求将不会再命中该规则。

      自适应引擎

      智能加白引擎:默认为关闭状态。

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

      说明

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

    3. 步骤三:确认生效范围

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

      一个防护对象或对象组只能关联一个基础防护规则模板。关于添加防护对象和对象组的具体操作,请参见配置防护对象和防护对象组

查看规则模板

在后续使用过程中,您可以单击规则模板名称左侧的展开图标 图标,查看规则模板包含的引擎信息。您可以单击引擎配置,进入引擎配置页面查看详细规则的规则动作与规则状态等信息。

编辑规则模板

开启与关闭规则模板

成功创建规则模板后,您可以通过模板开关,开启或关闭模板。

更改规则模板

可以单击目标模板操作列的编辑。完成调整后,点击下方确认,保存此次变更。

说明

在混合云防护场景下,引擎配置面板的自定义防护规则支持如下配置:

  • 规则动作:当请求命中该规则时,要执行的防护动作。可选观察或者拦截

  • 规则状态:默认关闭,可选择开启或关闭。若开启,则该设置将对规则模板生效。

删除规则模板

您可以删除不需要的规则模板,删除之前请确认该模板没有关联的防护对象。请单击目标模板操作列中的删除按钮,并在弹出提示中点击确定

重要
  • 一旦模板被删除,系统将自动使用默认模板来保护之前由该模板防护的对象。

  • 删除默认模板,如果默认模板中还存在防护对象,这些防护对象将不再受到基础防护规则保护。

查看命中记录

您可以在安全报表页面的基础防护规则页签,查询具体防护规则的命中记录。更多信息,请参见基础防护规则Web基础防护页面不支持通过规则ID搜索具体的基础防护规则。如需查询具体的规则信息可参考规则库管理

重要

如果您认为某个规则误拦截了正常业务流量,可通过白名单模块设置针对该规则的白名单规则。关于配置白名单规则的具体操作,请参见设置白名单规则放行特定请求

相关文档及说明

检测模块说明

检测模块中的规则能够识别和拦截针对Web应用的各种攻击。

支持防护的攻击类型

攻击类型

说明

SQL注入

SQL注入是一种通过将恶意SQL代码注入到查询语句中,来操纵数据库执行攻击者希望的操作的攻击方式。

跨站脚本(XSS)

跨站脚本(XSS)攻击是一种通过在网页中嵌入恶意脚本,使其他用户在浏览网页时执行这些脚本的攻击方式。

代码执行

代码执行攻击是指利用注入的恶意代码,使服务器执行这些代码,从而实现攻击目的。

CRLF注入

一种通过在HTTP头部插入回车符(CR, \r)和换行符(LF, \n),以操纵HTTP响应或进行HTTP响应分割攻击(HTTP Response Splitting)的攻击方式。

本地文件包含(LFI)

是指当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数(include(),require()和include_once(),requir_once())利用URL去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

远程文件包含(RFI)

远程文件包含(RFI)攻击通过包含远程服务器上的文件,使得攻击者能够在本地服务器上执行远程恶意代码。

Webshell

Webshell是一种恶意脚本文件,通过上传或注入这些文件,攻击者可以远程控制服务器。

OS命令注入

操作系统命令注入攻击通过在程序中嵌入恶意操作系统命令,使服务器执行这些命令,从而实现攻击目的。

扫描器行为

这通常指的是Web应用程序扫描器的行为和特点。这些工具自动化地扫描Web应用以发现潜在的安全漏洞。它们定位常见的漏洞如SQL注入、跨站脚本(XSS)等,通过生成并发送大量请求来分析应用的响应。

业务逻辑缺陷

业务逻辑缺陷是应用程序在实现其业务流程时存在的漏洞。这些漏洞通常不能通过传统的输入验证和输出编码来防御。它们可能允许攻击者通过操纵应用程序的正常工作流程来实现未授权访问或其他恶意行为。

任意文件读取

任意文件读取漏洞允许攻击者读取系统上任何文件,通常通过HTTP请求中的文件路径参数。利用这种漏洞,攻击者可以访问敏感信息,如配置文件、凭证和个人数据。

任意文件下载

任意文件下载漏洞类似于任意文件读取,但它专注于允许攻击者下载系统上的任意文件。这可能导致敏感信息泄露,甚至使攻击者获取系统的完整备份以进行脱机分析。

外部实体注入

XXE漏洞利用XML解析器在解析外部实体时的特性,允许攻击者读取系统文件、执行服务器端请求(SSRF)或导致拒绝服务(DoS)。这种攻击通常通过包含恶意外部实体的XML输入实现。

跨站请求伪造

CSRF攻击通过欺骗认证用户向Web应用程序发送未经授权的请求来执行恶意操作。通常,攻击者会诱骗用户点击恶意链接或访问恶意网页,从而在用户的身份下执行某些操作,如更改设置或提交表单。

表达式注入

表达式注入攻击是指通过嵌入恶意表达式,使服务器执行这些表达式,从而实现攻击目的。

.net反序列化

反序列化是将数据从一种格式(例如JSON、XML或二进制)转换回对象的过程。在.NET应用中,不安全的反序列化可能导致任意代码执行。如果攻击者能够控制反序列化的数据,他们可能会注入恶意数据,从而执行任意代码。

Java反序列化

Java反序列化攻击通过反序列化恶意对象,使服务器在反序列化过程中执行恶意代码。

PHP反序列化

PHP反序列化攻击通过反序列化恶意对象,使服务器在反序列化过程中执行恶意代码。

SSRF(服务器端请求伪造)

服务器端请求伪造(SSRF)攻击通过伪造服务器端请求,使服务器访问内部或外部资源,从而实现攻击目的。

路径穿透

路径穿透攻击通过注入相对路径(如../),访问服务器上的不应公开的文件。

协议违背

协议违背是通过恶意操纵协议(如HTTP、HTTPS等)的方式,进行攻击或绕过安全机制。

任意文件上传

任意文件上传攻击通过上传恶意文件,使服务器执行这些文件,从而实现攻击目的。

相关文档