◆王樂
操作系統、網絡體系與服務器技術
Web應用系統加入WAF故障診斷方法研究
◆王樂
(東北師范大學信息化管理與規劃辦公室 吉林 130024)
為了針對性地保護Web應用系統,高校一般都采用了Web應用防火墻(Web application firewall,WAF)技術。在安全防護實施的過程中,既要為業務和邏輯各不相同的應用系統制定符合其運行需求的安全防護方案,又要在應用系統出現使用功能故障時,快速定位原因并解決。才能達到保障高校Web應用系統安全穩定運行的目標。本文結合高校實際Web應用防護場景,提出了Web應用系統加入WAF故障診斷分析法,能在被防護的Web應用系統出現功能異常的情況下,快速定位異常的原因并解決。保障應用系統能正常提供服務,同時又使安全隱患最小化。
Web應用安全;故障診斷;WAF
隨著信息化建設的不斷推進,高校建立了越來越多的Web應用系統,例如:融合門戶、網上服務大廳、輕MIS平臺等,來提供不同的業務服務。在運行和使用過程中,這些應用系統都會或多或少的暴露出一些安全隱患,為防止這些隱患帶來安全事件,高校不斷加強Web安全防護措施。例如采用WAF技術,保護Web應用程序、APIs和移動應用程序免受各種攻擊威脅。
然而安全防護不能影響Web服務的正常運行。在實施安全防護的過程中,面對各種各樣的Web應用服務故障,需要根據實際情況具體分析和解決。本文基于高校Web應用防護場景和解決Web應用系統故障的經驗,提出了Web應用系統加入WAF故障診斷分析法。用于在Web應用系統加入WAF之后出現故障時的診斷分析。經過實際驗證,能行之有效的定位故障原因并解決。
Web使用超文本傳輸協議(HyperText Transfer Protocol,HTTP)作為規范,完成從請求訪問文本或圖像等資源的客戶端到提供資源響應的服務器端之間的通信[1]。
HTTP通信時,除客戶端和服務器以外,還有一些用于通信數據轉發的應用程序,例如代理、網關和隧道,他們可以配合服務器工作。這些應用程序和服務器將請求轉發給通信線路上的下一站服務器,并且能接收從那臺服務器發送的響應再轉發給客戶端[2]。
用于HTTP協議交互的信息被稱為HTTP報文,來自客戶端的HTTP報文叫作請求報文,來自服務器端的報文叫作響應報文。請求報文包含請求行、請求頭部和請求體,服務器能讀取客戶端發送的HTTP值,比如表單、URL、Cookie傳遞過來的參數。服務器響應報文包含響應行、響應頭和響應體,返回字符串是與HTTP請求報文相關的內容。
為了達到保護Web應用系統安全的目標,安全策略的制定必須遵守基本的原則。
最小化原則。采用WAF默認安全策略,滿足大多數應用系統的安全使用需求,同時不信任所有來源于用戶的輸入信息。在WAF上設置細粒度訪問控制,限制受保護敏感信息的訪問范圍[3]。
安全隔離原則。采用WAF對Web應用中心進行訪問隔離。通過設置防火墻規則,限制校內應用系統IP的訪問權限,使用戶的所有請求都需要經過WAF,而不能直接對Web數據中心進行訪問。管理員對應用系統的運行維護需要通過VPN/堡壘機等安全審計系統[4]。
WAF設備部署在互聯網(Internet)與Web數據中心(Web server)之間,對所有經過的應用流量進行深度檢測,在網絡層和應用層實現入侵防護,保障高校Web應用程序、APIs和移動應用程序安全運行。
WAF一般采用反向代理模式,即WAF代理Web服務器處理客戶端的訪問請求,檢查這些請求是否具有正確的格式或遵從HTTP 請求規范,僅允許合法的請求通過。而那些已知的惡意請求如非法植入到HTTP 消息頭、表單或URL中的腳本將被阻止。最常見的攻擊如SQL 注入攻擊、跨站點腳本攻擊、緩沖區溢出攻擊、惡意瀏覽等在到達Web服務器之前將被WAF阻斷[5]。WAF不改變客戶端和Web服務器之間的正常請求和響應。
在對Web應用啟用安全防護之后,經常出現部分功能使用異常的情況。Web應用提供的業務關乎師生日常的使用,一旦功能故障,就需要馬上定位原因,并進行相應的處理,盡快恢復使用。但是,Web應用的故障多種多樣,不同的故障有不同的表現形式。為此,安全運維人員需要掌握WAF部署拓撲原理和Web應用測試方法,并具有較強的邏輯思維,故障分析時要對各種現象靈活運用排除法、對比法、替換法等方法,找到原因,并快速排除故障。
該方法依據所觀察到的故障現象,全面枚舉出所有可能的故障點,并逐個分析和排除。排除時,遵循由簡到繁的原則。
例如,Web應用故障,首先想到的原因就是被WAF攔截了。然而,實際存在三種可能的情況:1)Web應用代碼編寫不符合HTTP協議規范或存在安全漏洞,導致被WAF攔截,這種情況,在WAF上能查到攔截日志,為了保證應用系統的正常使用,需要根據WAF攔截日志,結合應用系統的運行需求進行安全策略的調整;2)Web應用系統自身故障,導致服務異常,需要應用系統管理員處理并恢復;3)WAF設置導致客戶端和Web服務器之間通信異常,需要進一步排查具體原因。
該方法是指同一個客戶端,采用不同的訪問方式對Web應用系統執行相同的操作,從而確定Web服務故障的原因是否為WAF導致。
在通過WAF反向代理訪問Web服務和不通過WAF反向代理直接訪問Web服務兩種方式下,進行同樣的訪問操作。即,對比通過代理和不通過代理兩種情況下,Web服務的功能是否都異常。如果在兩種情況下,服務都異常說明不是WAF導致故障,而是Web服務本身故障。
該方法是用本地部署的反向代理系統代替WAF反向代理,通過對配置的不同參數進行調整,找出故障原因。
如果在WAF上查不到攔截日志,并且繞過WAF之后應用系統功能也是正常的,則不能確定是否為WAF導致故障,需要進一步確定原因,此時,可以通過本地部署的反向代理系統代替WAF系統進行測試??词欠裼捎诜聪虼頇C制導致Web服務故障。
在實際工作中,可根據故障現象靈活運用排除法、對比法、替換法等方法進行故障診斷分析。如果確定是因為WAF導致故障,可通過調整WAF配置或安全防護策略來解決,如果確定為Web應用系統自身故障,需要應用系統管理員解決。如果解決過程持續較長時間,可在WAF上將該服務重定向到指定頁面,提示用戶正在修復。

