Web核心防护规则

Web 应用防火墙 WAF(Web Application Firewall)提供开箱即用的安全防护。在资产接入WAF后,系统将自动为其应用一套预置的Web核心防护规则,无需额外配置,即时抵御SQL注入、XSS、命令注入等主流Web应用攻击。本文将指导您如何管理和精细化配置这些规则。

重要

Web 核心防护规则功能更新陆续上线中,本文介绍新版本功能,若您使用旧版本功能,请阅读Web核心防护规则和规则组。升级公告,请参见【公告】WAF 3.0基础防护规则功能升级。您可以通过WAF控制台防护配置 > Web 核心防护页面的Web 核心防护规则样式进行判断。

新版

image

旧版

image

关键概念

  • Web 核心防护规则:Web核心防护的防护模块之一。通过防护模板使此模块生效,开通WAF后,系统将自动创建一个默认防护模板,支持后续手动创建多个防护模板。

  • 防护模板:防护模板是防护规则的集合,用于定义具体的规则内容和作用范围。创建防护模板时,需设置模板信息引擎设置生效范围

    • 模板信息:定义模板类型,其类型在模板创建后不可更改。模板类型分为以下两种:

      模板类型

      说明

      适用场景

      默认防护模板

      • 系统提供一个初始的默认防护模板。

      • 模板创建时,默认对没有关联自定义防护模板的防护对象和对象组生效,后续新增的对象也自动生效。

      • 支持手动将特定对象排除(设置为“未生效”)。

      • Web核心防护规则模块下,仅能创建一个默认防护模板。

      • 当某防护对象从自定义防护模板中移出后,将自动加入默认防护模板。

      部署通用的、需全局执行的防护规则。在业务无特殊防护需求时,建议使用系统提供的默认防护模板,无需额外配置。

      自定义防护模板

      必须手动指定其生效的防护对象或对象组。

      针对特定业务部署精细化的防护规则。

    • 引擎设置:定义具体的防护规则,WAF 基于业务安全经验,提供多条系统防护规则,并按检测模块分类,以防御不同类型的攻击。支持配置系统防护规则规则动作;对于混合云接入,还支持配置自定义防护规则,以满足特定业务的防护需求。

    • 生效范围:指定防护模板的应用目标。通过生效对象设置,将防护规则应用到指定的防护对象或防护对象组。一个防护对象或对象组仅能关联一个防护模板。

      • 防护对象:每个接入 WAF 的域名或云产品实例,系统会为其自动创建一个防护对象。

      • 防护对象组:可将多个防护对象加入一个防护对象组,以便集中管理。

功能优势

  • 开箱即用:系统默认模板内置多条防护规则,新接入资产将自动应用这些规则,无需手动配置,即可满足日常安全防护需求。

  • 多种解码支持:支持解析与还原 JSON、XML、Form 等数据格式,以及 Base64、HTML 实体等多种编码方式,确保识别隐藏在多层编码或压缩中的恶意流量。

  • 智能加白引擎:WAF 基于您历史业务流量进行 AI 学习,可识别在特定 URL 上不适用的防护规则,并自动将其加入白名单,有效降低误拦截风险。

说明

执行以下操作前,请确保已存在防护对象(已将Web业务接入WAF),若尚未将业务接入,请参见接入概述

创建防护模板进行精细化防护

业务接入WAF后,系统将自动为所有防护对象应用默认防护模板并启用防护。若业务无特殊防护需求,则无需执行创建防护模板的操作。以下步骤仅适用于需为不同防护对象配置差异化防护规则的多模板场景。

