本文介绍了已经接入Web应用防火墙进行防护的网站出现访问异常问题时,如何排查和修复问题。

排查流程

网站接入Web应用防火墙后,如果出现访问异常,您可以按照以下流程排查问题:
  1. 检查是否为源站问题:通过旁路Web应用防火墙,判断是否为源站服务器的响应问题。
  2. 检查是否为WAF误拦截:通过手动关闭防护模块,判断是否为WAF误拦截问题。
  3. 排查常见访问错误:对照常见访问异常错误,分析和排查问题。
说明 如果上述方法都不能帮助您解决问题,您可以提交工单联系阿里云技术工程师。

关于排查问题中可能用到的工具,请参见附录:常用工具介绍

检查是否为源站问题

您可以参照以下步骤旁路Web应用防火墙,判断源站服务器响应是否有问题:
  1. 禁用源站上的安全组、黑白名单、防火墙、安全狗、云锁等应用,防止WAF回源IP被拉入黑名单。
  2. 修改本地计算机的hosts文件,将问题域名的解析指向对应的ECS实例、SLB实例、服务器公网IP(即在WAF上填写的源站IP地址)。
  3. 通过本地计算机的浏览器访问问题域名,查看访问请求不经过Web应用防火墙时,是否能复现问题。
    • 如果问题复现,说明可能是源站服务器的响应异常,建议您及时检查源站服务器的工作状态(例如进程、CPU、内存、Web日志等)是否有异常并修复异常。
    • 如果问题没有复现,说明不是源站服务器的响应异常,请参见检查是否为WAF误拦截

检查是否为WAF误拦截

您可以参照以下步骤关闭WAF的拦截功能,判断是否是WAF误拦截:
  1. 为域名关闭正则防护引擎(具体操作请参见设置正则防护引擎),查看问题是否仍然存在。

    如果问题消失,建议您将正则防护引擎防护规则组设置为宽松规则组(默认为中等规则组),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。

  2. 如果关闭正则防护引擎后问题仍然存在,您可以为域名关闭CC安全防护(具体操作请参见设置CC安全防护),查看问题是否仍然存在。

    如果问题消失,建议您将CC安全防护的模式设置为防护(如果本来就是防护模式,请忽略),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。

    如果关闭CC安全防护后问题仍然存在,说明不是WAF误拦截,请参见排查常见访问错误

排查常见访问错误

如果发现不经过Web应用防火墙问题会消失,而接入Web应用防火墙后,问题稳定复现,您可以按照以下方式进行排查。

问题 现象 原因 解决方案
405访问阻断 出现405阻断页面或者HTTP返回码为405。 请求被自定义防护策略或者正则防护引擎阻断。
  1. 为域名关闭自定义防护策略(具体操作请参见设置自定义防护策略),查看是否还有405页面。

    如果不再出现,说明您所配置的自定义防护规则误拦截了请求,需要您找到对应规则并将其删除。

  2. 如果关闭自定义防护策略开关后问题仍然存在,您可以为域名关闭正则防护引擎(具体操作请参见设置正则防护引擎),查看问题是否仍然存在。

    如果问题消失,建议您将正则防护引擎防护规则组设置为宽松规则组(默认为中等规则组),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。

302连接重置 某些IP在访问网站时显示连接被重置,HTTP返回码为302,且在请求头获得Set-Cookie。 IP访问触发了CC防御规则。 为域名关闭CC安全防护(具体操作请参见设置CC安全防护),查看问题是否仍然存在。

如果关闭防护后访问恢复正常,说明是CC防护规则误拦截,建议您将CC安全防护的模式设置为防护(如果本来就是防护模式,请忽略),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。

HTTPS访问异常 客户端的HTTPS请求返回证书为www.notexist.com Web应用防火墙需要浏览器支持SNI,而客户端的浏览器可能不支持SNI。 一般苹果系统默认支持SNI,而Windows、Android系统需要做SNI兼容,具体请参见SNI兼容性导致HTTPS访问异常(服务器证书不可信)
502访问白屏 网站显示白屏,同时HTTP返回码为502。 当源站(指ECS、SLB或服务器)出现丢包或者不可达的时候,Web应用防火墙会返回白屏。
  1. 检查源站是否有黑名单、iptables、防火墙、安全狗、云锁等安全软件或策略。如果有,停用或卸载相关服务并清空黑名单,查看问题是否消失。
  2. 绕过WAF测试访问(参见检查是否为源站问题),检查是否正常。如果仍然无法正常访问,可检查源站的进程、CPU、内存、Web日志等是否有异常。
域名ping不通 域名ping不通,且收到短信提示,WAF受DDoS攻击,进入了黑洞。 DDoS流量攻击不在Web应用防火墙的防护范围内。 开通DDoS防护服务,抵御DDoS攻击。更多信息,请参见概述
服务器负载不均 后端多台服务器负载不均。 Web防火墙使用四层IP哈希。因此,当DDoS高防串联Web应用防火墙或SLB使用四层转发时,ECS可能出现负载不均。 Web应用防火墙和ECS直接使用SLB负载均衡,即使用7层转发,并打开cookie会话保持或负载均衡。
微信或支付宝回调失败 微信或支付宝回调失败。 可能是高频访问被CC防护规则拦截,或者使用了HTTPS方式回调,且微信和支付宝不支持SNI。
  • CC安全防护问题:
    1. 为域名关闭CC安全防护(具体操作请参见设置CC安全防护),查看问题是否仍然存在。
    2. 如果关闭防护后恢复正常,说明是CC防护规则误拦截,建议您将CC安全防护的模式设置为防护(如果本来就是防护模式,请忽略),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。
  • SNI问题:设置让微信或支付宝直接调用ECS或者SLB IP,不要经过Web应用防火墙。更多信息,请参见SNI兼容性导致HTTPS访问异常(服务器证书不可信)

附录:常用工具介绍

  • Chrome浏览器-开发者工具:Chrome浏览器自带开发者工具,可以用来查看页面元素的加载情况。按F12打开工具,切换至Network标签。
  • ping:Windows和Linux操作系统自带的网络测试工具,可以用来分析和判定网络故障。Windows系统按Win+R,输入CMD打开工具。用法:ping 域名或IP
  • traceroute(Linux)、tracert(Windows):链路追踪工具,可以检测在哪一跳发生丢包。Windows系统按CTRL+R,输入cmd打开工具。用法:tracert -d 域名或IP
  • nslookup:用于检测域名解析的工具,可以检查域名解析是否生效。Windows系统按CTRL+R,输入cmd打开工具。用法:nslookup 域名
  • 17测网站:用于探测全国访问质量、DNS解析和丢包情况。