如今的互聯網中90%的應用都架設在Web平臺上,網上銀行、網絡購物、網絡游戲,以及企業網站等,成為生活和工作必不可少的一部分。所以,Web安全成為繼操作系統與業務軟件安全之后又一熱點,并且持續升溫??v觀安全事件,重大的Web攻擊層出不窮,網絡安全從業者開始跟黑客們在這一焦點領域不斷的對抗。由于Web平臺的多樣性,以及HTTP協議及數據庫語言的靈活性,Web攻擊形式也五花八門,主要的攻擊方法有SQL注入、跨站腳本(XSS)、CC(Challenge Collapsar)等。
山石網科分別針對這三種攻擊進行了針對性的方案設計。
目前很多Web攻擊防護產品在處理SQL注入和跨站腳本攻擊的問題上,都是采用傳統入侵檢測方法,即基于正則表達式的規則匹配模式。這種方法在應對SQL注入和跨站腳本攻擊時存在很大的缺陷:一是SQL注入和跨站腳本有很多種符合語法結構的寫法并可以進行多種方式的編碼,這樣就能輕易繞過正則表達式的規則匹配模式,在檢測設備上出現漏報;二是基于正則表達式的規則匹配模式是在攻擊發生后進行攻擊分析并提取特征,然后對再次發生的同類攻擊進行防護,這樣的方法對0Day攻擊無能為力。而且隨著攻擊特征的不斷增加,攻擊防護對檢測設備性能也產生了極大的影響。
山石網科采用了基于語法分析的方式進行檢測。任何企圖進行SQL注入或跨站腳本攻擊的數據,不管形式如何變化,都必須滿足SQL和HTML語法的規定,山石網科根據這種特點進行攻擊檢測,不僅零特征,可避免0day攻擊,而且以不變應萬變,誤報和漏報被最大限度的壓縮。
圖 山石網科 SQL注入&跨站腳本攻擊防護方案
CC攻擊防護的關鍵在能夠識別和區分出正常用戶的訪問和惡意的攻擊。對于惡意攻擊的識別,山石網科采用了如下四種方法,用戶可以根據實際情況選擇使用:一是Auto-js-cookie:網關向客戶端發送head帶set-cookie的響應報文,一些程序自動發起的攻擊則無法正確回應。二是Auto-redirect:網關向客戶端返回重定向報文,在重定向的url中加入cookie后綴,一些程序自動發起的攻擊則無法正確回應。三是Manual-confirm:網關在回應報文中嵌入提示信息,并等待人工確認,通過回應的確認報文來驗證源IP的合法性,程序自動發起的攻擊和僵尸網絡都無法進行這種確認。四是Manual-CAPTCHA:網關在回應報文中嵌入一個問答框做認證來驗證源IP的合法性,問題可以是二元加減或4字符隨機字符串,進一步加大了確認難度,程序自動發起的攻擊和僵尸網絡都無法進行這種確認。同時,方案支持對開放代理的識別,用戶可以選擇對通過開放代理訪問的速率進行限制。
外鏈檢查的目的是要杜絕某些網頁篡改、網頁掛馬的行為,例如,在網頁中新添加的對外資源(例如frame、其他服務器上的js、css文件等等)的引用。當開啟外鏈檢查時,山石網科安全網關會對Web服務器應答報文的內容進行分析,找到不符合外鏈規則的frame、iframe、link、object、applet、script等HTML標簽。有些時候,Web服務器確實需要對外引用某些資源,例如js文件、css文件。此時可以配置允許對外引用的白名單,表示位于白名單中的資源是可信的。
目錄訪問控制主要是為了防止Web Shell和敏感信息泄露。例如Web服務器允許上傳圖片文件,但是由于過濾不嚴格,攻擊者通過這個機制上傳了惡意代碼(Web Shell)。為了發現這樣的惡意上傳,可以把上傳的圖片保存的目錄設置成static。這樣山石網科安全網關就會檢查用戶訪問請求POST數據和URI中是否有動態可執行代碼,以及請求文件的后綴名是否已知的動態腳本后綴(例如.asp、.php、.js等等);同時服務器的應答報文也會被檢查是否有動態可執行代碼。Web路徑下,有時候包含數據庫連接文件(里邊包含了數據庫路徑、用戶名、口令等信息),這些文件是被Web服務器上其他文件引用的,不允許用戶直接訪問他們。此時,就可以把它們的訪問控制模式配置成deny。
在部署上,山石網科建議將安全網關直接部署在Web服務器前,對Web服務器進行防護,可以滿足企業用戶日常的Web服務器防護需求。