HTTP防病毒網(wǎng)關(guān)(包括UTM)存在的問(wèn)題
病毒檢測(cè)的機(jī)理:病毒是一段代碼,最終的形態(tài)是一個(gè)文件。任何在網(wǎng)上傳播的數(shù)據(jù)流必須重組成文件,才能被防毒掃描引擎所檢測(cè)。我們?cè)跒g覽網(wǎng)頁(yè)的時(shí)候其實(shí)是通過(guò)http協(xié)議get了許多的html文件、gif圖標(biāo)以及腳本文件,最終到達(dá)用戶處都是文件。網(wǎng)關(guān)防毒產(chǎn)品要實(shí)現(xiàn)http的病毒過(guò)濾,必須把http流量中的數(shù)據(jù)重組為文件,也就是OSI7層的還原。要做到這步,目前所有的解決辦法都是利用proxy技術(shù),無(wú)論是self-proxy還是icap方式,都是在用戶發(fā)起對(duì)某個(gè)網(wǎng)頁(yè)進(jìn)行瀏覽請(qǐng)求的時(shí)候,由網(wǎng)關(guān)防毒設(shè)備先把這個(gè)網(wǎng)頁(yè)上所有的頁(yè)面文件以及gif先下載下來(lái),經(jīng)過(guò)掃描再給用戶。我們要明確,通過(guò)proxy方式把http流量還原成文件是一個(gè)過(guò)程,把這個(gè)文件進(jìn)行病毒掃描是另外一個(gè)過(guò)程,這兩個(gè)過(guò)程可以分開進(jìn)行。
這就凸現(xiàn)了第一個(gè)問(wèn)題,基于局域網(wǎng)的企業(yè)內(nèi)部用戶,并不愿意為了進(jìn)行http的病毒掃描而在IE瀏覽器中設(shè)置代理,而且如果設(shè)置代理,許多不支持代理的應(yīng)用將無(wú)法進(jìn)行。要實(shí)現(xiàn)http的病毒掃描,又要對(duì)用戶表現(xiàn)為透明。
第二個(gè)問(wèn)題就直接反映了進(jìn)過(guò)http病毒掃描后,用戶處會(huì)感到非常嚴(yán)重的延遲。
一般我們可以忍受的頁(yè)面延遲為不超過(guò)5秒鐘,同時(shí)http timeout的默認(rèn)時(shí)間為60秒(還是30秒?)。我們下面可以來(lái)算一下進(jìn)過(guò)http掃描后的理論延遲。假設(shè)一個(gè)公司的因特網(wǎng)出口為10Mb,理論的下載速度為1MB/S多,我們必須要考慮到電信和網(wǎng)通互聯(lián),以及網(wǎng)站限速等其他因素的影響,一般從隨機(jī)網(wǎng)站單線下載可以達(dá)到100KB/S已經(jīng)很好了。根據(jù)前面已經(jīng)介紹過(guò)的病毒掃描方式,需要由網(wǎng)關(guān)防毒設(shè)備先下載這個(gè)文件掃描后再給用戶,我們不考慮ttl的延時(shí),訪問(wèn)頁(yè)面上的小gif等只有幾k的文件的延遲小于1S,但是如果用戶要下載補(bǔ)丁或者文件時(shí),文件為10MB,那怎么辦呢?10MB的文件以100KB/S的速度理論要下載100S再加上對(duì)10MB文件的病毒掃描,其中必定需要花費(fèi)時(shí)間進(jìn)行解壓縮,代碼匹配等掃描時(shí)間。100S對(duì)于http都已經(jīng)timeout了,也就是連接都斷了。面對(duì)這種情況,防毒廠商給出的折中解決方法是,增加了病毒掃描的文件的大小限制,這樣大文件直接pass,小文件意思意思掃掃算了。不可否認(rèn)這個(gè)的確是個(gè)好辦法。病毒掃描這塊的延遲可以去掉了,但是通過(guò)代理的方式獲取文件的矛盾無(wú)法解決,更進(jìn)一步的是,多線程的http下載文件的工具在這種proxy模式無(wú)法使用或者使用不正常。面對(duì)代理上出現(xiàn)的這種問(wèn)題,代理廠商又給出了新的解決辦法,就是代理在替用戶下載文件的時(shí)候,給用戶不停的發(fā)送保持連接的數(shù)據(jù)包,使用戶的http連接不至于斷掉。這個(gè)是所有代理都碰的到的問(wèn)題,這樣的解決方式表面上的確避免了矛盾。
第三個(gè)問(wèn)題就顯得很難克服了。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,多協(xié)議的應(yīng)用軟件越來(lái)越多,特別是IM程序,為了保證強(qiáng)大的通用性和網(wǎng)絡(luò)連接性能,都可以通過(guò)http進(jìn)行連接和通訊。這就造成了很多很多的msn的聊天數(shù)據(jù),因?yàn)樽叩氖莌ttp協(xié)議而轉(zhuǎn)到代理又由病毒網(wǎng)關(guān)進(jìn)行掃描,不但msn無(wú)法使用或者使用不順暢,同時(shí)也加重了病毒網(wǎng)關(guān)的負(fù)擔(dān)。同時(shí),現(xiàn)在的網(wǎng)絡(luò)病毒的橫行,許多的病毒僵尸會(huì)在局域網(wǎng)內(nèi)不停的發(fā)送大量的對(duì)外散射的連接請(qǐng)求,有許多用的恰恰是80端口的訪問(wèn)請(qǐng)求,大量的對(duì)外不存在的地址的80請(qǐng)求,代理和病毒網(wǎng)關(guān)不可能不理睬,但是花費(fèi)了大量的資源去應(yīng)答這些不存在的請(qǐng)求,卻沒有任何效果,網(wǎng)絡(luò)病毒的網(wǎng)絡(luò)層攻擊是不可能被還原成文件的,網(wǎng)關(guān)http的病毒掃描對(duì)此是無(wú)能為力的。面對(duì)這個(gè)突出的矛盾,我們能夠想到什么對(duì)策呢?那就是在http流量經(jīng)過(guò)代理,經(jīng)過(guò)防病毒網(wǎng)關(guān)之前,先由可以檢測(cè)網(wǎng)絡(luò)層網(wǎng)絡(luò)病毒攻擊的設(shè)備過(guò)濾一次,drop掉大量的非正常http請(qǐng)求,再交給網(wǎng)關(guān)來(lái)處理。對(duì),這樣可以把以上這些問(wèn)題都解決了,但是我們花費(fèi)了多少設(shè)備、多少資金呢?有可以檢測(cè)網(wǎng)絡(luò)病毒的設(shè)備,我們還要http代理網(wǎng)關(guān)干什么?就算http頁(yè)面中有惡意代碼,我們裝在客戶端的防毒client完全可以檢測(cè)的,或者通過(guò)黑白名單屏蔽一些不良網(wǎng)站就可以很大幅度的降低http訪問(wèn)的隱患?;ㄙM(fèi)大量的資源去做效率極低的http病毒掃描,千年都很難檢測(cè)出幾個(gè)java病毒的,卻大大降低了企業(yè)內(nèi)部員工的工作效率,很不值得!