配置攻击惩罚的流量标识
WAF流量标识的本质是从客户端请求中,提取可唯一识别请求主体的关键信息,是攻击惩罚功能的核心前提和基础,可为攻击惩罚提供识别依据,精准定位恶意请求来源的身份标签,区分合法与恶意请求的主体,并设定惩罚目标。
- IP标记:从HTTP请求头(如X-Forwarded-For)中提取客户端真实IP,未配置时WAF默认读取客户端IP,是识别“哪台机器发起请求”的核心依据,对应IP维度(机器)惩罚。
- Session标记:从请求的Cookie中提取会话ID(如 JSESSIONID),是识别“哪个浏览器会话发起请求”的依据,需与业务Cookie字段严格匹配,对应Cookie维度(浏览器会话)惩罚。
- User标记:从请求参数(如 uid、username)中提取业务用户标识,是识别“哪个业务账号发起请求”的依据,需与业务接口参数一致,对应Params维度(业务账号)惩罚。
流量标识配置越精准,惩罚越能精准命中恶意主体,避免误封、漏封。
实现原理
- 请求拦截:客户端请求首先被华为云WAF引擎拦截,避免恶意请求直接到达后端服务器。
- 标识提取:WAF根据配置的IP标记、Session标记、User标记、Header标记,从HTTP请求头、Cookie、请求参数、请求头中提取对应信息。
- 攻击判定:结合预设的攻击惩罚规则,对提取到的标识进行“攻击计数”——同一标识在规定时间内发起的恶意请求次数累计,达到预设阈值则判定为“恶意主体”。
- 惩罚执行:针对判定为恶意的标识,WAF执行对应处置,且惩罚仅作用于该标识对应的主体(如封禁恶意IP、限制异常Session、禁止违规账号访问、特定请求头标识的请求等),不影响其他合法主体的正常访问。
若未配置对应流量标识,该维度的攻击惩罚功能将直接失效,WAF仅能基于默认规则进行基础防护,防护精度大幅下降。
典型应用场景
- 电商、APP后端接口:需防范单IP批量扫描、账号暴力破解、单用户高频恶意请求。
- 后台管理系统:需限制异常会话、非法IP访问,保障管理入口安全。
- 经过CDN/ELB代理的网站:需精准获取客户端真实IP,避免误封、漏封。
- 多用户业务平台:需基于业务账号(User)维度,惩罚账号级恶意行为(如恶意注册、恶意下单)。
- 自定义防护场景:需基于HTTP请求头自定义字段(如设备标识、接口密钥、渠道标识)进行攻击惩罚,如防范特定设备、特定渠道的恶意请求。
约束条件
- 如果配置了IP标记,为了确保IP标记生效,请您确认防护网站在接入WAF前已使用了7层代理,且防护网站的“是否使用七层代理”为“是”。
如果未配置IP标记,WAF默认通过客户端IP进行识别。
- 使用Cookie、Params恶意请求的攻击惩罚功能前,您需要分别配置对应域名的Session、User标记。
前提条件
配置攻击惩罚的流量标识
- 登录Web应用防火墙控制台。
- 在控制台左上角,单击
图标,选择区域或项目。 - (可选) 如果您已开通企业项目,在左侧导航栏上方单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
- 在左侧导航栏,单击“网站设置”。
- 在“网站设置”页面,单击目标网站域名。
- 在“流量标识”栏中,单击“IP标记”、“Session标记”、“User标记”后的
,分别设置流量标记,相关参数说明如表1所示。 表1 流量标识参数说明 标识
说明
配置样例
IP标记
客户端最原始的IP地址的HTTP请求头字段。配置后,WAF从HTTP请求头(如X-Forwarded-For)中提取客户端真实IP,未配置时WAF默认读取客户端IP。
网站接入时,配置的IP标识,会同步到流量标识的IP标记中。支持修改:- $remote_sockaddr:当WAF前无其他代理时,如果报文存在TOA(TCP Option Address),且不希望WAF以TCP Option Address作为客户端IP时,选择该选项。配置后,WAF会以报文的3层源IP作为客户端真实IP。
- $remote_addr:当WAF前存在四层代理时,如果希望WAF以TCP连接IP作为客户端真实IP,选择该选项。
- x-forwarded-for:当WAF前存在七层代理时,选择该选项后,WAF会以X-Forwarded-For(XFF)中的首个IP地址作为客户端真实IP。
- 自定义:当WAF前存在七层代理时,选择该项并配置字段名后,WAF优先从配置的字段中获取客户端真实IP。配置多个字段时,WAF从左到右依次读取客户端真实IP。
如果WAF从自定义字段中未获取到客户端真实IP,将依次从CDN-Src-Ip、X-Real-Ip、X-Forwarded-For、$remote_addr字段获取客户端真实IP。
该字段用于保存客户端的真实IP地址,可自定义字段名且支持配置多个字段(多个字段名以英文逗号隔开),配置后,WAF优先从配置的字段中获取客户端真实IP(配置多个字段时,WAF从左到右依次读取)。
- 如果想以TCP连接IP作为客户端IP,“IP标记”应配置为“$remote_addr”。
- 如果报文存在TOA,而不想以“TCP Option Address”作为客户端IP,“IP标记”应配置为“$remote_sockaddr”,并将独享引擎版本升级到24年5月及之后的版本,配置后会以报文的3层源IP作为客户端IP。
- 如果从自定义字段中未获取到客户端真实IP,WAF将依次从cdn-src-ip,x-real-ip,x-forwarded-for,$remote_addr字段获取客户端IP。
x-forwarded-for
Session标记
从请求的Cookie中提取会话ID(如JSESSIONID),需与业务Cookie字段严格匹配,用于Cookie恶意请求的攻击惩罚功能。在选择Cookie拦截的攻击惩罚功能前,必须配置该标识。
只能由数字、字母、中划线(-)、下划线(_)和半角句号(.)组成。
sessiontest
User标记
从请求参数(如uid、username)中提取业务用户标识,用于Params恶意请求的攻击惩罚功能。在选择Params拦截的攻击惩罚功能前,必须配置该标识。
只能由数字、字母、中划线(-)、下划线(_)和半角句号(.)组成。
Params
配置建议:场景
核心需求
配置方案
电商/APP后端接口(有登录态)
防范单IP批量攻击、单账号恶意操作(如恶意下单、恶意评论)
IP标记+User标记双配置
- IP标记:X-Forwarded-For,cdn-src-ip(若经过CDN);$remote_addr(若未经过CDN)
- Session标记:无需配置(不依赖Cookie惩罚)
- User标记:uid(或userId,与APP接口用户标识字段一致)
后台管理系统(无CDN,有会话验证)
限制异常IP访问、防范单浏览器高频登录尝试
IP标记+Session标记双配置
- IP标记:$remote_addr(未经过CDN,直接获取TCP连接IP)
- Session标记:JSESSIONID(Tomcat容器)或PHPSESSID(PHP容器)
- User标记:无需配置(不依赖Params惩罚)
无登录态公开接口(如官网静态接口)
防范单IP批量扫描、CC攻击
仅配置IP标记
- IP标记:X-Forwarded-For,cdn-src-ip(若经过CDN)
- Session标记:无需配置
- User标记:无需配置
经过多层CDN/ELB的网站
精准获取客户端真实IP,避免误封CDN节点IP
自定义IP标记字段,优先读取最外层代理传递的真实IP
- IP标记:X-Real-IP,X-Forwarded-For,cdn-src-ip(按代理层级排序,最外层在前)
- Session标记:sessionId(根据业务Cookie字段配置)
- User标记:userName(若有登录态)
自定义请求头防护场景(如设备绑定、渠道管控)
防范特定设备、非法渠道的恶意请求,如伪造设备标识、非授权渠道访问
IP标记 + Header标记双配置
- IP标记:X-Forwarded-For,cdn-src-ip(若经过CDN);$remote_addr(若未经过CDN)
- Session标记:无需配置(不依赖Cookie惩罚)
- User标记:无需配置(不依赖Params惩罚)
- 单击“确定”,完成标记信息配置。
完成以上配置后,在访问日志中,筛选目标域名、指定时间范围,查看相关字段,能正常显示对应信息,说明标记配置生效。
也可以配置对应维度的配置攻击惩罚,并模拟对应维度的恶意请求(如单IP高频访问、单Session多次提交恶意参数、携带特定Header字段的恶意请求)后,攻击被拦截,说明标记配置生效。