接入管理常见问题

本文列举了Web应用防火墙(Web Application Firewall,简称WAF)3.0版本接入可能遇见的问题。

概览

WAF中的源站IP与回源IP有什么区别?

  • WAF的回源IP WAF的回源IP是指WAF在将经过防护处理的正常流量转发到源站服务器时所使用的IP地址段。这些IP地址是由阿里云分配的,用于标识WAF作为代理服务器向源站发起请求的来源。

    • 回源IP段通常是一个固定的IP地址范围。

    • 在源站服务器看来,所有来自客户端的请求都会被WAF拦截并转发,而真实的客户端IP会被记录在HTTP头部字段(如X-Forwarded-For或自定义Header)中。

  • 源站IP 源站IP是指实际承载业务的后端服务器的公网IP地址或域名解析出的IP地址。它是用户访问网站时最终接收请求并返回响应的目标地址。

    • 源站IP可以是单个IP地址,也可以是多个IP地址(支持负载均衡)。

    • 源站IP是用户网站的真实服务地址,可能部署在阿里云ECS、SLB、OSS或其他云服务商上。

WAF中的源站IP可以填写ECS内网IP吗?

不可以。WAF通过公网进行回源,不支持直接填写内网IP。

WAF能够保护在一个域名下的多个源站IP吗?

可以,一个WAF域名配置中最多支持配置20个源站IP地址。

WAF配置多个源站时如何负载?

如果您配置了多个源站IP地址,WAF默认使用IP Hash的方式对访问请求进行负载均衡。您也可以根据需要自定义负载均衡算法。更多信息,请参见添加域名

WAF是否支持健康检查?

WAF默认启用健康检查。WAF会对所有源站IP进行接入状态检测,如果某个源站IP没有响应,WAF会将访问请求转发至其他源站IP。

源站IP无法响应时,WAF将为该源站IP自动设置一个静默时间。静默时间结束后,新的访问请求可能仍然会被转发至该源站IP。

WAF的独享IP是否能够防御DDoS攻击?

独享IP,可避免当一个域名遭受大流量DDoS攻击,导致其他接入的域名也无法访问的情况。更多信息请参见独享IP的价值

WAF能和CDNDDoS高防一起接入吗?

WAF完全兼容CDNDDoS高防服务。WAFDDoS高防或CDN一起接入时,只要将WAF提供的CNAME地址配置为DDoS高防或CDN的源站即可。这样就可以实现流量在经过DDoS高防或CDN之后,被转发到WAF,再通过WAF最终转发至源站,从而对源站进行全面的安全防护。更多信息,请参见通过联合部署DDoS高防和WAF提升网站防护能力部署WAFCDN为开启内容加速的域名提供WAF防御

WAF是否支持跨账号使用CDN+高防+WAF的架构?

支持,您可以跨账号使用CDN、高防、WAF产品组合成抵御DDoS攻击和Web应用攻击的安全架构。

WAF如何保证上传证书及密钥的安全性?是否会解密HTTPS流量并记录访问请求的内容?

阿里云Web应用防火墙在防护HTTPS业务时,需要您上传对应的SSL证书及密钥,用于解密HTTPS流量并检测流量中的攻击特征。我们使用了专用的证书服务器(Key Server)来存储和管理密钥。Key Server依托于阿里云密钥管理系统KMS(Key Management Service),能够保护证书和密钥的数据安全性、完整性和可用性,符合监管和等保合规要求。关于KMS的详细介绍,请参见什么是密钥管理服务

WAF使用您上传的SSL证书及密钥解密HTTPS业务流量,只用于实时检测。我们只会记录包含攻击特征(payload)的部分请求内容,用于攻击报表展示、数据统计等,不会在您未授权的情况下,记录全量的请求或响应内容。

阿里云Web应用防火墙已通过ISO 9001、ISO 20000、ISO 22301、ISO 27001、ISO 27017、ISO 27018、ISO 27701、ISO 29151、BS 10012、CSA STAR、等保三级、SOC 1/2/3、C5、HK金融、OSPAR、PCI DSS等多项国际权威认证,且作为标准的阿里云云产品,在云平台层面具备与阿里云同等水平的安全合规资质。详细内容,请参见阿里云信任中心