如仅需处理WAF误拦截或漏拦截问题,请参见应对误报与漏拦截

  1. 进入控制台

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

  2. 配置模板信息

    • 模板名称:设置一个便于识别的名称。

    • 是否设置为默认模板:在Web核心防护规则模块下,系统提供一个初始的默认防护模板,且仅能设置一个默认模板。因此,当初始的默认模板存在时,无法将此处设置为“”。

      • :无需设置生效范围,模板创建时,默认对没有关联自定义防护模板的防护对象和对象组生效,后续新增的对象也自动生效。支持手动将特定对象排除(设置为“未生效”)。

      • :需要设置生效范围,手动指定其生效的防护对象或对象组。

  3. 引擎设置

    • 检测引擎自动更新:默认状态下,此功能开启。

      • 开启:未来阿里云安全团队在默认规则中新增或移除的规则(例如0day应急规则或已失效规则)将自动同步至当前检测引擎。WAF将自动应用新规则,规则状态为“启用”,规则动作为“观察”或“拦截”。

      • 关闭:规则仍会同步,但规则状态为“未启用”,规则动作为“观察”。

    • 引擎配置:单击右上角的引擎配置,或下方区域相应检测模块操作列的配置,进行防护规则配置。支持的检测模块,请参见附录

      系统防护规则

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

      系统防护规则支持如下配置:

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

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

        • 观察:不拦截命中规则的请求,仅通过日志记录请求命中的情况。在试运行规则时,可以先通过观察模式分析WAF日志,以确认未产生误拦截。

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

      说明

      通过安全报表,可以查询各类防护规则的命中详情。

      自定义防护规则(仅混合云接入适用)

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

    • 自适应引擎智能加白引擎功能默认关闭。启用后,WAF将基于历史业务流量进行AI学习,识别在URL粒度上不适用的防护规则,并自动创建白名单以降低误拦截风险。

      自动创建的白名单模板名称为AutoTemplate。更多信息,请参见白名单

      说明

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

  4. 配置生效范围

    选择要应用于该模板的防护对象和防护对象组。模板的生效范围取决于在步骤二的配置:

    • 使用系统创建的默认模板,或设置为默认模板:无需设置生效对象,模板创建时,默认对没有关联自定义防护模板的防护对象和对象组生效,后续新增的对象也自动生效。支持手动将特定对象排除(设置为“未生效”)。

    • 未设为默认模板:需要手动设置生效的防护对象和防护对象组。

      说明

      模板创建时与创建完成后,均支持手动调整防护对象或防护对象组生效状态。

应对误报与漏拦截

当遇到WAF拦截正常业务流量或未能有效拦截攻击的情况时,需要通过以下步骤,定位具体原因并调整配置。

WAF误拦截正常业务

  1. 在左侧导航栏,选择检测与响应 > 安全报表

    说明

    若您已开启日志服务,也可以进入检测与响应 > 日志服务查看完整请求日志。

  2. 通过时间防护对象(被访问的域名/云产品实例)规则动作进行筛选,定位至具体被拦截的请求。image

  3. 若确认被拦截的是正常业务请求,可在页面下面的日志列表区域,单击操作列的误报屏蔽,添加白名单规则进行放行。

    如发现请求具有聚类特征(例如同一可信 IP 地址触发了多条不同的防护规则),建议直接将该 IP 地址作为白名单的匹配条件一次性放行,避免对误报日志进行逐条加白。更多信息,请参见白名单

WAF未拦截攻击(防护无效)

当出现未被WAF拦截的攻击请求时,通常有以下几种原因及应对建议:

  • 请求未经过WAF处理

    • 原因:WAF配置的SSL证书或监听端口与源站实际使用的不匹配。
      建议:核对WAF与源站的SSL证书及端口配置。

    • 原因:CNAME接入时,未正确修改DNS解析记录,使流量未指向WAF。
      建议:确认DNS解析已正确指向WAF提供的CNAME地址。

    • 原因:CNAME接入时,攻击者直接访问源站服务器IP地址绕过WAF。

      建议:通过在服务器安全组中仅放行WAF回源IP地址解决。

    • 原因:云产品接入时,添加到 WAF 防护的并非域名实际解析指向的云产品实例。

      建议:确认目标云产品实例已正确接入。

  • 请求经过WAF但规则未覆盖

    默认的Web核心防护规则无法覆盖所有攻击类型,需根据攻击特征启用相应防护模块:

日常运维

  • 查看防护模板:单击防护模板名称左侧的展开图标 图标,查看该模板包含的引擎信息。

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

  • 编辑防护模板:单击防护模板操作列的编辑,修改模板信息引擎设置生效对象等内容。

  • 删除防护模板:当不再需要某模板时,单击防护模板操作列的删除,并在弹出对话框中单击删除完成操作。

    重要
    • 若某防护对象所属的自定义防护模板被删除,该防护对象将自动加入默认防护模板。

    • 若默认防护模板被删除,且其中仍包含防护对象,则这些防护对象将不再受Web核心防护规则保护。

附录:支持的检测模块

Web核心防护规则支持以下检测模块,可识别并拦截针对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等)的方式,进行攻击或绕过安全机制。

任意文件上传

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