网站访问异常

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

排查流程

网站接入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应用防火墙后,问题稳定复现,您可以按照以下方式进行排查。

问题

现象

原因

解决方案

410网站暂时无法访问

出现410网站暂时无法访问页面,并提示该域名对应的协议和端口未接入WAF;或者HTTP返回码为410。

没有在WAF上配置相关域名,或者没有配置相关端口。例如仅在WAF上配置了服务器端口为80,但用户访问了443端口,此时WAF会返回410页面。

在控制台添加相关域名或端口。具体操作,请参见添加域名

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、防火墙、安全狗、云锁等安全软件或策略。如果有,停用或卸载相关服务并清空黑名单、放行WAF回源IP(参见放行WAF回源IP),查看问题是否消失。

  2. 绕过WAF测试访问(参见检查是否为源站问题),检查是否正常。

    • 如果问题复现,说明可能是源站服务器的响应异常,建议您及时检查源站服务器的工作状态(例如进程、CPU、内存、Web日志等)是否有异常并修复异常。

    • 如果问题没有复现,说明不是源站服务器的响应异常。请根据405访问阻断问题,排查网站是否被WAF误拦截

504网关超时

网站显示网关超时,同时HTTP返回码为504。

  • 当源站业务量增加时,可能会因后端服务器性能问题导致504错误。

  • 长连接超时问题。

  • 后端服务器性能问题:请检查后端服务器是否存在性能问题,如连接数、CPU内存占用过大等也会出现504错误。

  • 长连接超时问题:请检查客户端与服务器之间是否存在长连接超时的情况,具体操作,请参见长连接超时问题

域名ping不通

域名ping不通,且收到短信提示,WAFDDoS攻击,进入了黑洞。

DDoS流量攻击不在Web应用防火墙的防护范围内。

开通DDoS防护服务,抵御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:WindowsLinux操作系统自带的网络测试工具,可以用来分析和判定网络故障。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解析和丢包情况。