羅紅飛 孟慶生 徐中干
浙江商業(yè)職業(yè)技術(shù)學(xué)院 浙江 310053
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,Web1.0,2.0,3.0等網(wǎng)站的技術(shù)日新月異,吸引著越來(lái)越多的網(wǎng)民,政府、企事業(yè)單位的辦公系統(tǒng),也從最早的C/S模式演變成了現(xiàn)如今的B/S模式,因此網(wǎng)站在信息發(fā)展中起到了重要的作用,已經(jīng)滲透到了各個(gè)角落,根據(jù)CNNIC調(diào)查報(bào)告顯示,截至2006年1月,我國(guó)的上網(wǎng)用戶總數(shù)高達(dá)1.1億,國(guó)內(nèi)網(wǎng)站數(shù)量達(dá)67萬(wàn),龐大的網(wǎng)民數(shù)量和網(wǎng)站群為互聯(lián)網(wǎng)應(yīng)用的快速發(fā)展奠定了良好的基礎(chǔ)。網(wǎng)頁(yè)的地位也得到了空前的提高,對(duì)一個(gè)企業(yè),對(duì)一個(gè)政府機(jī)構(gòu)網(wǎng)頁(yè)無(wú)異于自己的門面。據(jù)CNCERT報(bào)告,CNCERT/CC2007年監(jiān)測(cè)到中國(guó)大陸被篡改網(wǎng)頁(yè)總數(shù)累積達(dá)61228個(gè),較2006年(24477個(gè))增加了150%,2008年CNCERT/CC監(jiān)測(cè)到中國(guó)大陸被篡改,網(wǎng)頁(yè)總數(shù)累積達(dá)53917個(gè),較2007年下降了11.9%,但較2006年增加了120%,即平均每天約有147個(gè)網(wǎng)頁(yè)被篡改,由此網(wǎng)頁(yè)防篡改在目前的形勢(shì)下,是迫在眉睫。
我國(guó)國(guó)內(nèi)目前運(yùn)行網(wǎng)頁(yè)的Web服務(wù)器,主要有三大類,第一是基于 Microsoft的 IIS的 Web服務(wù)器產(chǎn)品,有IIS5.0,IIS6.0等,第二是符合 Sun公司的 J2EE標(biāo)準(zhǔn)的各類Web服務(wù)器,比如WebSphere,WebLogic,Tomcat,GlassFish等,種類比較繁多,第三類則是基于 Apache的 PHP類的Web服務(wù)器,由于第一種的Web服務(wù)器,只能運(yùn)行在Windows系列的平臺(tái),而且本身Windows操作系統(tǒng)的穩(wěn)定性、安全性方面有著諸多詬病,所以在政府、企事業(yè)單位使用率并不高,第三種PHP類的Web服務(wù)器,在支持大型應(yīng)用,分布式集群式的部署,以及異構(gòu)系統(tǒng)之間的數(shù)據(jù)交換等方面,有明顯的不足,因此PHP類的Web服務(wù)器,目前也僅局限于個(gè)人的建站、個(gè)人的論壇交流方面。因此,目前在政府、公安、電信、銀行等企事業(yè)單位,主要運(yùn)行的Web服務(wù)器,還是基于J2EE標(biāo)準(zhǔn)的,以IBM公司的Websphere,Oracle公司的WebLogic為主流,運(yùn)行的操作系統(tǒng)平臺(tái)有AIX,HP-Unix,SCO-Unix,Linux,Solaris等,本文利用Apache的Jetty解析庫(kù),設(shè)計(jì)和實(shí)現(xiàn)了保護(hù)運(yùn)行在符合J2EE標(biāo)準(zhǔn)的Web服務(wù)器下的網(wǎng)頁(yè)文件,能夠?qū)崟r(shí)發(fā)現(xiàn)網(wǎng)頁(yè)的篡改、并能恢復(fù)被篡改的頁(yè)面和并且及時(shí)告警通知相關(guān)網(wǎng)站管理人員。
防篡改技術(shù)中,最核心的是網(wǎng)頁(yè)監(jiān)控技術(shù),即如何及時(shí)發(fā)現(xiàn)被篡改的網(wǎng)頁(yè),目前主要的監(jiān)控技術(shù)有外掛輪詢、事件觸發(fā)、核心內(nèi)嵌等:
(1)外掛輪詢
利用一個(gè)網(wǎng)頁(yè)讀取和檢測(cè)程序,以輪詢方式讀出要監(jiān)控的網(wǎng)頁(yè),與真實(shí)網(wǎng)頁(yè)相比較,來(lái)判斷網(wǎng)頁(yè)內(nèi)容的完整性,對(duì)于被篡改的網(wǎng)頁(yè)進(jìn)行報(bào)警和恢復(fù),這種技術(shù)的缺點(diǎn)不言而喻,如果Web服務(wù)器上的網(wǎng)頁(yè)文件很多,像政府、銀行等企事業(yè)單位的一些大型門戶網(wǎng)站,歷年累積下來(lái)的文件就有好幾個(gè)G,加上一些視頻、音頻、圖片等的文件,甚至有幾十個(gè)G,那么把所有頁(yè)面輪詢讀取完畢,是一個(gè)很耗時(shí)間,也很耗系統(tǒng)資源的工作,而且,在檢測(cè)間隔的過(guò)程中,被篡改的文件,還是可以被用戶訪問(wèn)到,因此這種技術(shù)目前基本被淘汰。
(2)事件觸發(fā)
事件觸發(fā)機(jī)制,主要是利用操作系統(tǒng)的文件過(guò)濾驅(qū)動(dòng),由底層操作系統(tǒng)檢測(cè)到文件被篡改的動(dòng)作,對(duì)網(wǎng)頁(yè)的合法性進(jìn)行檢查,這種技術(shù),雖然實(shí)時(shí)、高效,但是研發(fā)的成本和風(fēng)險(xiǎn)比較大,對(duì)目前各種操作系統(tǒng)的版本都需要進(jìn)行相應(yīng)的研發(fā)、測(cè)試,比如 AIX,HP-Unix,Solaris等各種版本,甚至有些32位,64位的,有些系統(tǒng)還有RAID的存儲(chǔ)等,復(fù)雜性可想而知,一不小心,就會(huì)出現(xiàn)整個(gè)操作系統(tǒng)崩潰,死機(jī),造成的損失和后果可能是致命的。
(3)核心內(nèi)嵌
將篡改檢測(cè)模塊內(nèi)嵌在Web服務(wù)器軟件里,它在每一個(gè)網(wǎng)頁(yè)流出時(shí)都進(jìn)行完整性檢查,對(duì)于篡改網(wǎng)頁(yè)進(jìn)行實(shí)時(shí)訪問(wèn)阻斷,并予以報(bào)警和恢復(fù),根據(jù)Web服務(wù)器的類型,有相應(yīng)的內(nèi)嵌技術(shù),如ISAPI,Apache-Module,Java的filter等,運(yùn)行符合J2EE標(biāo)準(zhǔn)的服務(wù)器的Web內(nèi)嵌技術(shù),就是采用Java的filter技術(shù),這種檢測(cè)技術(shù),完全與Web服務(wù)的運(yùn)行進(jìn)程融合,處理效率高,穩(wěn)定性和兼容性強(qiáng),而且與操作系統(tǒng)及硬件無(wú)關(guān),全面控制Web系統(tǒng)軟件和服務(wù)。
運(yùn)行在符合J2EE標(biāo)準(zhǔn)的Web服務(wù)器上的網(wǎng)頁(yè)程序,都是采用Java技術(shù)開發(fā)的,Java由于其良好的面向?qū)ο蟮奶匦?,以及?qiáng)大的開源力量的支持,在開發(fā)B/S架構(gòu)的系統(tǒng)中,變得靈活、高效、快速,各種基于開源組件的開發(fā)技術(shù),例如Struts,Spring,Velocity,Hibernate,Ibatis等,使得系統(tǒng)的可擴(kuò)展性、兼容性和易用性方面有了很大的提高,但是同時(shí),也帶來(lái)了網(wǎng)頁(yè)防篡改的核心內(nèi)嵌技術(shù)中,Java的filter的內(nèi)嵌解析URL的復(fù)雜性,例如,用戶在瀏覽網(wǎng)頁(yè)的時(shí)候,輸入了這樣一個(gè)URL地址,http://192.168.1.110/test/show_page.action,核心內(nèi)嵌程序能夠捕獲到這樣一個(gè) URL地址串,但是把它解析成Web服務(wù)器上具體的物理文件的地址(比如實(shí)際訪問(wèn)的是test.jsp這個(gè)物理文件),變得困難,因此,本系統(tǒng)采用Jetty的解析庫(kù),讓Jetty去解析J2EE的應(yīng)用,從而把URL映射成實(shí)際的物理文件。Jetty是一個(gè)開源的servlet容器,它為基于Java的Web內(nèi)容,例如JSP和servlet提供運(yùn)行環(huán)境。Jetty是使用Java語(yǔ)言編寫的,它的API以一組JAR包的形式發(fā)布。開發(fā)人員可以將Jetty容器實(shí)例化成一個(gè)對(duì)象,可以迅速為一些獨(dú)立運(yùn)行(stand-alone)的 Java應(yīng)用提供網(wǎng)絡(luò)和Web連接。使用Jetty解析的最大好處是,符合J2EE應(yīng)用規(guī)范、小巧、快速。
整個(gè)系統(tǒng)主要分為備份監(jiān)控管理中心、Web內(nèi)嵌模塊、Web監(jiān)控代理組成,如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
(1)備份監(jiān)控管理中心
管理中心的服務(wù)器是放在內(nèi)網(wǎng),是可信任的,它提供Web服務(wù)器上網(wǎng)頁(yè)文件的原始備份,用于網(wǎng)頁(yè)文件被篡改后的恢復(fù),同時(shí)也提供管理員的使用界面,使用功能包括:手工上傳文件、查看告警、監(jiān)控防篡改系統(tǒng)的運(yùn)行情況、修改各種配置、查看和處理各種日志等。
(2)Web內(nèi)嵌模塊
對(duì)每個(gè)發(fā)送的網(wǎng)頁(yè)進(jìn)行 URL的捕獲,并且把捕獲到的URL發(fā)送給Web監(jiān)控代理,接收Web監(jiān)控代理傳過(guò)來(lái)的狀態(tài)值,來(lái)決定網(wǎng)頁(yè)的顯示或阻斷,并依照一定的策略進(jìn)行網(wǎng)站的關(guān)閉或者軟件型的ByPass功能,確保在各種異常的情況下(比如Web監(jiān)控代理被誤操作關(guān)閉),網(wǎng)站能夠正常訪問(wèn)。
(3)Web監(jiān)控代理
對(duì)于每個(gè)Web內(nèi)嵌模塊的URL,通過(guò)Jetty解析模塊,解析成物理文件,并且和自己本身的安全水印庫(kù)進(jìn)行對(duì)比,如果網(wǎng)頁(yè)正常,則通知Web內(nèi)嵌模塊正常顯示,如果網(wǎng)頁(yè)被篡改,則通知 Web內(nèi)嵌模塊對(duì)頁(yè)面進(jìn)行阻斷,同時(shí),Web監(jiān)控代理及時(shí)從備份監(jiān)控管理中心取得該文件的原始備份。系統(tǒng)的整個(gè)流程,簡(jiǎn)要地描述了網(wǎng)頁(yè)防篡改的實(shí)現(xiàn)原理和工作流程,如圖2所示。
圖2 系統(tǒng)流程圖
(1)Hash函數(shù)
目前文件的完整性檢查,主要利用 Hash函數(shù),生成文件的水印值,然后進(jìn)行比對(duì),MD5算法是普遍采用的方法,但是MD5算法在面對(duì)大文件的時(shí)候,比如視頻、音頻文件,計(jì)算水印值比較耗時(shí)間,因此,本系統(tǒng)改進(jìn)了 Hash函數(shù),采用基于策略的水印生成算法,該策略通過(guò)判斷文件的后綴名、文件的大小來(lái)決定是否需要對(duì)全部的,還是部分的文件運(yùn)用Hash函數(shù)的算法,例如,對(duì)超過(guò)100M的視頻文件,則我們只需要利用二進(jìn)制流,讀取文件的前 1024個(gè)字節(jié)進(jìn)行比對(duì),因?yàn)橐曨l文件本身有嚴(yán)格的文件頭格式和視頻數(shù)據(jù)流格式,要想只通過(guò)更改里面的二進(jìn)制數(shù)據(jù),把視頻文件里面的內(nèi)容完全更改成另外一個(gè)內(nèi)容,一般是不太可能,因此,這種技術(shù)兼顧了性能和安全性,達(dá)到一種良性的平衡。
(2)Jetty解析技術(shù)
我們需要修改Jetty源代碼,通過(guò)在WebAppContenxt里面,添加我們自定義的Handler,實(shí)現(xiàn)把URL的地址解析成實(shí)際的物理文件的路徑,同時(shí)也對(duì)Jetty解析庫(kù)的一些功能模塊進(jìn)行了裁剪,把不需要的功能模塊盡可能地精簡(jiǎn),降低系統(tǒng)整體的資源占用。
(3)自定義的安全傳輸協(xié)議
備份網(wǎng)頁(yè)的安全傳輸,以及本身各個(gè)模塊之間的安全通信是系統(tǒng)安全的一個(gè)重要環(huán)節(jié),本系統(tǒng)結(jié)合了高安全強(qiáng)度的工業(yè)標(biāo)準(zhǔn)的SSL協(xié)議,并對(duì)FTP協(xié)議進(jìn)行了擴(kuò)展,保證了信息在傳輸過(guò)程中完整性和私密性,用先進(jìn)的密碼技術(shù)防止來(lái)自內(nèi)部和外部的篡改和偷竊,同時(shí)也保證了系統(tǒng)的穩(wěn)定性和良好的兼容性。
本系統(tǒng)采用的基于Jetty的網(wǎng)頁(yè)防篡改技術(shù),針對(duì)目前主流的符合J2EE標(biāo)準(zhǔn)的Web應(yīng)用服務(wù)器上的網(wǎng)頁(yè)文件,通過(guò)對(duì)網(wǎng)頁(yè)流出文件的實(shí)時(shí)監(jiān)測(cè),及時(shí)地進(jìn)行文件完整性檢查,并能夠?qū)ξ募漠惓W兓M(jìn)行修復(fù)、還原和告警,可以廣泛應(yīng)用于政府、銀行、運(yùn)營(yíng)商等企事業(yè)單位的門戶網(wǎng)站、電子政府系統(tǒng)等。
[1]姚瑩,陸建新.網(wǎng)站文件保護(hù)系統(tǒng)的研究與實(shí)現(xiàn).計(jì)算機(jī)工程與設(shè)計(jì).2007.
[2]CNCERT/CC.中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告(2008年上半年).[R].北京:國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心.2009.
[3]CNCERT/CC.2007年網(wǎng)絡(luò)安全工作報(bào)告[R].北京:國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心.2008.
[4]http://www.mortbay.org/jetty/.開源Jetty主頁(yè).