网站已接入WAF防护,为什么在域名列表中查询不到?

您的网站备案信息可能已经失效,导致域名不符合接入要求,已被WAF自动清除。您需要为该域名完成ICP备案,并重新将网站接入WAF防护。关于阿里云ICP备案的更多信息,请参见ICP备案流程

重要

您在将网站接入中国内地WAF实例(包括包年包月实例和按量计费实例)防护前,必须保证域名备案信息的有效性。为符合相关法律法规要求,中国内地WAF实例会定期清除备案失效的域名。关于相关法律法规,请参见未备案不得提供非经营性互联网信息服务

WAF如何通过自定义Header获取客户端源IP和记录客户端IP?

自定义Header获取客户端源IP:如果网站业务在WAF前有其他七层代理服务(例如,DDoS高防、CDN等),为了避免攻击者伪造XFF字段,躲避WAF的检测规则,提高业务的安全性,可在业务中使用自定义Header存放客户端IP,将客户端源IP放置在某个自定义的Header字段(例如,X-Client-IP、X-Real-IP),并在WAF中配置对应Header字段,WAF获取指定Header字段的值作为客户端源IP。如果设置多个Header字段,WAF将按顺序尝试读取客户端IP。

自定义Header记录客户端IP:在添加网站到WAF防护时,通过开启流量标记,使WAF在客户端请求的自定义Header字段中写入客户端IP,后端服务器可以从WAF回源请求的指定Header字段中获取客户端IP,适用于后端服务器需要从指定的自定义Header中获取客户端IP进行业务分析的场景。

WAF是否支持接入四层TCP协议?

WAF支持为四层CLB(TCP)端口监听的HTTPHTTPS协议流量开启WAF防护,不支持转发防护其他非HTTPHTTPS协议的端口流量。

WAF作为Web应用防火墙,主要针对Web流量提供防护,即HTTP、HTTPS流量。因此,当四层CLB(TCP)端口监听的流量为Web流量时,可通过WAF实现转发防护;若四层CLB(TCP)承载的是其他应用层协议流量(如FTP、SMTP等),则WAF无法转发此类流量。

如何批量导出已CNAME接入的域名信息列表?

您可以通过调用获取WAF实例详情API的方式获取您的WAF实例ID,然后调用查询CNAME接入列表API,查询CNAME接入的所有域名信息列表。

接入配置页面找不到需要接入的CLB实例、NLB实例或ECS实例的排查方法

问题现象

在接入配置页面,找不到需要接入的CLB实例、NLB实例或ECS实例

解决方案

可能原因

相关操作

要接入的CLB实例、NLB实例或ECS实例不满足限制条件

参考实例接入限制条件,排查实例。具体限制条件,请参见七层CLB(HTTP/HTTPS)实例接入限制四层CLB(TCP)实例接入限制NLB实例接入限制ECS实例接入限制

要接入的CLB实例未添加对应监听

WAF未同步CLB、NLBECS实例

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

  2. 在左侧导航栏,单击接入管理

  3. 选择对应云产品类型,单击接入

  4. 在接入配置面板,单击同步最新资产

添加HTTPS引流端口时,显示CLB证书不全,该如何处理?

问题现象

添加HTTPS引流端口时,WAF会对该端口配置的证书进行来源校验。添加端口后出现以下提示:端口号为XXXCLB证书不全,请到CLB控制台重新选择来源是SSL证书服务的证书

可能原因

  • 配置的证书不是通过阿里云数字证书管理服务(原 SSL 证书)购买的,且未上传到阿里云数字证书管理服务(原 SSL 证书)

  • CLB实例配置该HTTPS端口监听的证书通过CLB控制台上传,然而,这种上传方式导致证书信息无法自动同步到数字证书管理服务(原 SSL 证书管理)。由于 WAF(Web 应用防火墙)仅从数字证书管理服务获取证书信息,这就造成了 WAF 无法获取到完整的证书内容,进而出现证书不全的提示。

  • 曾上传到数字证书管理服务的证书被手动删除,当前数字证书管理服务(原 SSL 证书)中没有您的证书。

