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