網(wǎng)站訪問(wèn)異常
本文介紹了已經(jīng)接入Web應(yīng)用防火墻(Web Application Firewall,簡(jiǎn)稱WAF)進(jìn)行防護(hù)的網(wǎng)站出現(xiàn)訪問(wèn)異常問(wèn)題時(shí),如何排查和修復(fù)問(wèn)題。
排查流程
網(wǎng)站接入Web應(yīng)用防火墻后,如果出現(xiàn)訪問(wèn)異常,您可以按照以下流程排查問(wèn)題:
檢查是否為源站問(wèn)題:通過(guò)旁路Web應(yīng)用防火墻,判斷是否為源站服務(wù)器的響應(yīng)問(wèn)題。
檢查是否為WAF誤攔截:通過(guò)手動(dòng)關(guān)閉防護(hù)模塊,判斷是否為WAF誤攔截問(wèn)題。
排查常見(jiàn)訪問(wèn)錯(cuò)誤:對(duì)照常見(jiàn)訪問(wèn)異常錯(cuò)誤,分析和排查問(wèn)題。
關(guān)于排查問(wèn)題中可能用到的工具,請(qǐng)參見(jiàn)附錄:常用工具介紹。
檢查是否為源站問(wèn)題
您可以參照以下步驟旁路Web應(yīng)用防火墻,判斷源站服務(wù)器響應(yīng)是否有問(wèn)題:
禁用源站上的安全組、黑白名單、防火墻、其他云安全產(chǎn)品等應(yīng)用,防止WAF回源IP被拉入黑名單。
修改本地計(jì)算機(jī)的hosts文件,將問(wèn)題域名的解析指向?qū)?yīng)的ECS實(shí)例、SLB實(shí)例、服務(wù)器公網(wǎng)IP(即在WAF上填寫(xiě)的源站IP地址)。
通過(guò)本地計(jì)算機(jī)的瀏覽器訪問(wèn)問(wèn)題域名,查看訪問(wèn)請(qǐng)求不經(jīng)過(guò)Web應(yīng)用防火墻時(shí),是否能復(fù)現(xiàn)問(wèn)題。
如果問(wèn)題復(fù)現(xiàn),說(shuō)明可能是源站服務(wù)器的響應(yīng)異常,建議您及時(shí)檢查源站服務(wù)器的工作狀態(tài)(例如進(jìn)程、CPU、內(nèi)存、Web日志等)是否有異常并修復(fù)異常。
如果問(wèn)題沒(méi)有復(fù)現(xiàn),說(shuō)明不是源站服務(wù)器的響應(yīng)異常。如何進(jìn)行下一步排查,請(qǐng)參見(jiàn)檢查是否為WAF誤攔截。
檢查是否為WAF誤攔截
您可以參照以下步驟關(guān)閉WAF的攔截功能,判斷是否是WAF誤攔截:
為域名關(guān)閉正則防護(hù)引擎(具體操作請(qǐng)參見(jiàn)設(shè)置規(guī)則防護(hù)引擎),查看問(wèn)題是否仍然存在。
如果問(wèn)題消失,建議您將正則防護(hù)引擎的防護(hù)規(guī)則組設(shè)置為寬松規(guī)則組(默認(rèn)為中等規(guī)則組),或者您可以通過(guò)日志服務(wù)分析有問(wèn)題的URL,并添加一條自定義防護(hù)策略(具體操作請(qǐng)參見(jiàn)設(shè)置自定義防護(hù)策略),放行訪問(wèn)該URL的請(qǐng)求。
如果關(guān)閉正則防護(hù)引擎后問(wèn)題仍然存在,您可以為域名關(guān)閉CC安全防護(hù)(具體操作請(qǐng)參見(jiàn)設(shè)置CC安全防護(hù)),查看問(wèn)題是否仍然存在。
如果問(wèn)題消失,建議您將CC安全防護(hù)的模式設(shè)置為防護(hù)(如果本來(lái)就是防護(hù)模式,請(qǐng)忽略),或者您可以通過(guò)日志服務(wù)分析有問(wèn)題的URL,并添加一條自定義防護(hù)策略(具體操作請(qǐng)參見(jiàn)設(shè)置自定義防護(hù)策略),放行訪問(wèn)該URL的請(qǐng)求。
如果關(guān)閉CC安全防護(hù)后問(wèn)題仍然存在,說(shuō)明不是WAF誤攔截,請(qǐng)參見(jiàn)排查常見(jiàn)訪問(wèn)錯(cuò)誤。
排查常見(jiàn)訪問(wèn)錯(cuò)誤
如果發(fā)現(xiàn)不經(jīng)過(guò)Web應(yīng)用防火墻問(wèn)題會(huì)消失,而接入Web應(yīng)用防火墻后,問(wèn)題穩(wěn)定復(fù)現(xiàn),您可以按照以下方式進(jìn)行排查。
問(wèn)題 | 現(xiàn)象 | 原因 | 解決方案 |
410網(wǎng)站暫時(shí)無(wú)法訪問(wèn) | 出現(xiàn)410網(wǎng)站暫時(shí)無(wú)法訪問(wèn)頁(yè)面,并提示該域名對(duì)應(yīng)的協(xié)議和端口未接入WAF;或者HTTP返回碼為410。 | 沒(méi)有在WAF上配置相關(guān)域名,或者沒(méi)有配置相關(guān)端口。例如僅在WAF上配置了服務(wù)器端口為80,但用戶訪問(wèn)了443端口,此時(shí)WAF會(huì)返回410頁(yè)面。 | 在控制臺(tái)添加相關(guān)域名或端口。具體操作,請(qǐng)參見(jiàn)添加域名。 |
405訪問(wèn)阻斷 | 出現(xiàn)405阻斷頁(yè)面或者HTTP返回碼為405。 | 請(qǐng)求被自定義防護(hù)策略或者正則防護(hù)引擎阻斷。 |
|
302連接重置 | 某些IP在訪問(wèn)網(wǎng)站時(shí)顯示連接被重置,HTTP返回碼為302,且在請(qǐng)求頭獲得Set-Cookie。 | IP訪問(wèn)觸發(fā)了CC防御規(guī)則。 | 為域名關(guān)閉CC安全防護(hù)(具體操作請(qǐng)參見(jiàn)設(shè)置CC安全防護(hù)),查看問(wèn)題是否仍然存在。 如果關(guān)閉防護(hù)后訪問(wèn)恢復(fù)正常,說(shuō)明是CC防護(hù)規(guī)則誤攔截,建議您將CC安全防護(hù)的模式設(shè)置為防護(hù)(如果本來(lái)就是防護(hù)模式,請(qǐng)忽略),或者您可以通過(guò)日志服務(wù)分析有問(wèn)題的URL,并添加一條自定義防護(hù)策略(具體操作請(qǐng)參見(jiàn)設(shè)置自定義防護(hù)策略),放行訪問(wèn)該URL的請(qǐng)求。 |
HTTPS訪問(wèn)異常 | 客戶端的HTTPS請(qǐng)求返回證書(shū)為 | Web應(yīng)用防火墻需要瀏覽器支持SNI,而客戶端的瀏覽器可能不支持SNI。 | 一般蘋(píng)果系統(tǒng)默認(rèn)支持SNI,而Windows、Android系統(tǒng)需要做SNI兼容,具體請(qǐng)參見(jiàn)SNI兼容性導(dǎo)致HTTPS訪問(wèn)異常(服務(wù)器證書(shū)不可信)。 |
502訪問(wèn)白屏 | 網(wǎng)站顯示白屏,同時(shí)HTTP返回碼為502。 | 當(dāng)源站(指ECS、SLB或服務(wù)器)出現(xiàn)丟包或者不可達(dá)的時(shí)候,Web應(yīng)用防火墻會(huì)返回白屏。 |
|
504網(wǎng)關(guān)超時(shí) | 網(wǎng)站顯示網(wǎng)關(guān)超時(shí),同時(shí)HTTP返回碼為504。 |
|
|
域名ping不通 | 域名ping不通,且收到短信提示,WAF受DDoS攻擊,進(jìn)入了黑洞。 | DDoS流量攻擊不在Web應(yīng)用防火墻的防護(hù)范圍內(nèi)。 | 開(kāi)通DDoS防護(hù)服務(wù),抵御DDoS攻擊。更多信息,請(qǐng)參見(jiàn)阿里云DDoS防護(hù)方案對(duì)比。 |
服務(wù)器負(fù)載不均 | 后端多臺(tái)服務(wù)器負(fù)載不均。 | Web防火墻使用四層IP哈希。因此,當(dāng)DDoS高防串聯(lián)Web應(yīng)用防火墻或SLB使用四層轉(zhuǎn)發(fā)時(shí),ECS可能出現(xiàn)負(fù)載不均。 | Web應(yīng)用防火墻和ECS直接使用SLB負(fù)載均衡,即使用7層轉(zhuǎn)發(fā),并打開(kāi)Cookie會(huì)話保持或負(fù)載均衡。 |
微信或支付寶回調(diào)失敗 | 微信或支付寶回調(diào)失敗。 | 可能是高頻訪問(wèn)被CC防護(hù)規(guī)則攔截,或者使用了HTTPS方式回調(diào),且微信和支付寶不支持SNI。 |
|
附錄:常用工具介紹
Chrome瀏覽器-開(kāi)發(fā)者工具:Chrome瀏覽器自帶開(kāi)發(fā)者工具,可以用來(lái)查看頁(yè)面元素的加載情況。按F12打開(kāi)工具,切換至Network標(biāo)簽。
ping:Windows和Linux操作系統(tǒng)自帶的網(wǎng)絡(luò)測(cè)試工具,可以用來(lái)分析和判定網(wǎng)絡(luò)故障。Windows系統(tǒng)按Win+R,輸入CMD打開(kāi)工具。用法:
ping 域名或IP
。traceroute(Linux)、tracert(Windows):鏈路追蹤工具,可以檢測(cè)在哪一跳發(fā)生丟包。Windows系統(tǒng)按CTRL+R,輸入cmd打開(kāi)工具。用法:
tracert -d 域名或IP
。nslookup:用于檢測(cè)域名解析的工具,可以檢查域名解析是否生效。Windows系統(tǒng)按CTRL+R,輸入cmd打開(kāi)工具。用法:
nslookup 域名
。17測(cè)網(wǎng)站:用于探測(cè)全國(guó)訪問(wèn)質(zhì)量、DNS解析和丟包情況。