解决方案

  1. 将您的证书上传到数字证书管理服务(原 SSL 证书)。具体操作,请参见上传SSL证书

  2. CLB控制台创建证书,并选择证书来源为阿里云签发证书。具体操作,请参见选择阿里云签发证书

  3. CLB控制台,选择已上传的服务器证书。具体操作,请参见步骤二:配置SSL证书

云产品接入时添加多个扩展证书时失败原因?

可能原因是某个证书无效。在添加多个扩展证书时,请确保您选择的每一个证书都是有效的,如果存在过期的证书会导致添加失败。

使用云产品接入方式接入WAF后,是否需要再配置防护对象?

默认情况下,云产品接入WAF后,WAF会自动生成一个防护对象,无需额外配置。但如果您有多个域名解析指向了同一云产品实例,并希望为这些域名单独配置防护规则,则需要手动将域名添加为防护对象,具体操作,请参见手动添加防护对象

防护对象添加完成后,在配置防护规则时选择生效对象为相应的域名,即可实现对多域名的精细化防护。

接入WAF返回502状态码的多种场景

问题现象

接入WAF后访问后端服务,返回502状态码;查阅日志中出现状态码为502的请求。

问题原因与解决方案

情况一:CNAME接入方式下返回502

CNAME接入方式下,当源站(指ECS实例、CLB实例等)无法被WAF访问时,部分情况下会返回502错误。建议您优先检查源站安全组、iptables、防火墙、安全狗、云锁等可能限制WAF访问的规则或软件,例如您需要在ECS实例的安全组中放行WAF回源IP

同时,您也需要确保在WAF控制台配置了业务实际使用的域名与源站信息,域名与源站信息不匹配也会导致此报错。

情况二:7CLB开启云产品接入出现偶发5XX

当前网络架构

image

详细原因分析

WAF的后向连接空闲超时时间:3600秒(1小时)

  • 说明:当CLBWAF之间的连接在1小时内没有任何数据传输时,WAF会自动关闭这个连接。

    image

CLB的前向连接空闲超时时间:15

  • 说明:当客户端(当前情况下的WAF实例)与CLB之间的连接在15秒内没有任何数据传输时,CLB会自动关闭这个连接。

    image

存在极端情况下,长连接在CLB侧老化的瞬间(超过15s没有传输数据),WAF回源请求复用该长连接发送数据到CLB侧,此时CLB上没有长连接信息会发送 RST 报文断开请求,此时在WAF侧出现状态码为502的日志信息。

解决方案

调整云产品接入的七层CLB 配置中的空闲长连接超时时间,调整结果小于CLB的前向连接空闲超时时间,比如调整为14秒。

image

情况三:URI 超长导致偶发502

当前网络架构

image

详细原因分析

7CLB作为WAF流量转发后的下一跳,然而CLBURI长度限制是32K,WAF请求的URI长度超过了CLB服务器能够解析的长度,因此CLB拒绝对该请求提供服务。CLB在日志中记录414状态码,WAF返回502状态码。

解决方案

缩短URI长度,如果数据量很大建议采用POST传输数据。

情况四:WAF回源多个四层CLB出现偶发502

当前网络架构

image

当前架构中通过反向代理模式接入WAF并且回源到多个四层CLB,后端RealServer(RS)监听相同端口同时挂载在多个四层CLB后面。

详细原因分析

当一台云服务器(ECS)同时作为多个四层(TCP协议)负载均衡(CLB)实例的后端服务器,且这些负载均衡实例配置了相同的后端服务端口时,可能会出现以下情况:如果客户端的请求被WAF集群中同一个WAF实例节点回源到CLB,使用相同的WAF实例节点IP地址并发访问这些负载均衡实例的前端服务,部分连接可能会失败或出现超时现象。

情况1:五元组冲突,tcp串流

