本文介绍了已经接入Web应用防火墙(Web Application Firewall,简称WAF)进行防护的网站出现访问异常问题时,如何排查和修复问题。
排查流程
网站接入Web应用防火墙后,如果出现访问异常,您可以按照以下流程排查问题:
检查是否为源站问题:通过旁路Web应用防火墙,判断是否为源站服务器的响应问题。
检查是否为WAF误拦截:通过手动关闭防护模块,判断是否为WAF误拦截问题。
排查常见访问错误:对照常见访问异常错误,分析和排查问题。
关于排查问题中可能用到的工具,请参见附录:常用工具介绍。
检查是否为源站问题
您可以参照以下步骤旁路Web应用防火墙,判断源站服务器响应是否有问题:
禁用源站上的安全组、黑白名单、防火墙、其他云安全产品等应用,防止WAF回源IP被拉入黑名单。
修改本地计算机的hosts文件,将问题域名的解析指向对应的ECS实例、SLB实例、服务器公网IP(即在WAF上填写的源站IP地址)。
通过本地计算机的浏览器访问问题域名,查看访问请求不经过Web应用防火墙时,是否能复现问题。
如果问题复现,说明可能是源站服务器的响应异常,建议您及时检查源站服务器的工作状态(例如进程、CPU、内存、Web日志等)是否有异常并修复异常。
如果问题没有复现,说明不是源站服务器的响应异常。如何进行下一步排查,请参见检查是否为WAF误拦截。
检查是否为WAF误拦截
您可以参照以下步骤关闭WAF的拦截功能,判断是否是WAF误拦截:
为域名关闭正则防护引擎(具体操作请参见设置规则防护引擎),查看问题是否仍然存在。
如果问题消失,建议您将正则防护引擎的防护规则组设置为宽松规则组(默认为中等规则组),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。
如果关闭正则防护引擎后问题仍然存在,您可以为域名关闭CC安全防护(具体操作请参见设置CC安全防护),查看问题是否仍然存在。
如果问题消失,建议您将CC安全防护的模式设置为防护(如果本来就是防护模式,请忽略),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。
如果关闭CC安全防护后问题仍然存在,说明不是WAF误拦截,请参见排查常见访问错误。
排查常见访问错误
如果发现不经过Web应用防火墙问题会消失,而接入Web应用防火墙后,问题稳定复现,您可以按照以下方式进行排查。
问题 | 现象 | 原因 | 解决方案 |
410网站暂时无法访问 | 出现410网站暂时无法访问页面,并提示该域名对应的协议和端口未接入WAF;或者HTTP返回码为410。 | 没有在WAF上配置相关域名,或者没有配置相关端口。例如仅在WAF上配置了服务器端口为80,但用户访问了443端口,此时WAF会返回410页面。 | 在控制台添加相关域名或端口。具体操作,请参见添加域名。 |
405访问阻断 | 出现405阻断页面或者HTTP返回码为405。 | 请求被自定义防护策略或者正则防护引擎阻断。 | |
302连接重置 | 某些IP在访问网站时显示连接被重置,HTTP返回码为302,且在请求头获得Set-Cookie。 | IP访问触发了CC防御规则。 | 为域名关闭CC安全防护(具体操作请参见设置CC安全防护),查看问题是否仍然存在。 如果关闭防护后访问恢复正常,说明是CC防护规则误拦截,建议您将CC安全防护的模式设置为防护(如果本来就是防护模式,请忽略),或者您可以通过日志服务分析有问题的URL,并添加一条自定义防护策略(具体操作请参见设置自定义防护策略),放行访问该URL的请求。 |
HTTPS访问异常 | 客户端的HTTPS请求返回证书为 | Web应用防火墙需要浏览器支持SNI,而客户端的浏览器可能不支持SNI。 | 一般苹果系统默认支持SNI,而Windows、Android系统需要做SNI兼容,具体请参见SNI兼容性导致HTTPS访问异常(服务器证书不可信)。 |
502访问白屏 | 网站显示白屏,同时HTTP返回码为502。 | 当源站(指ECS、SLB或服务器)出现丢包或者不可达的时候,Web应用防火墙会返回白屏。 |
|
504网关超时 | 网站显示网关超时,同时HTTP返回码为504。 |
|
|
域名ping不通 | 域名ping不通,且收到短信提示,WAF受DDoS攻击,进入了黑洞。 | DDoS流量攻击不在Web应用防火墙的防护范围内。 | 开通DDoS防护服务,抵御DDoS攻击。更多信息,请参见阿里云DDoS防护方案对比。 |
服务器负载不均 | 后端多台服务器负载不均。 | Web防火墙使用四层IP哈希。因此,当DDoS高防串联Web应用防火墙或SLB使用四层转发时,ECS可能出现负载不均。 | Web应用防火墙和ECS直接使用SLB负载均衡,即使用7层转发,并打开Cookie会话保持或负载均衡。 |
微信或支付宝回调失败 | 微信或支付宝回调失败。 | 可能是高频访问被CC防护规则拦截,或者使用了HTTPS方式回调,且微信和支付宝不支持SNI。 |
|
附录:常用工具介绍
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 域名
。