【摘要】本文分析了現(xiàn)有一些網(wǎng)絡(luò)防御措施。總結(jié)出當(dāng)前網(wǎng)絡(luò)安全設(shè)備防火墻等對(duì)應(yīng)用層上攻擊的防御存在缺陷,本文構(gòu)思了一種新的網(wǎng)絡(luò)安全威脅的解決方案。
【關(guān)鍵詞】計(jì)算機(jī) 網(wǎng)絡(luò)安全 防御措施
20世紀(jì)90年代以來,計(jì)算機(jī)網(wǎng)絡(luò)在人類生活中的影響越來越大,網(wǎng)絡(luò)技術(shù)廣泛應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,網(wǎng)絡(luò)在給人們帶來巨大便利的同時(shí),也越來越顯示出它的不足之處,連接到網(wǎng)絡(luò)上的計(jì)算機(jī)系統(tǒng)很容易就遭遇到外界的惡意進(jìn)攻或者竊取。中國(guó)新聞網(wǎng)于2011年9月8日發(fā)布了英國(guó)廣播公司的報(bào)道,據(jù)安全軟件廠商賽門鐵克公司周三(7日)發(fā)表的一項(xiàng)研究估算,全球網(wǎng)絡(luò)犯罪造成的損失一年高達(dá)1140億美元,高于毒品交易總額。這項(xiàng)名為“諾頓網(wǎng)絡(luò)犯罪2011”的報(bào)告指出,去年全球有4.31億成年人成了網(wǎng)絡(luò)犯罪的受害者,而全球網(wǎng)絡(luò)犯罪所造成的損失金額已超過全球大麻、可卡因和海洛因黑市交易的總額。
計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用方面存在的安全問題非常嚴(yán)峻,而且有越來越嚴(yán)重的趨勢(shì)。我們現(xiàn)在應(yīng)用防火墻技術(shù)雖然可以抵御一部分的網(wǎng)絡(luò)攻擊,但是可能還是不夠完善,而且對(duì)應(yīng)的網(wǎng)絡(luò)應(yīng)安全問題解決方案仍然有一些漏洞,所有并沒有廣泛推廣開來,導(dǎo)致服務(wù)器遭遇的網(wǎng)絡(luò)攻擊問題頻繁出現(xiàn)。針對(duì)目前這種狀況,我們一方面借鑒目前的網(wǎng)絡(luò)安全解決方案的思路以及優(yōu)點(diǎn),同時(shí)又進(jìn)一步改進(jìn)一些弊端,提出了一種新的防御方案來解決服務(wù)器遭遇的網(wǎng)絡(luò)攻擊問題。本文對(duì)J2EE平臺(tái)實(shí)現(xiàn)的web應(yīng)用進(jìn)行了示例展示。J2EE平臺(tái)、.net平臺(tái)、PHP、flash等都是目前用于網(wǎng)絡(luò)應(yīng)用開發(fā)的技術(shù)框架。由Sun公司開發(fā)的J2EE具有跨平臺(tái)性、非封閉性及易擴(kuò)展性等,被廣泛應(yīng)用。此外,J2EE是基于Java語(yǔ)言實(shí)現(xiàn)的的一種Web應(yīng)用框架、技術(shù),而Java語(yǔ)言具有非封閉性,群眾基礎(chǔ)廣泛,因此J2EE推廣使用相對(duì)容易。開放源代碼WEB應(yīng)用項(xiàng)目、支持J2EE的應(yīng)用服務(wù)器及基于J2EE平臺(tái)的網(wǎng)絡(luò)應(yīng)用開發(fā)框架都有相當(dāng)多的可用資源。例如應(yīng)用服務(wù)器Tomcat和JBoss、開發(fā)框架struts和spring等產(chǎn)品和項(xiàng)目都具有很大的影響力。
與外部輸入有關(guān)的(主要是用戶),針對(duì)代碼的部分,由于實(shí)現(xiàn)本身的缺陷和開發(fā)人員疏忽所造成的安全威脅,是方案所要解決的問題。本文的研究示例為SQL注入。首先,本方案考慮到當(dāng)前WEB應(yīng)用的影響,在代碼一級(jí)解決Web應(yīng)用的安全問題。其次,在已有的解決方案中,雖然可以解決類似的安全問題,但是效率低、準(zhǔn)確度不高。因而,以解決該類安全威脅作為目標(biāo)的方案具有重大的現(xiàn)實(shí)意義和可信服力。對(duì)SQL注入的防范是本文的演示重點(diǎn)。
對(duì)已存在的防御措施需要改進(jìn)的方面:
(1)防火墻應(yīng)用難以部署
防火墻沒有大規(guī)模的用來保護(hù)服務(wù)器網(wǎng)絡(luò)應(yīng)用的安全,是由于其應(yīng)用的難以部署,在某種程度上限制了它的應(yīng)用。論文中提出的解決方案,最大限度的考慮并解決了投入應(yīng)用后的部署難題,以實(shí)現(xiàn)無縫接入,不妨礙網(wǎng)絡(luò)服務(wù)器的工作效率,不觸及網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),可以應(yīng)對(duì)各種復(fù)雜環(huán)境。
(2)最大限度的提高保護(hù)的準(zhǔn)確度,找到出現(xiàn)攻擊的確切位置。實(shí)現(xiàn)代碼級(jí)的切實(shí)保護(hù),及在執(zhí)行可能的惡意代碼前防御、阻止其被運(yùn)行。
在代碼部分就對(duì)惡意攻擊進(jìn)行檢測(cè)和防御是本方案的核心思想。其包括兩層含義。一是構(gòu)建防御程序,即改進(jìn)的檢測(cè)代碼插入業(yè)已完成的Web應(yīng)用的源代碼或中間代碼(字節(jié)碼文件Java是class文件,在運(yùn)行程序時(shí)由虛擬機(jī)加載并二次編譯成機(jī)器碼運(yùn)行)文件中;二是代碼位置的確定并將防御程序進(jìn)行實(shí)施。主要是通過存在風(fēng)險(xiǎn)的特定API調(diào)用來確定,該方式的采取是在特定API被調(diào)用前進(jìn)行的。然后利用插入代碼檢測(cè)該API使用的與用戶輸入?yún)?shù)的相關(guān)性,從而確定攻擊的存在性,并采取相應(yīng)措施。
圖1.1方案示意圖
圖1.1給出了改進(jìn)方案的設(shè)計(jì)思路。在沒有采取防御措施的應(yīng)用中,用戶端的請(qǐng)求被直接接受并獲取用戶輸入,進(jìn)一步傳輸給輸出流指令、系統(tǒng)命令調(diào)用指令、數(shù)據(jù)庫(kù)操作指令等,因此可能會(huì)造成應(yīng)用被攻擊。而已接受保護(hù)的應(yīng)用,在檢測(cè)代碼內(nèi)執(zhí)行的輸出流指令、系統(tǒng)命令調(diào)用指令、數(shù)據(jù)庫(kù)操作指令,所有參數(shù)必須經(jīng)過插入代碼的檢測(cè)才能夠使用(用虛線表示),插入代碼是在各種攻擊的特征規(guī)則的基礎(chǔ)上進(jìn)行運(yùn)行的,如果確定具有攻擊特點(diǎn),則對(duì)攻擊采取相應(yīng)措施。在改進(jìn)方案設(shè)計(jì)驗(yàn)證過程中,需要一個(gè)試驗(yàn)對(duì)象來驗(yàn)證設(shè)計(jì)及其實(shí)現(xiàn)情況。由于試驗(yàn)對(duì)象的實(shí)現(xiàn)環(huán)境是WEB應(yīng)用,在此本方案將相應(yīng)利用OWASP發(fā)布的一個(gè)web攻擊的教學(xué)軟件WEBGoat。WEBGoat是OSASP維護(hù)的一個(gè)WEB應(yīng)用,該應(yīng)用是使用Java實(shí)現(xiàn)的教學(xué)web應(yīng)用安全課程。其中,人為的保留了多種WEB應(yīng)用威脅。用戶在web應(yīng)用的環(huán)境下,使用這些威脅對(duì)WEB應(yīng)用進(jìn)行肆意攻擊,從而更加深刻的領(lǐng)悟web應(yīng)用安全的確切含義。本文需要重點(diǎn)解決的難題是關(guān)于SQL的注入式攻擊,在WEBGoat中有相關(guān)課程與其關(guān)聯(lián),本文通過其攻擊方式的課程來檢驗(yàn)實(shí)際效果的標(biāo)準(zhǔn)。WEBGoat作為本文實(shí)例web應(yīng)用非常恰當(dāng),為了使用戶對(duì)存有不安全漏洞的應(yīng)用實(shí)施成功的攻擊,WEBGoat特意地在程序中留下這些不安全的漏洞。
結(jié)論:在部署的難易程度上,由于本方案采取了完全由軟件處理方式,故不會(huì)有因網(wǎng)絡(luò)結(jié)構(gòu)變化所帶來的部署問題。在成本方面的比較,該解決方案的實(shí)施使所需的成本相對(duì)于應(yīng)用防火墻有很大的減少。
參考文獻(xiàn):
[1]信息動(dòng)態(tài).信息技術(shù)與標(biāo)準(zhǔn)化,2007
[2]張敏情,趙若宇.楊曉元.網(wǎng)絡(luò)安全基礎(chǔ)[M].北京:人民郵電出版社,2008
[3]卿斯?jié)h,蔣建春.網(wǎng)絡(luò)攻防技術(shù)原理與實(shí)踐[M].北京:科學(xué)出版社,2007
[4]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò). 第三版[M].大連:大連理工大學(xué)出版社,2001