圖1 Web應用加入WAF故障診斷
對比Web應用在經過WAF和繞過WAF兩種方式下對同一個HTTP請求和響應的狀態及參數值的情況,找出經過WAF之后Web應用故障的原因。
例如,校內新上線的智慧通行管理平臺,按照安全策略,用戶需要通過WAF進行訪問。該平臺有一個功能是對人員進行訪問授權,即先選中要授權的人員,然后進行授權操作,經過多次操作之后,都發現顯示授權進度為0,即授權失敗。而修改本機hosts文件,將域名指向到Web服務器的真實IP,即不經過WAF進行訪問操作,授權進度為100%,授權可以正常提交。如下圖2所示:

首先懷疑該功能被WAF攔截,但是在WAF上對Web應用的域名和訪問的客戶端IP進行查詢,沒有查到攔截日志,該功能故障是否真的與WAF無關呢?
(1)通過在WAF上和在客戶端分別抓包[6],對比用戶訪問該功能的請求和Web服務器的響應情況為:1)通過WAF進行授權訪問,異常,客戶端不斷重復發送同一個請求。繞過WAF進行授權訪問,正常,客戶端只發送一個請求[7];2)經過WAF訪問successNum參數的值為0。繞過WAF訪問successNum參數的值為2。如圖3所示:

圖3 在WAF和客戶端對授權操作抓包對比
(2)為了消除不同WAF產品的差異,分別在梭子魚WAF和綠盟WAF上配置該應用,并分別通過兩種WAF執行授權操作,結果授權操作都失敗。為了消除WAF策略的影響,在WAF上取消對該站點的防護策略,授權操作失敗的現象依然沒有改觀。
(3)由于WAF采用反向代理模式,為了進行對比,將該應用部署在本地搭建的Nginx反向代理測試系統上[8],用戶通過本地反向代理進行授權操作,發現授權進度依然為零。對該站點的反向代理配置進行修改,分別注釋以下配置項之后進行授權操作:
proxy_set_header Host $host:server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
發現注釋proxy_set_header Host $host:server_port[9]這一項之后進行授權訪問,授權進度為100%。

圖4 配置反向代理測試系統
(4)找出授權進度為0的原因為:Web服務器需要讀取帶有端口的host字段,但是WAF代理配置用HTTP默認的80端口隱藏Web服務器的9000端口,轉發給Web服務器的請求里面不帶端口,導致授權服務異常。
(5)在WAF上配置Web服務器9000端口,轉發給Web服務器的請求里面帶端口,通過WAF授權操作成功。

高校Web應用系統的多樣性,為安全防護的實施增加了難度。在應用系統加入安全防護系統之后,經常出現各種各樣的應用故障,快速定位故障原因并解決,才能保障應用服務安全穩定運行。本文提出的故障診斷方法在高校Web應用防護場景中經過使用驗證,但是仍需要在實際使用中不斷改進和完善。
[1]上野宣.圖解HTTP[M].人民郵電出版社,2014.
[2]吉爾利, 等.HTTP權威指南[M].人民郵電出版社,2012.
[3]趙洪彪.信息安全策略[M].清華大學出版社,2004.
[4]王樂,王葉靜,郭羽婷.高校信息安全整體防護方案研究[J].信息安全與通信保密, 2020.
[5]王樂,王葉靜,葛永興.Web應用防火墻在高校信息安全中的應用[J].長春師范大學學報, 2020.
[6]Manpage of PCAP-FILTER[EB/OL]. https://www.tcpdump.org/ manpages/pcap-filter.7.html.
[7]Chrome 開發者工具[EB/OL].https://developers.google. cn/web/tools/chrome-devtools/.
[8]陶輝.深入理解Nginx[M].機械工業出版社,2013.
[9]Module ngx_http_proxy_module[EB/OL].http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header.