WAF集群为多个CLB节点提供安全防护时,多个CLB节点的请求可能来自同一个WAF回源地址IP。

  1. WAF实例节点回源访问CLB1时,(WIP:CPORT->VIP1:VPORT1)的连接在到达后端ECS的时候,会被转换成(WIP:CPORT->DIP:DPORT)。

  2. WAF实例节点回源访问CLB2时,(WIP:CPORT->VIP2:VPORT2)的连接在到达后端ECS的时候,也会被转换成(WIP:CPORT->DIP:DPORT)。

  3. 由于两条TCP连接的序列号和状态在后端服务器上发生了冲突,导致连接建立失败。具体来说,发起的两条TCP连接在后端服务器上被视为具有相同的五元组(TCP:WIP:CPORT:DIP:DPORT)。这种五元组的冲突可能导致SYN包被丢弃。

情况2:报文返回错乱

在一个完整请求路径中,发起请求的CLB节点与收到返回报文的CLB节点不一致。

  1. WAF回源SYN包走CLB2,五元组为WIP:CPORT->VIP1:VPORT1,在到达后端ECS2的时候,转为WIP:CPORT->DIP:DPORT。

  2. 如果此时ECS2TIME-WAIT连接,五元组是TCP:WIP:CPORT:DIP:DPORT,收到第一步的SYN报文,判断SYN合法,回应SYN-ACK包。

  3. 因为ECS2挂载到多个SLB后,可能将SYN-ACK包回应到CLB1,如果CLB1上没有该五元组的Session,CLB1会双向Reset数据包,导致WAF返回502。

解决方案

方案1(推荐)

修改网络架构,比如使用多个7CLB作为源站,避免多个不同4层负载均衡CLB节点将请求转发到相同后端服务的同一个端口。

方案2

CLB迁移到NLB,在配置中关闭客户端地址保持,可以解决五元组冲突的问题,后端服务部署proxyprotocol获取真实客户端IP,详见通过Proxy Protocol功能获取

image

操作步骤

  1. 登录网络型负载均衡NLB控制台在顶部菜单栏,选择NLB实例所属的地域。

  2. 在左侧导航栏,选择网络型负载均衡 NLB > 服务器组

  3. 选择您的服务器组,在操作列单击编辑基本信息。在编辑基本信息弹窗中,关闭客户端地址保持,并保存本次编辑操作。

方案3(不推荐)

支持通过提交工单来开启FULLNAT模式。当多个CLB实例将请求转发到同一个后端服务器的相同端口时,FullNat通过修改源地址,使得每个链接的五元组变得唯一,避免了冲突。对CLB监听开启FULLNAT模式,避免五元组冲突的情况。

接入WAF后文件上传失败

可能由于文件上传超过2GB的最大限制,目前WAF最大支持2GB的文件上传,当请求body超过2GB时,WAF会返回413状态码,可以根据返回状态码来判断是否达到了文件传输大小上限。

扫描WAF时为何报告弱加密套件?

当扫描接入WAF的资产域名或WAFVIP时,报告弱加密套件的原因如下:

扫描已接入的域名

在配置接入时,可以自定义HTTPS通信中允许使用的加密套件,如果您先前勾选了默认的加密套件,可以参考以下步骤进行修改:

如果您选择的是CNAME接入方式,请参见CNAME接入操作步骤

如果您选择的是云产品接入方式,以ECS实例为例,请参见ECS实例接入操作步骤。如果是ALB等以SDK集成方式接入的云产品,需要进入对应的产品控制台进行配置,ALB实例操作请参见配置ALB实例SSL证书image

扫描WAFVIP

为满足不同场景下对HTTPS通信安全合规和兼容性的要求,WAF支持为IPv4版本的VIP自定义SSL证书或TLS策略。您可以在对WAFVIP进行合规扫描检测前,通过设置默认SSLTLS策略的方式为VIP上传符合合规要求的HTTPS证书,禁用、启用某些特定版本的TLS协议和加密套件。具体操作步骤,请参考设置默认SSLTLS策略