專利名稱:對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是一種關(guān)于計(jì)算機(jī)安全與計(jì)算機(jī)網(wǎng)絡(luò)安全的方法與系統(tǒng)。特別是涉 及一種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法與系統(tǒng)。
背景技術(shù):
各種遠(yuǎn)程文件系統(tǒng)訪問協(xié)議對(duì)用戶端程序提供了從計(jì)算機(jī)網(wǎng)絡(luò)中的服務(wù)
器讀取并寫入文件以及獲取服務(wù)的能力。例如,服務(wù)器信息塊協(xié)議SMB(Server Message Block)協(xié)議可以通過互聯(lián)網(wǎng)在TCP/IP協(xié)議或其他網(wǎng)絡(luò)協(xié)議如 IPX(Internetwork Packet Exchange)與NetBEUI協(xié)議之上訪問遠(yuǎn)程服務(wù)器以及其 他網(wǎng)絡(luò)資源包括打印機(jī)、郵件槽以及指定的設(shè)備之中的文件。那么, 一個(gè)用戶 端程序可以在遠(yuǎn)程服務(wù)器上讀取、創(chuàng)建并更新文件。也同樣可以與任何建立接 收SMB用戶請(qǐng)求的服務(wù)器程序進(jìn)行通信。
公共Internet文件系統(tǒng)CIFS(Common Internet File System)定義了在互聯(lián)網(wǎng) 中標(biāo)準(zhǔn)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議,使用戶組可以相互合作并通過互聯(lián)網(wǎng)或在構(gòu)成 的內(nèi)部網(wǎng)上共享文件。CIFS是建立在微軟windows系統(tǒng)與其他常規(guī)個(gè)人計(jì)算 機(jī)操作系統(tǒng),并能夠在很多平臺(tái)運(yùn)行的基于本地文件共享協(xié)議開放式的、跨、f 臺(tái)技術(shù)。
遠(yuǎn)程文件系統(tǒng)訪問增強(qiáng)了網(wǎng)絡(luò)的可用性,但同時(shí)也帶來一些不安全性影
響,如i:這些協(xié)議的復(fù)雜性使內(nèi)容過濾很難執(zhí)行,例如在文件傳輸?shù)骄W(wǎng)關(guān) 時(shí)進(jìn)行惡意軟件的掃描;ii:大多數(shù)網(wǎng)絡(luò)設(shè)備提供商都只針對(duì)網(wǎng)關(guān)提供訪問控
制功能,控制對(duì)文件和/或具體共享資源的讀取與寫入,卻將復(fù)雜的過濾功能
留給服務(wù)器執(zhí)行;且iii:用戶在個(gè)人桌面計(jì)算機(jī)共享文件夾或其他網(wǎng)絡(luò)資源時(shí) 可能沒有安裝合適的過濾程序執(zhí)行(例如反病毒軟件),那么惡意程序就有機(jī) 可趁傳播到或從共享文件夾或資源中傳播。發(fā)明內(nèi)容本發(fā)明涉及一種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)流進(jìn)行內(nèi)容過濾的 方法及系統(tǒng)。根據(jù)本發(fā)明的一實(shí)施例,運(yùn)行于網(wǎng)關(guān)邏輯上置于用戶端與服務(wù)器 之間的代理截取遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)。作為接收到用戶端發(fā)出的 遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求的響應(yīng),網(wǎng)絡(luò)網(wǎng)關(guān)以用戶端的名義向服務(wù)器發(fā)布遠(yuǎn) 程文件系統(tǒng)訪問協(xié)議請(qǐng)求。網(wǎng)絡(luò)網(wǎng)關(guān)設(shè)備將與服務(wù)器一共享資源有關(guān)的讀取自/寫入到一文件的數(shù)據(jù)緩沖存入一保持緩沖區(qū)(HoldingBuffer)。然后,作為對(duì)預(yù) 先設(shè)定與遠(yuǎn)程文件系統(tǒng)訪問協(xié)議或該保持緩沖區(qū)有關(guān)的事件的響應(yīng),通過在該 保持緩沖區(qū)內(nèi)執(zhí)行內(nèi)容過濾操作判斷該保持緩沖區(qū)中是否存在惡意代碼、危險(xiǎn) 或未授權(quán)的內(nèi)容。本發(fā)明實(shí)施例的其他功能特點(diǎn)將在下文中配合附圖進(jìn)行詳細(xì)說明。
以下附圖配合說明本發(fā)明的實(shí)施例,并不用于局限本發(fā)明的范圍。附圖中 相同的部件示以相同的標(biāo)號(hào)。圖1所示是本發(fā)明使用的一簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)示意圖;圖2所示是網(wǎng)絡(luò)網(wǎng)關(guān)各功能性模塊與用戶端及服務(wù)器之間相互作用示意圖;圖3所示是根據(jù)本發(fā)明的實(shí)施例所使用的計(jì)算機(jī)系統(tǒng)的示意圖; 圖4所示是根據(jù)本發(fā)明的實(shí)施例文件緩沖器所使用的各種數(shù)據(jù)結(jié)構(gòu)的示 意圖;圖5所示是常規(guī)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議會(huì)話操作簡(jiǎn)化說明的流程圖; 圖6所示是邏輯上置于用戶端與服務(wù)器之間的SMB/CIFS代理執(zhí)行的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議掃描處理的流程圖;圖7A-D所示是一保持緩沖區(qū)與一個(gè)相應(yīng)的空閑指針(Free Pointer)以及用于判斷是否保存緩沖區(qū)的容量己滿的使用率表格的各個(gè)狀態(tài)的示意圖。
具體實(shí)施方式
本發(fā)明是有關(guān)對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法 與系統(tǒng)。根據(jù)本發(fā)明的實(shí)施例之一,遠(yuǎn)程文件系統(tǒng)訪問協(xié)議數(shù)據(jù)流,如SMB/CIFS數(shù)據(jù)流,通過用戶端與服務(wù)器之間的網(wǎng)絡(luò)網(wǎng)關(guān)進(jìn)行監(jiān)測(cè)。被讀取或?qū)懭氲奈募⒕彺嬖谝粋€(gè)共享的區(qū)域,并接受一項(xiàng)或多項(xiàng)過濾機(jī)制進(jìn)行關(guān)于惡 意的、危險(xiǎn)性的和/或未授權(quán)的內(nèi)容的檢測(cè)。例如, 一個(gè)邏輯上置于用戶端與服務(wù)器之間的網(wǎng)關(guān)可以對(duì)使用SMB/CIFS協(xié)議進(jìn)行傳輸?shù)耐ㄟ^該網(wǎng)關(guān)的文件 和/或其他數(shù)據(jù)執(zhí)行內(nèi)容過濾操作。過濾機(jī)制可以包括但不局限于,例如惡意 程序掃描、文件名格式匹配屏蔽、機(jī)密信息控制等這樣的過濾器。在網(wǎng)關(guān)處進(jìn) 行內(nèi)容過濾的優(yōu)點(diǎn)是,自動(dòng)化執(zhí)行的惡意軟件不能夠傳播到未受保護(hù)的系統(tǒng), 使通過遠(yuǎn)程文件系統(tǒng)訪問協(xié)議進(jìn)行傳輸?shù)母鞣N類型的數(shù)據(jù)更加安全。根據(jù)本發(fā)明的實(shí)施例,提供一個(gè)文件緩沖區(qū)管理架構(gòu),能夠映射不同的文 件ID (FID),在遠(yuǎn)程文件系統(tǒng)訪問協(xié)議會(huì)話過程中創(chuàng)建文件名稱,并將該名 稱與存儲(chǔ)在保持緩沖區(qū)(HoldingBuffer)內(nèi)的文件對(duì)應(yīng),加快保持緩沖區(qū)的存儲(chǔ) 并能夠觸發(fā)合適的內(nèi)容過濾操作。根據(jù)本發(fā)明的一個(gè)實(shí)施例,將提供一種新穎的管理與掃描緩沖數(shù)據(jù)的方 法,能夠應(yīng)對(duì)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的復(fù)雜性,這樣的復(fù)雜性體現(xiàn)在任何時(shí)間 內(nèi)對(duì)共享文件的任何部分允許多個(gè)用戶操作,甚至可以在操作中出現(xiàn)的多個(gè)線 程執(zhí)行動(dòng)作(讀取/寫入)。本發(fā)明中還包括管理緩沖數(shù)據(jù)的高效的方法。本發(fā)明的一個(gè)實(shí)施例提供了一種當(dāng)保持緩沖區(qū)存儲(chǔ)滿后在不跟蹤或查詢 該保持緩沖區(qū)內(nèi)未更改分區(qū)的情況下快速判定數(shù)據(jù)的方法。重要的是,本發(fā)明所述在網(wǎng)絡(luò)網(wǎng)關(guān)應(yīng)用的各種內(nèi)容過濾系統(tǒng)與方法同樣可 以應(yīng)用于其他邏輯上置于用戶端與服務(wù)器之間的其他虛擬或物理網(wǎng)絡(luò)設(shè)備或 程序,例如防火墻、網(wǎng)絡(luò)安全部件、虛擬私有網(wǎng)絡(luò)(VPN)網(wǎng)關(guān)、交換機(jī)、橋 接部件、路由器或類似的設(shè)備部件。以下將進(jìn)行細(xì)節(jié)性的描述以助于更好的理解本發(fā)明。但是,對(duì)于熟悉本技 術(shù)領(lǐng)域的技術(shù)人員來講,即使沒有這樣的細(xì)節(jié)性說明,本發(fā)明實(shí)施例的實(shí)現(xiàn)也 是顯而易見的。在其他情況下,所示方框圖中均使用公知的結(jié)構(gòu)與設(shè)備。下面將參考附圖進(jìn)行說明,附圖中相同的功能元件使用相同的編號(hào)。上述 附圖用于解釋本發(fā)明,并不作為對(duì)本發(fā)明的限制,具體實(shí)施例和應(yīng)用與本發(fā)明 的原理是一致的。所描述的詳細(xì)的應(yīng)用是用于本領(lǐng)域的技術(shù)人員實(shí)踐本發(fā)明, 應(yīng)該理解,在不脫離本發(fā)明的精神和范圍內(nèi),可以做其他應(yīng)用以及對(duì)各種元件 做出結(jié)構(gòu)修改和/或替換。因此,下面的描述并不用于限制本發(fā)明。另外,本發(fā)明所述的各種實(shí)施例可以運(yùn)行于通用計(jì)算機(jī)中的軟件,專門的硬件或者軟件 和硬件的組合方式來執(zhí)行。本發(fā)明的實(shí)施例可以提供作為一個(gè)計(jì)算機(jī)產(chǎn)品,包括一存儲(chǔ)指令的機(jī)讀介 質(zhì),能夠被計(jì)算機(jī)設(shè)備所使用執(zhí)行操作。機(jī)讀介質(zhì)可以包括但不局限于一般形 式的計(jì)算機(jī)可讀介質(zhì)包括,如,軟盤、軟碟、硬盤、磁帶或者任何其它磁性介質(zhì)、CD-ROM、任何其他光學(xué)介質(zhì)、打孔卡片、紙帶、任何其它有孔圖案的物 理介質(zhì)、RAM、 PROM、 EPROM、 FLASH-EPROM、閃存驅(qū)動(dòng)器、記憶卡、 任何其它記憶芯片或者卡帶、下文所述的載波,或者任何其它計(jì)算機(jī)可讀的介 質(zhì)。此外,本發(fā)明的實(shí)施例也可以是下載的計(jì)算機(jī)程序產(chǎn)品,所述程序可以使 從遠(yuǎn)程計(jì)算機(jī)通過通信鏈接(例如調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)傳輸?shù)妮d波或其他 傳播介質(zhì)傳輸?shù)臄?shù)據(jù)信號(hào)到達(dá)所要求的計(jì)算機(jī)。雖然在此僅詳細(xì)闡述本發(fā)明中針對(duì)服務(wù)器信息塊協(xié)議(SMB)/公共網(wǎng)絡(luò)文件系統(tǒng)(CIFS)的實(shí)施例,但本文所述的方法與系統(tǒng)同樣適用于其他遠(yuǎn)程文件系 統(tǒng)訪問協(xié)議,如Samba,網(wǎng)絡(luò)文件系統(tǒng)(NFS: Network File System) , Not Quite NFS,優(yōu)化遠(yuǎn)程文件系統(tǒng)訪問(ORFA: Optimized Remote File-system Access ), Apple文件協(xié)議(AFP: Apple Filing Protocol),網(wǎng)絡(luò)核心協(xié)議(NCP: Netware Core Protocol), Kerberos,遠(yuǎn)程文件系統(tǒng)(RFS: Remote File System) , OS/400 文件服務(wù)器文件系統(tǒng)(QFileSvr.400: OS/400 File Server file system)。以下是本發(fā)明所涉及的術(shù)語介紹"連接"或"連結(jié)"以及相關(guān)的術(shù)語在操作范疇中使用,并不單單局限在 直接連接或連結(jié)。"用戶端"通常情況下指在用戶/服務(wù)器范疇中向一個(gè)網(wǎng)絡(luò)中的另外的程 序、進(jìn)程或設(shè)備(服務(wù)器)請(qǐng)求信息或服務(wù)的一項(xiàng)應(yīng)用、程序、進(jìn)程或設(shè)備。 需要說明的是,"用戶端"與"服務(wù)器"是相對(duì)而言的, 一項(xiàng)應(yīng)用程序?qū)τ谝?個(gè)應(yīng)用來講是作為用戶端,但對(duì)于另一個(gè)應(yīng)用來講是服務(wù)器。"用戶端"也包括在一個(gè)請(qǐng)求應(yīng)用、程序、進(jìn)程或設(shè)備之間向一個(gè)可能作為服務(wù)器,如FTP 用戶,發(fā)起連接的軟件。"內(nèi)容過濾"通常是指對(duì)在一個(gè)用戶端與服務(wù)器之間傳輸?shù)奈募?或其 他的數(shù)據(jù)進(jìn)行監(jiān)控或掃描,如惡意程序掃描、文件名稱模式屏蔽、機(jī)密信息控 制以及類似的操作。"在一個(gè)實(shí)施例中"、"根據(jù)本發(fā)明的一個(gè)實(shí)施例"以及類似的表達(dá)通常指 下文中的特殊的性能、結(jié)構(gòu)或特點(diǎn)包括在本發(fā)明的至少一個(gè)實(shí)施例,以及可能 包括在本發(fā)明的不止一個(gè)實(shí)施例中。需要說明的是,這樣的表達(dá)并不特指同--個(gè)實(shí)施例。"網(wǎng)絡(luò)網(wǎng)關(guān)"通常涉及一個(gè)網(wǎng)絡(luò)間的系統(tǒng),該系統(tǒng)可以將兩個(gè)網(wǎng)絡(luò)連接在 一起。"網(wǎng)絡(luò)網(wǎng)關(guān)"可以實(shí)施作為一項(xiàng)軟件或硬件,或是二者的結(jié)合。根據(jù)實(shí) 施情況,網(wǎng)絡(luò)網(wǎng)關(guān)可以在從程序協(xié)議到底層信令的任何級(jí)別的OSI模式下操 作。如果在陳述一個(gè)部件或功能中使用了 "可能""可以""能夠"這樣的表達(dá), 是指這樣的部件或功能并不是必須包括或具有。"代理"通常是指中間設(shè)備、程序或代理,處于作為另外的用戶端發(fā)起或 轉(zhuǎn)發(fā)請(qǐng)求的一個(gè)服務(wù)器或用戶端。"遠(yuǎn)程文件系統(tǒng)訪問協(xié)議"通常是指使網(wǎng)絡(luò)文件能夠共享的協(xié)議。例如, 遠(yuǎn)程文件系統(tǒng)訪問協(xié)議可以允許用戶端程序以連續(xù)或不連續(xù)的方式訪問互聯(lián)網(wǎng)(Internet)或在特定的內(nèi)部網(wǎng)絡(luò)之上的遠(yuǎn)程文件。遠(yuǎn)程文件系統(tǒng)訪問協(xié)議包 括但并不局限于(SMB: Sever Message Block) /公共Internet文件系統(tǒng)(CIFS: Common Internet File System), Samba,網(wǎng)纟各文件系統(tǒng)(NFS: Network File System) , Not Quite NFS,優(yōu)化遠(yuǎn)程文件系統(tǒng)訪問(ORFA: Optimized Remote File-system Access), Apple文件協(xié)議(AFP: Apple Filing Protocol),網(wǎng)絡(luò)核心 協(xié)議(NCP: Netware Core Protocol), Kerberos,遠(yuǎn)程文件系統(tǒng)(RPS: Remote File System) , OS/400文件服務(wù)器文件系統(tǒng)(QFileSvr.400: OS/400 File Server file sytem) 0"請(qǐng)求",除非內(nèi)容要求改變其用法,通常是指由用戶端向服務(wù)器發(fā)出的 一個(gè)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求或命令。根據(jù)本發(fā)明的SMB作為遠(yuǎn)程文件系 統(tǒng)訪問協(xié)議的一個(gè)實(shí)施例, 一些命令可以與相同的請(qǐng)求鏈接起來發(fā)布。例如, 打開文件與讀取文件。這些類型的命令可以作為ANDX命令。"回應(yīng)",除非內(nèi)容要求改變其用法,通常是指由服務(wù)器向用戶端發(fā)出的 一個(gè)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議回應(yīng)。"回應(yīng)"通常是,但是并不是必須是針對(duì) 用戶端的一請(qǐng)求做出的回復(fù)。"響應(yīng)"包括全部或部分的響應(yīng)。"服務(wù)器"通常情況下指在用戶/服務(wù)器范疇中對(duì)一個(gè)網(wǎng)絡(luò)中的另外的程 序、進(jìn)程或設(shè)備(服務(wù)器)請(qǐng)求信息或服務(wù)做出回復(fù)的一項(xiàng)應(yīng)用、程序、進(jìn)程 或設(shè)備。"服務(wù)器"也包括可以指可能能夠信息提供或服務(wù)的軟件。"共享"在本文用作名詞性質(zhì)時(shí),通常是指例如一個(gè)文件系統(tǒng)目錄這樣的 資源,能夠通過遠(yuǎn)程文件系統(tǒng)訪問協(xié)議進(jìn)行共享。"共享"典型的指代一個(gè)文 件目錄或一項(xiàng)"共享名稱"。共享名稱并不需要與實(shí)際被共享的客體具有相同 的在服務(wù)器上命名的真實(shí)名稱。例如,目錄路徑"/My—Documents/Clients/Client—#1/ "可以是更簡(jiǎn)短以及更明確的名稱 "Client_#l—Files"。當(dāng)通過一遠(yuǎn)程文件系統(tǒng)訪問協(xié)議訪問該共享資源時(shí),該共享資源的名稱可能替換該目錄文件真實(shí)的名稱。例如,如果服務(wù)器命名為 "server",但是到共享資源的路徑可能被遠(yuǎn)程文件系統(tǒng)訪問協(xié)議指定為 "\\server\Client—#l—Files"。在一個(gè)實(shí)施例中,在發(fā)起一個(gè)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議會(huì)話時(shí),服務(wù)器分配一個(gè)成為TreeID (TID)的特殊標(biāo)識(shí)符以在會(huì)話過程中識(shí)別共享資源。"透明代理"是一種特殊形式的代理,其只執(zhí)行給定協(xié)議的一套子集,允 許未知或一般的協(xié)議指令在不被改動(dòng)的情況下通過。透明代理的優(yōu)勢(shì)在于,用 戶端使用的完整代理需要針對(duì)該代理編輯用戶端的配置文件,與之相比較,透 明代理不需要執(zhí)行這樣額外的配置。本發(fā)明的一個(gè)或多個(gè)實(shí)施例可以包括以下各種特征的結(jié)合1. 在網(wǎng)絡(luò)網(wǎng)關(guān)內(nèi)運(yùn)行一個(gè)代理,截取用戶端與服務(wù)器之間的遠(yuǎn)程文件系統(tǒng) 訪問協(xié)議請(qǐng)求/回應(yīng),并對(duì)二者之間交換的數(shù)據(jù)執(zhí)行內(nèi)容處理以做出響應(yīng)。2. 對(duì)與該代理有關(guān)的每個(gè)文件與會(huì)話進(jìn)行單獨(dú)共享的緩沖保持,并可以通 過遠(yuǎn)程文件系統(tǒng)訪問協(xié)議實(shí)現(xiàn)用戶端與服務(wù)器之間數(shù)據(jù)被多個(gè)程序和/或線程 讀取和/或?qū)懭搿?. 快速有效地判斷一個(gè)可能己在非連續(xù)的方式下被修改或訪問過的保持 緩沖區(qū)是否已滿的機(jī)制。4. 在一個(gè)保持緩沖區(qū)內(nèi)執(zhí)行將多個(gè)文件ID (FID)映射到相同文件操作并跟蹤其他額外的信息的機(jī)制。5. 對(duì)發(fā)現(xiàn)被感染或被其他過濾器檢測(cè)到受感染的文件的限制訪問的機(jī)制。 根據(jù)本發(fā)明的一個(gè)實(shí)施例, 一個(gè)新的代理截取向內(nèi)的SMB/CIFS請(qǐng)求與回應(yīng),并掃描在用戶端與服務(wù)器之間的往來的文件。根據(jù)本發(fā)明的一實(shí)施例,使用一項(xiàng)緩存機(jī)制,通過保留用戶端與服務(wù)器之 間往來的數(shù)據(jù)拷貝從而對(duì)其進(jìn)行內(nèi)容過濾。多個(gè)用戶程序操作或一個(gè)用戶端的 多個(gè)用戶程序和/或線程可以同時(shí),并可能是在文件的不同區(qū)域訪問同一個(gè)服 務(wù)器文件。那么,緩沖區(qū)中對(duì)每項(xiàng)線程和/或操作的內(nèi)存分配可能導(dǎo)致網(wǎng)關(guān)耗 盡內(nèi)存。更進(jìn)一步來說,每項(xiàng)線程和/或操作對(duì)緩沖區(qū)的使用可能導(dǎo)致緩沖區(qū) 在一個(gè)特殊的會(huì)話中發(fā)生局部充滿,那么就會(huì)延遲或阻止緩沖數(shù)據(jù)的內(nèi)容處 理。因此,根據(jù)本發(fā)明的一實(shí)施例, 一個(gè)單獨(dú)的共享保持緩沖區(qū)便完成了執(zhí)行 操作。這種情況下,每項(xiàng)線程和/或操作引用相同的緩沖區(qū)并因其對(duì)緩沖區(qū)的 訪問而導(dǎo)致緩沖區(qū)的部分存儲(chǔ)滿。本發(fā)明提供的共享緩沖保持機(jī)制的優(yōu)勢(shì)在于 節(jié)省了內(nèi)存并允許緩沖區(qū)能夠更快速的存儲(chǔ)滿從而增加觸發(fā)內(nèi)容處理的可能 性。本發(fā)明的一實(shí)施例中,對(duì)保持緩沖區(qū)的內(nèi)容處理是由對(duì)保持緩沖區(qū)存儲(chǔ)滿(或被完全修改)的響應(yīng)來觸發(fā)的。根據(jù)J實(shí)施例,使用率表格與空閑指針(Free Pointer)方法可跟蹤保持緩沖區(qū)存儲(chǔ)的程度并更有效地判斷緩沖區(qū)的可用空間。根據(jù)SMB/CIFS協(xié)議,文件名可以使用文件路徑與tree (樹)標(biāo)識(shí)符(TID)結(jié)合的方式作為唯一性的文件標(biāo)識(shí)。根據(jù)本發(fā)明的一實(shí)施例,該名稱可以用于 一特殊列表中以識(shí)別一個(gè)已經(jīng)打開的文件并將其與 -個(gè)文件標(biāo)識(shí)符(FID)建 立聯(lián)系。應(yīng)該注意的是,幾個(gè)操作可能打開的是同一個(gè)文件并獲得不同的FID。 因此,根據(jù)本發(fā)明的一實(shí)施例,提供了一種可以將多個(gè)涉及相同的文件FID 映射到一個(gè)保持緩沖區(qū)內(nèi)的機(jī)制,該機(jī)制是通過文件映射列表與保持緩沖區(qū)數(shù) 據(jù)列表而實(shí)現(xiàn)的。在本發(fā)明的一實(shí)施例中,提供了一種對(duì)受感染的文件限制訪問的方法。假 設(shè)一個(gè)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議允許進(jìn)行局部(例如,隨機(jī)或連續(xù)性)文件訪問, 一旦網(wǎng)關(guān)檢測(cè)到一個(gè)文件已受感染,該文件的分區(qū)己經(jīng)分別被用戶端或服務(wù)器 讀取或?qū)懭?。其結(jié)果將是服務(wù)器或用戶端可能含有被病毒感染的部分文件。根 據(jù)一實(shí)施例, 一旦網(wǎng)關(guān)檢測(cè)到受感染的文件,在遠(yuǎn)程文件系統(tǒng)訪問協(xié)議回應(yīng)中相應(yīng)的錯(cuò)誤代碼將返回到用戶端,拒絕用戶對(duì)文件的訪問和/或觸發(fā)用戶端采 取適當(dāng)?shù)膭?dòng)作。14圖1所示是根據(jù)本發(fā)明所使用的一簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)的示意圖。如圖所示,一 個(gè)或多個(gè)遠(yuǎn)程用戶端115通過公共網(wǎng)絡(luò)100與一網(wǎng)絡(luò)網(wǎng)關(guān)105,與一本地局域網(wǎng)絡(luò)(LAN) 110進(jìn)行通信連接;在該連接中,該網(wǎng)絡(luò)網(wǎng)關(guān)執(zhí)行以下所述的將與遠(yuǎn)程文件系統(tǒng)訪問協(xié)議數(shù)據(jù)流有關(guān)的各種創(chuàng)新性的內(nèi)容過濾方法。本實(shí)施例中,該網(wǎng)絡(luò)網(wǎng)關(guān)105也與一郵件服務(wù)器105、 一網(wǎng)站服務(wù)器160以及一域名服 務(wù)器(DNS) 170連接。圖1所示的網(wǎng)絡(luò)結(jié)構(gòu)中,LAN110中包括一個(gè)或多個(gè)打印機(jī)140、 一個(gè)或 多個(gè)服務(wù)器130與一個(gè)或多個(gè)本地用戶120。根據(jù)一實(shí)施例,遠(yuǎn)程用戶端115、 本地用戶120與服務(wù)器130使用一遠(yuǎn)程文件系統(tǒng)訪問協(xié)議相互共享資源,如目 錄文件樹。本發(fā)明一實(shí)施例中,網(wǎng)絡(luò)網(wǎng)關(guān)105包括一透明遠(yuǎn)程文件訪問協(xié)議代 理,能夠截取用戶端遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求與服務(wù)器遠(yuǎn)程文件系統(tǒng)訪問協(xié) 議回應(yīng)。因?yàn)榇硎峭该鞯模瑢?duì)每個(gè)請(qǐng)求與回應(yīng)均不需要處理器(Handler)來實(shí) 現(xiàn)。實(shí)際上,根據(jù)本發(fā)明的一實(shí)施例,只有很少的請(qǐng)求與回應(yīng)可以真正觸發(fā)在 部分透明代理中進(jìn)行的任何實(shí)質(zhì)性的內(nèi)容過濾。例如,處理器(Handler)對(duì)請(qǐng)求 /回應(yīng)能夠執(zhí)行的便是發(fā)起會(huì)話、打開文件、關(guān)閉文件、讀取文件、寫入文件 與關(guān)閉文件的操作。所有其它不使用代理的請(qǐng)求與回應(yīng)將安然通過服務(wù)器/用 戶端。需要說明的是,在本實(shí)施例中遠(yuǎn)程用戶端115與本地用戶端120在共享存 儲(chǔ)的本地文件時(shí)可以相互作為服務(wù)器。圖2所示是網(wǎng)絡(luò)網(wǎng)關(guān)各功能性模塊與用戶端210和服務(wù)器220之間的相互 作用示意圖。在本實(shí)施例中,只有一個(gè)用戶端,如用戶端210; —個(gè)服務(wù)器, 如服務(wù)器220;與網(wǎng)絡(luò)網(wǎng)關(guān)200相互通信作用,如圖所示。應(yīng)該注意的是,可 以有很多本地和/或遠(yuǎn)程用戶端與服務(wù)器可通過網(wǎng)絡(luò)網(wǎng)關(guān)200相互連接通信, 以及相互之間直接進(jìn)行通信。根據(jù)本實(shí)施例,網(wǎng)絡(luò)網(wǎng)關(guān)200,可以是一個(gè)虛擬或物理的設(shè)備,具有三個(gè) 相互作用的功能模塊,包括SMB/CIFS代理、文件緩沖器240以及內(nèi)容處理器 250。在一實(shí)施例中,SMB/CIFS代理230是透明代理,向處理器(Handler)提 供與內(nèi)容過濾活動(dòng)有關(guān)SMB/CIFS請(qǐng)求/回應(yīng),并允許與內(nèi)容過濾活動(dòng)無關(guān) SMB/CIFS請(qǐng)求/回應(yīng)通過。根據(jù)以下所述的詳細(xì)信息,該文件緩沖器240將保存一份用戶端210與服務(wù)器220之間從共享資源221讀取與寫入的文件數(shù)據(jù)拷貝,以便能夠執(zhí)行內(nèi)容 過濾操作。根據(jù)本發(fā)明的一實(shí)施例,內(nèi)容處理器250對(duì)文件緩沖器240中存儲(chǔ)的數(shù)據(jù) 執(zhí)行內(nèi)容過濾操作。內(nèi)容處理器250可以預(yù)先監(jiān)控文件緩沖器240,以判斷適 時(shí)執(zhí)行內(nèi)容過濾操作,內(nèi)容過濾操作可以定期發(fā)起或作為外部事件(例如,文 件緩沖器和/或SMB/CIFS代理230發(fā)起的請(qǐng)求)的響應(yīng)而執(zhí)行。在本實(shí)施例 中,內(nèi)容處理器250包括一個(gè)反病毒(AV: antivirus)過濾器251與一個(gè)或多 個(gè)其他過濾器252。該AV過濾器251可以應(yīng)用當(dāng)前或未來的病毒檢測(cè)方法, 例如掃描、完整性査看、偵聽、啟發(fā)式掃描以及類似方法,以判斷在掃描的數(shù) 據(jù)中是否含有惡意代碼。 一個(gè)或多個(gè)其他過濾器252可以執(zhí)行文件名模式屏 蔽、機(jī)密信息控制及類似操作。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)容過濾器250 是一個(gè)由Fortinet公司(Sunnyvale, CA)開發(fā)的集成FortiASIC 內(nèi)容處理器 芯片?;蛟诹硪粚?shí)施例中,內(nèi)容處理器250可以是一個(gè)專門的協(xié)助處理機(jī)或軟 件,協(xié)助從主處理機(jī)轉(zhuǎn)移內(nèi)容處理任務(wù)。在當(dāng)前實(shí)施例中,SMB/CIFS代理230、文件緩沖器240與內(nèi)容處理器250 均集成在相同的網(wǎng)絡(luò)設(shè)備中或作為設(shè)備的一部分,在其他實(shí)施例中, 一個(gè)或多 個(gè)SMB/CIFS代理230、文件緩沖器240與內(nèi)容處理器250可以安置在距離與 其他功能設(shè)備較遠(yuǎn)的地點(diǎn)。根據(jù)本發(fā)明的一實(shí)施例,執(zhí)行SMB/CIFS代理230、 文件緩沖器240與內(nèi)容處理器250功能的硬件裝置或軟件通常被安置在或被分 散在一個(gè)或多個(gè)網(wǎng)絡(luò)(Internet)和/或網(wǎng)絡(luò)設(shè)備可訪問的LAN中,如一個(gè)或多 個(gè)網(wǎng)絡(luò)網(wǎng)關(guān)、防火墻、網(wǎng)絡(luò)安全設(shè)備、交換機(jī)、橋接設(shè)備、路由器、數(shù)據(jù)存儲(chǔ) 設(shè)備、計(jì)算機(jī)設(shè)備以及類似裝置設(shè)備。在一實(shí)施例中,獨(dú)立的功能設(shè)備所提供 的功能性可以各種形式結(jié)合。例如,文件緩沖器240可以集成在SMB/CIFS代 理230中或SMB/CIFS代理230集成在內(nèi)容處理器250中。以上說明是為了能夠闡述在SMB/CIFS協(xié)議序列下應(yīng)用本發(fā)明的各種實(shí) 施例,這樣的說明并不限制本發(fā)明的發(fā)明范圍,而且所述的方法同樣適用于遠(yuǎn) 程文件系統(tǒng)訪問協(xié)議。圖3所示為根據(jù)本發(fā)明的實(shí)施例,所使用的計(jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)系統(tǒng) 300可以是執(zhí)行一個(gè)或多個(gè)SMB/CIFS代理230、文件緩沖器240與內(nèi)容處理 器250功能的網(wǎng)絡(luò)網(wǎng)關(guān)、防火墻、網(wǎng)絡(luò)安全設(shè)備、交換機(jī)、橋接設(shè)備、路由器、數(shù)據(jù)存儲(chǔ)設(shè)備、服務(wù)器和/或其他網(wǎng)絡(luò)設(shè)備或這些設(shè)備的一部分。根據(jù)圖3所示,計(jì)算機(jī)系統(tǒng)300包括一個(gè)或多個(gè)處理器305, 一個(gè)或多個(gè)通信接U 310, 主內(nèi)存315、只讀存儲(chǔ)320、大容量存儲(chǔ)器325,總線330,以及可以動(dòng)存儲(chǔ)介 質(zhì)340。處理器305可以是英特爾Intel Itanium or Itanium 2⑧處理器,AMD Opteron 或Athlon MP⑧處理器或本領(lǐng)域熟悉的其他處理機(jī)。通信接口310可以是物理和/或邏輯接口。例如,通信接口可以是與基于調(diào) 制解調(diào)器的撥號(hào)連接的任何RS-232接口、 10/100以太網(wǎng)接口、或銅或光纖的千 兆接口。通信接口310也可以根據(jù)計(jì)算機(jī)系統(tǒng)300連接的網(wǎng)絡(luò)如局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)進(jìn)行選擇。通信接口310也可以是以邏輯連接(如傳輸控制協(xié)議(TCP: Transmission Control Protocol)或用戶數(shù)據(jù)報(bào)協(xié)議(UDP: Universal Datagram Protocol))結(jié) 尾命名。例如,通信協(xié)議可以是由互聯(lián)網(wǎng)地址指派機(jī)構(gòu)(IANA: Internet Assigned Numbers Authority)根據(jù)特殊用途指派的以下公知的端口之一,如UDP接口 137 或138, TCP接口 139 (用于NETBIOS會(huì)話服務(wù)-(基于TCP/IP的NetBIOS)), TCP 接口445 (基于TCP/IP的SMB)與TCP接口80 (用于HTTP服務(wù))。主內(nèi)存315可以是隨機(jī)存儲(chǔ)內(nèi)存(RAM: Random Access Memory)或公知的任何其他動(dòng)態(tài)存儲(chǔ)設(shè)備。只讀存儲(chǔ)器320可以是任何靜態(tài)存儲(chǔ)裝置例如用于存儲(chǔ)靜態(tài)信息如處理器 305的指令的可編程只讀存儲(chǔ)器(PROM)芯片。大容量存儲(chǔ)器325可以用來存儲(chǔ)信息與指令。例如,硬盤如Adaptec^'系列 的SCSI驅(qū)動(dòng)器、光盤、磁盤陣列如RAID,如Adaptec系列的RAID驅(qū)動(dòng),或任何其他可以使用的大容量存儲(chǔ)裝置??偩€330是處理器305與其他內(nèi)存,存儲(chǔ)以及通信模塊之間的通信連結(jié)。總 線330可以是根據(jù)所使用的存儲(chǔ)裝置基于PCI/PCI-X或SCSI的系統(tǒng)總線。移動(dòng)存儲(chǔ)介質(zhì)340可以是任何種類的外部硬驅(qū)動(dòng),軟盤,10MEGA⑧壓縮 驅(qū)動(dòng),壓縮磁盤一只讀存儲(chǔ)器(CD-ROM),壓縮磁盤一可寫存儲(chǔ)器(CD-RW), 數(shù)字錄像磁盤一只讀存儲(chǔ)器(DVD-ROM),可重寫式DVD以及類似存儲(chǔ)介質(zhì)。圖4所示是根據(jù)本發(fā)明的實(shí)施例,文件緩沖器所使用的各種數(shù)據(jù)架構(gòu)的示 意圖。文件緩沖器,例如文件緩沖器240,包括一個(gè)文件映射表410, 一個(gè)保持緩沖區(qū)數(shù)據(jù)列表420與一個(gè)或多個(gè)保持緩沖區(qū)430、 440與450。每個(gè)數(shù)據(jù)結(jié)構(gòu)可 以存儲(chǔ)在非連續(xù)性存儲(chǔ)器或連續(xù)性存儲(chǔ)器(例如,硬盤驅(qū)動(dòng)或內(nèi)存卡)、共享 內(nèi)存、分配內(nèi)存或靜態(tài)內(nèi)存中。在一個(gè)服務(wù)器上,每個(gè)文件分布在一個(gè)精確的樹型結(jié)構(gòu)中,也就是共享資 源中。在發(fā)起一個(gè)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議會(huì)話時(shí),用戶可以從共享資源中選擇 一個(gè)文件。根據(jù)SMB/CIFS協(xié)議組,該服務(wù)器在該會(huì)話過程中對(duì)該共享資源分 配一個(gè)能夠識(shí)別該共享資源的特殊標(biāo)識(shí)符,稱為樹ID (TID)。注意,雖然是 訪問的同一個(gè)共享資源,每個(gè)單獨(dú)會(huì)話的TID可以是不同的。根據(jù)本發(fā)明的一實(shí)施例,文件映射表410將一共享資源的同一文件的引用 (Reference)通過保持緩沖數(shù)據(jù)列表420中映射到對(duì)應(yīng)該文件的保持緩沖區(qū)或多 個(gè)保持緩沖區(qū)中(例如,保持緩沖區(qū)430、 440和/或450)。在本實(shí)施例中,文 件映射表410包括在遠(yuǎn)程文件系統(tǒng)訪問協(xié)議會(huì)話過程中由每臺(tái)服務(wù)器返回的每 個(gè)FID的一文件映射表?xiàng)l目413。文件映射列表?xiàng)l目413也包括一個(gè)與保持緩沖 數(shù)據(jù)列表420中的保持緩沖區(qū)數(shù)據(jù)列表?xiàng)l目423相對(duì)應(yīng)的指針,該保持緩沖區(qū)數(shù) 據(jù)列表?xiàng)l目423包含一個(gè)引用計(jì)數(shù)(Reference Count)421與一個(gè)對(duì)應(yīng)打開文件 的指向保持緩沖區(qū)的保持緩沖區(qū)指針422。在本實(shí)施例中,每個(gè)保持緩沖區(qū)數(shù) 據(jù)列表?xiàng)l目423對(duì)應(yīng)一個(gè)單獨(dú)的保持緩沖區(qū),亦或者在其他實(shí)施例中保持緩沖 數(shù)據(jù)列表?xiàng)l目423可以對(duì)應(yīng)多個(gè)保持緩沖。根據(jù)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議,在單個(gè)會(huì)話中,多個(gè)程序和/或同一程序中 的多個(gè)線程可以使用相同的會(huì)話連接對(duì)相同或不同的文件發(fā)出請(qǐng)求。在 SMB/CIFS協(xié)議組件中, 一個(gè)文件名稱可以是文件路徑與TID相結(jié)合的唯一性 的標(biāo)識(shí)。該信息可以保存在一個(gè)特殊列表中,如文件映射表410,以識(shí)別一打 開的文件并保存該文件對(duì)應(yīng)的FID。 一旦文件是打開的, 一個(gè)程序的多個(gè)線程 可以使用相同的FID對(duì)該文件進(jìn)行操作。但是,每次幵啟一個(gè)文件, 一個(gè)新的 FID將被返回。根據(jù)詳細(xì)的執(zhí)行程序,F(xiàn)ID可以包括數(shù)字、字符串、二進(jìn)制數(shù)字字符串或其他數(shù)據(jù)類型。在SIM/CIFS協(xié)議組中,每個(gè)程序在SMB包頭中標(biāo)識(shí)為一個(gè)程序ID(Process ID)(沒有示出)。程序中一個(gè)線程使用復(fù)合ID(MultiplexID)(沒有示出)標(biāo)識(shí)。 這樣的話,管理許多被訪問的文件以及訪問文件中多個(gè)線程的狀態(tài)便比較復(fù) 雜。而且, 一多個(gè)程序和/或一個(gè)程序中的多個(gè)線程可以同時(shí)訪問相同的文件,并可能是在該文件的不同區(qū)域。如果對(duì)每個(gè)線程均分配緩存區(qū),那么網(wǎng)絡(luò)網(wǎng)關(guān) 200將快速耗盡內(nèi)存,且每個(gè)緩沖可能只被會(huì)話局部占滿,那么將無法應(yīng)用掃 描(假設(shè)掃描是因?yàn)榫彌_器存儲(chǔ)滿而被觸發(fā)的)。因此,根據(jù)本發(fā)明的--個(gè)實(shí) 施例,單獨(dú)保持緩沖區(qū)的概念是在一個(gè)會(huì)話過程中將相同文件的所有引用映射 到相同保持緩沖區(qū)中。使用基于每個(gè)文件與每個(gè)會(huì)話的單獨(dú)緩沖的優(yōu)勢(shì)在于, 每個(gè)程序和/或線程將對(duì)應(yīng)同一個(gè)緩沖區(qū)并在訪問過程中占用緩沖區(qū)的部份空 間。這樣不僅節(jié)省了內(nèi)存且使緩沖區(qū)能夠快速充滿緩沖區(qū)并進(jìn)行掃描。在其他 實(shí)施例中,跨會(huì)話的同一文件的引用也可以映射到在--打開文件內(nèi)或會(huì)話外使 用的一個(gè)常規(guī)保持緩沖區(qū)或多個(gè)緩沖區(qū)中。在圖4中,己修改的保持緩沖區(qū)430、 440與450的分區(qū)以陰影部分示出,沒 有被修改的分區(qū)以無陰影表示。在一個(gè)實(shí)施例中,該保持緩存區(qū)與打開文件的 大小相對(duì)應(yīng),保持緩沖區(qū)中被修改的分區(qū)表示用戶從服務(wù)器中讀取,或?qū)懭氲?服務(wù)器中的數(shù)據(jù)部分。圖5所示是常規(guī)的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議會(huì)話操作簡(jiǎn)化說明的流程圖。在 流程505中,用戶端程序發(fā)起一個(gè)到服務(wù)器的連接,并發(fā)布一個(gè)通信協(xié)商請(qǐng)求 指令。通信協(xié)商請(qǐng)求用戶指令是用來判斷服務(wù)器的容量并決定各種設(shè)置,如錯(cuò) 誤代碼格式、文件名稱路徑格式(統(tǒng)一的字符標(biāo)準(zhǔn),長(zhǎng)文件名支持等)以及各 種其他選項(xiàng)。根據(jù)SMB/CIFS協(xié)議組,在兩臺(tái)設(shè)備利用SMB開始通信會(huì)話之前, 需要協(xié)商使用的CIFS語言。SMB —COM—NEGOTIATE用戶指令是用戶端發(fā)給 服務(wù)器的第一個(gè)信息。該用戶指令包括用戶端所支持的SMB語言列表信息。 作為對(duì)協(xié)議請(qǐng)求指令的響應(yīng),在流程510中,服務(wù)器將有關(guān)服務(wù)器自身的容量、 錯(cuò)誤代碼格式與文件名稱路徑格式信息返回到用戶端。當(dāng)連接請(qǐng)求被接受時(shí), 服務(wù)器的回應(yīng)表示用戶端應(yīng)該使用的SMB語言。在流程515中,用戶端程序發(fā)出一個(gè)樹連接指令,該命令包括在SMB/CIFS 協(xié)議的數(shù)據(jù)中,含有用戶端需要訪問的共享資源的名稱。在流程520中,服務(wù) 器打開共享資源并且如果文件成功打開后將向用戶端在SMB包頭中提供一個(gè) TID,用戶端可以使用TID與有關(guān)該共享資源的后續(xù)請(qǐng)求進(jìn)行連接。在流程525中,用戶端程序發(fā)布一個(gè)打開指令(例如,相對(duì)于該TID,包 含用戶端需要打開文件的名稱的SMB—COM—OPEN用戶指令)。流程530中,服 務(wù)器試圖打開被請(qǐng)求的文件待成功打開該文件將向用戶端返回該文件的大小以及一個(gè)FID,用戶端在對(duì)該文件的進(jìn)行后續(xù)操作時(shí)需提供該FID。在流程535中,用戶端程序發(fā)布讀取和/或?qū)懭胫噶睢8鶕?jù)SMB/CIFS協(xié)議, SMB一COM一READ用戶端指令包括TID、 FID、文件偏移值以及讀取文件的字 節(jié)數(shù)。同樣,SMB—COM—WRITE用戶端指令包括TID、 FID、文件偏移值、數(shù) 據(jù)塊的大小(一些情況下)以及寫入的數(shù)據(jù)。在540中,服務(wù)器從被訪問的資 源文件中返回指定偏移量的文件或?qū)⒅付ㄆ屏康奈募懭氡淮_定的文件中。在流程545中,用戶端程序發(fā)布一個(gè)關(guān)閉指令以關(guān)閉TID與FID表示的文 件。550的操作流程中,服務(wù)器關(guān)閉該文件并返回一個(gè)關(guān)閉成功或錯(cuò)誤代碼到 用戶端。最后,在會(huì)話結(jié)束時(shí),用戶斷開與TID命名的共享資源的連接(沒有 示出)。例如,在SMB/CIFS協(xié)議傳輸情況下,斷開連接可以表示為用戶端發(fā)布 一個(gè)SMB—COM TREE—DISCONNECT指令。圖6所示,為根據(jù)本發(fā)明的實(shí)施例,邏輯上置于在用戶端與服務(wù)器之間的 SMB/CIFS代理執(zhí)行的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議檢測(cè)處理的流程圖。概念上,透 明SMBCIFS代理可以放置在圖5中垂直虛線所示的位置。同樣的,該SMB/CIFS 代理相對(duì)用戶端501來講可以作為一個(gè)服務(wù)器,相對(duì)服務(wù)器502來講可以作為一 個(gè)用戶端。根據(jù)本發(fā)明的一個(gè)實(shí)施例,遠(yuǎn)程文件系統(tǒng)訪問協(xié)議代理與網(wǎng)絡(luò)網(wǎng)關(guān)連接, 截取用戶端遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求與服務(wù)器遠(yuǎn)程文件系統(tǒng)訪問協(xié)議回應(yīng)。 在一個(gè)實(shí)施例中,處理器(Handler)只需要執(zhí)行一套請(qǐng)求與回應(yīng)的子集,且因?yàn)?遠(yuǎn)程文件系統(tǒng)訪問協(xié)議代理可以使透明代理,只有部分請(qǐng)求與回應(yīng)涉及內(nèi)容過 濾的操作。例如,在SMB/CIFS協(xié)議組中,操作員對(duì)有關(guān)請(qǐng)求與回應(yīng)要做的只 是發(fā)起一個(gè)會(huì)話(例如,SMBJX)M一NEGOTIATE禾口/或 SMB—COM—SESSION—SETUP_ANDX),打開一個(gè)文件(例如, SMB—COM—OPEN),讀取文件(例如SMB—COM—READ),寫入文件(例如 SMB—COM—WRITE)與關(guān)閉文件(例如SMB—COM—CLOSE)。其他不使用代 理的請(qǐng)求/回應(yīng)將原封通過到達(dá)服務(wù)器/用戶端。遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)被截取后,在判斷流程605中,遠(yuǎn)程文件 系統(tǒng)訪問協(xié)議根據(jù)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議命令或接收到的回應(yīng)的類型做出判 斷是否執(zhí)行掃描操作。如果遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)是來自服務(wù)器的 通信協(xié)商回應(yīng),那么接著進(jìn)行到610操作流程。如果請(qǐng)求/回應(yīng)是從用戶端接收的打開回應(yīng),那么進(jìn)行操作流程615。如果請(qǐng)求/回應(yīng)是從服務(wù)器得到的讀取冋應(yīng)或從用戶端接收到的寫入請(qǐng)求,操作將執(zhí)行流程640。在本發(fā)明-一個(gè)實(shí)施例 中,對(duì)于所有的其他請(qǐng)求與回應(yīng)執(zhí)行流程630,在不做任何更改的情況下到達(dá) 服務(wù)器或用戶端。在流程610,被截取的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)被判斷為從服務(wù)器 發(fā)送到用戶端的通信協(xié)商回應(yīng)。根據(jù)本發(fā)明一實(shí)施例,協(xié)議生成的該錯(cuò)誤代碼 格式并將在該回應(yīng)中返回到用戶端,協(xié)商錯(cuò)誤代碼格式被存儲(chǔ)起來以在后續(xù)進(jìn) 行的修改回應(yīng)中使用。操作流程610完成后,繼續(xù)流程630。在流程615,被截取的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)被判斷為從服務(wù)器 發(fā)送到用戶端的打開回應(yīng)。如果之前發(fā)布到開放回應(yīng)的請(qǐng)求在服務(wù)器上反應(yīng)是 成功的,服務(wù)器將對(duì)用戶端返回一個(gè)FID以及該打開文件大小的信息。根據(jù)本 實(shí)施例, 一旦接收到打開回應(yīng),新的文件映射列表?xiàng)l目413將被插入到文件映 射表410與FID411,并同時(shí)將數(shù)據(jù)列表指針412初始化。根據(jù)本實(shí)施例,將對(duì) FID創(chuàng)建一個(gè)特殊映射發(fā)送到保持緩沖區(qū)。需要注意的是, 一些操作可以同時(shí) 打開相同的文件并獲得不同的FID,但是根據(jù)本發(fā)明的各種實(shí)施例,這些不同 的FID將被映射到同一個(gè)保持緩沖區(qū)內(nèi)。在流程620中,判斷保持緩沖區(qū)內(nèi)是否已存在打開的文件。如果不存在, 將繼續(xù)流程625。如果緩存中存在已經(jīng)打開的文件,操作將繼續(xù)流程635。流程625中,創(chuàng)建一個(gè)保持緩沖區(qū)并初始化對(duì)應(yīng)的保持緩沖區(qū)數(shù)據(jù)表?xiàng)l目 423。根據(jù)本發(fā)明的一實(shí)施例,每個(gè)保持緩沖區(qū)數(shù)據(jù)列表?xiàng)l目423中包括一個(gè)引 用計(jì)數(shù)421與保持緩沖區(qū)區(qū)指針422,引用計(jì)數(shù)421初始化到1且保持緩沖區(qū)指針 422初始化到保持緩沖區(qū)的起始地址。流程625執(zhí)行完畢后,繼續(xù)流程630。流程630中,使請(qǐng)求/回應(yīng)通過并到達(dá)服務(wù)器/用戶端。操作繼續(xù)到流程605。在流程635,之前已經(jīng)對(duì)該文件創(chuàng)建了一個(gè)保持緩沖區(qū)。從而,在一個(gè)實(shí) 施例中,在會(huì)話間對(duì)于每個(gè)打開的文件只使用一個(gè)單獨(dú)的保持緩存,保持緩沖 區(qū)的保持緩沖區(qū)數(shù)據(jù)列表?xiàng)l目423中的引用計(jì)數(shù)421與不斷增加的保持緩存的 容量相對(duì)應(yīng),以反映存有對(duì)文件的其他引用。在流程640,被截取的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)被判斷為從服務(wù)器 發(fā)送到用戶端的讀取回應(yīng),或是用戶端寫入服務(wù)器的寫入請(qǐng)求。根據(jù)本實(shí)施例, 被截取的數(shù)據(jù)(例如,服務(wù)器返回的針對(duì)用戶端的讀取請(qǐng)求的回應(yīng),或是用戶端寫入服務(wù)器中的指定文件的數(shù)據(jù))將以適當(dāng)?shù)钠浦当粚懭氲綄?duì)應(yīng)的保持緩沖區(qū)內(nèi)(例如,保持緩沖區(qū)430、 440與450)。根據(jù)本實(shí)施例,每個(gè)保持緩沖區(qū) (例如,保持緩存區(qū)430、 440與450)擁有一個(gè)空閑指針(例如空閑指針730) 以及使用率列表(例如使用率列表710)以便能夠有效地判斷保持緩沖區(qū)的存 儲(chǔ)程度??臻e指針與使用率列表對(duì)保持緩沖區(qū)寫入數(shù)據(jù)的回應(yīng)更新將在下文進(jìn) 行敘述。在流程645,判斷是否能夠發(fā)起對(duì)保持緩沖區(qū)(例如,保持緩沖區(qū)430、 440 與450)進(jìn)行掃描的一項(xiàng)或多項(xiàng)規(guī)則。在一個(gè)實(shí)施例中,所述規(guī)則包括保持緩 沖區(qū)己經(jīng)被各種用戶端程序訪問該文件的讀取與寫入的請(qǐng)求全部占用。在另一 個(gè)實(shí)施例中,對(duì)保持緩沖區(qū)中未被修改的分區(qū)進(jìn)行査看以判斷該保持緩沖區(qū)的 存儲(chǔ)情況。亦或者,可以執(zhí)行如圖7所示的有效的存儲(chǔ)飽和度測(cè)試。根據(jù)本發(fā)明的一實(shí)施例,觸發(fā)內(nèi)容檢測(cè)的其他條件包括表示數(shù)據(jù)被附加在 文件末尾的寫入請(qǐng)求。實(shí)踐證明在文件后附加數(shù)據(jù)是常見的文件感染型病毒的 表象。對(duì)現(xiàn)存的文件感染型病毒的各種形式進(jìn)行的試驗(yàn)顯示當(dāng)文件感染型病毒 試圖將病毒傳播到共享資源時(shí),在多數(shù)情況下,先要讀取文件的報(bào)頭并進(jìn)行一 些更改,然后將自己附在該文件末尾。鑒于這樣的病毒首先獲取報(bào)頭并進(jìn)行更 改的情況,可在保持緩沖區(qū)中獲取報(bào)頭信息以及試圖附加的數(shù)據(jù)進(jìn)行內(nèi)容過 濾。緩沖區(qū)中剩余部分與檢測(cè)病毒無關(guān)。那么,在檢測(cè)到這樣的用戶端發(fā)布的 每個(gè)附件寫入行為操作時(shí)能夠?qū)懭敫郊嘘P(guān)的數(shù)據(jù)執(zhí)行內(nèi)容過濾??梢允褂酶鞣N觸發(fā)內(nèi)容過濾的條件,例如檢測(cè)到文件感染型病毒其他常見 的表象。在一些實(shí)施例中,不管保持緩沖區(qū)的存儲(chǔ)空間是否已滿都會(huì)進(jìn)行定期 的掃描。在任何情況下,如果滿足一項(xiàng)或多項(xiàng)掃描規(guī)則,那么操作將繼續(xù)進(jìn)行 流程650;否則,繼續(xù)進(jìn)行流程630。在流程650,掃描保持緩沖區(qū)。如前文所示,內(nèi)容掃描或內(nèi)容過濾可以包 括使用一項(xiàng)或多項(xiàng)過濾機(jī)制對(duì)保持緩沖區(qū)進(jìn)行惡意代碼、危險(xiǎn)或/和未授權(quán)的 內(nèi)容進(jìn)行檢測(cè)。內(nèi)容過濾機(jī)制可以包括但不局限于惡意軟件的掃描、文件名稱 模式屏蔽或機(jī)密信息的控制等。在流程655,判斷危險(xiǎn)或未授權(quán)內(nèi)容是否存在。如果在檢測(cè)中發(fā)現(xiàn)上述內(nèi) 容,將執(zhí)行流程660中的操作。如果沒有檢測(cè)到任何危險(xiǎn)或未授權(quán)的內(nèi)容,將 繼續(xù)到流程630。流程660中,危險(xiǎn)或未授權(quán)的內(nèi)容已從文件中讀取或?qū)懭胛募?。因此,?duì) 該文件的后續(xù)訪問將被屏蔽并通過修改服務(wù)器的回應(yīng)返回一個(gè)適當(dāng)?shù)腻e(cuò)誤代 碼。操作將進(jìn)行流程605。如果檢測(cè)到一文件被感染,那么部分文件將分別被用戶端讀取或?qū)懭敕?wù) 器。根據(jù)本發(fā)明的一實(shí)施例,第二個(gè)保持緩沖區(qū),例如陰影緩沖區(qū)(沒有示出) 只記錄從服務(wù)器讀取的數(shù)據(jù),該數(shù)據(jù)可以用于說明可能的文件感染情況。陰影 緩沖區(qū)可以有自己的使用率列表,該緩沖區(qū)邏輯上鏈接到主保持緩沖區(qū)。如果 一個(gè)病毒,例如,讀取了一文件的報(bào)頭,最初的讀取數(shù)據(jù)將被同時(shí)存儲(chǔ)在保持 緩沖區(qū)與陰影緩沖區(qū)中,在當(dāng)病毒試圖修改報(bào)頭并將其重新寫入到服務(wù)器時(shí);只有保持緩沖區(qū)包含修改后的報(bào)頭,陰影緩存中將保持原來的未修改的報(bào)頭。 當(dāng)病毒將其附在文件后并最終被發(fā)現(xiàn),附加的數(shù)據(jù)只能被添加到保持緩沖區(qū)而 不會(huì)添加到陰影緩沖區(qū)中。那么,在一些實(shí)施例中,陰影緩沖區(qū)保存的干凈版 本可以用來恢復(fù)服務(wù)器中的原文件。假設(shè)病毒寫手開始對(duì)陰影緩存機(jī)制采取應(yīng) 對(duì)操作,例如,如果病毒先采取讀取并寫入,之后在重新讀取同一文件模塊, 那么一種解決措施可以為只將第一次從給定文件模塊的讀取存儲(chǔ)在陰影緩存 中。在一個(gè)實(shí)施例中,通過使用在會(huì)話協(xié)商過程中獲取的有關(guān)錯(cuò)誤代碼格式的 信息,可以重新創(chuàng)建一個(gè)回應(yīng),其中包含了拒絕用戶訪問文件的錯(cuò)誤代碼?;?者/而且,返回的該錯(cuò)誤代碼可以觸發(fā)一些用戶端程序中的其他動(dòng)作,例如關(guān) 閉文件和/或本地內(nèi)容掃描操作。同時(shí),服務(wù)器可以包含被病毒修改的片斷文 件,這些文件不可能被打開或執(zhí)行。但是,該片斷文件可能被安裝在服務(wù)器中 的反病毒軟件檢測(cè)到。在接收到對(duì)于讀取與寫入請(qǐng)求進(jìn)行響應(yīng)的錯(cuò)誤代碼后, 用戶端將選擇關(guān)閉該文件。需要說明的是,由于指令鏈的一個(gè)或多個(gè)先前指令可能會(huì)被繼承但是后續(xù)的指令會(huì)失敗,因此執(zhí)行SMB ANDX命令鏈連接時(shí)需 要多加注意。指令鏈的結(jié)構(gòu)應(yīng)該仍然被保存并對(duì)用戶端做出回應(yīng),以防止兼容 性的問題。在流程665中,被截取的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)被判斷為是用戶 端發(fā)布到服務(wù)器的關(guān)閉請(qǐng)求。根據(jù)所述的實(shí)施例,這樣的操作將使文件映射列 表?xiàng)l目413之一從文件映射表410中刪除。在流程670中,在相應(yīng)的保存緩沖區(qū)數(shù)據(jù)列表?xiàng)l目423中的引用計(jì)數(shù)421將逐步遞減以對(duì)應(yīng)說明對(duì)文件采取的較少的操作。在判斷流程675中,判斷對(duì)當(dāng)前的文件沒有進(jìn)行引用。如果保持緩存中的 引用是零,那么繼續(xù)流程680的操作;如果保持緩沖區(qū)中還存在引用,將轉(zhuǎn)到流程630。如果保持緩沖區(qū)中的引用為零時(shí),保持緩沖區(qū)便可以刪除了。但在本實(shí)施 例中,保持緩沖區(qū)在流程680中只被標(biāo)記為"可以被刪除"。 一個(gè)不同步的清除 操作可以刪除保持緩存,如果保持緩存在最后關(guān)閉之后的很短時(shí)間內(nèi)被再次訪 問的話,那么保持緩存便有機(jī)會(huì)重新建立。例如,當(dāng)一個(gè)用戶在共享資源中編 輯文件時(shí),通常所編輯的整個(gè)文件將在用戶計(jì)算機(jī)讀取后關(guān)閉,緊接著再打開 進(jìn)行寫入操作。需要注意的是,為了明晰并簡(jiǎn)化本發(fā)明實(shí)施例的說明,以上敘述忽略了有 關(guān)SMB特性、指令鏈的說明。在有關(guān)SMB的操作中, 一些指令能夠在同一個(gè) 請(qǐng)求中鏈接起來。例如,打開文件與讀取文件這兩個(gè)指令。這類型的指令稱為 ANDX指令。本文所述的實(shí)施例中有關(guān)代理的操作很難使用流程圖說明,但是 為了能夠正確的說明,本實(shí)施例中將根據(jù)這些指令鏈執(zhí)行代理操作并按照指令 中的任何數(shù)據(jù)與信息進(jìn)行操作。圖7A到圖7D是一保持緩沖區(qū)與一個(gè)對(duì)應(yīng)的空閑指針(Free Pointer)以及用于判斷是否保存緩沖區(qū)的容量己滿的使用率表格的各個(gè)狀態(tài)的示意圖。各種遠(yuǎn)程文件系統(tǒng)訪問協(xié)議,如SMB,可能會(huì)導(dǎo)致一些操作困難。例如, SMB協(xié)議是允許以任何的偏移量讀取或?qū)懭胛募?,那么就無法保證在一個(gè)固 定的時(shí)間保持緩沖區(qū)內(nèi)的整個(gè)文件是可用于配合內(nèi)容處理。這樣的結(jié)果,根據(jù) 本實(shí)施例,需要使用一種能夠快速有效的表示保持緩沖區(qū)是否已經(jīng)存儲(chǔ)滿的跟 蹤機(jī)制。根據(jù)本發(fā)明的一實(shí)施例,完整的跟蹤方法包括使用一個(gè)專門的使用率列表 710與一個(gè)稱為空閑指針的指針730。使用率列表710可以是一個(gè)較小的緩沖器, 例如是正常緩沖區(qū)720的八分之一的片斷緩沖器,使用率列表710中的每個(gè)比 特711代表多個(gè)比特的數(shù)量,例如保持緩沖區(qū)720中的一個(gè)字節(jié)721。實(shí)際保持 緩沖區(qū)720中的一字節(jié)被修改后,對(duì)應(yīng)的在使用率列表710中便顯示緩沖區(qū)中被 修改的部分。在一個(gè)實(shí)施例中,通過一些指示性的方法(例如,全零)將使用率列表初始化來判斷保持緩沖區(qū)中對(duì)應(yīng)的數(shù)據(jù)塊是否從服務(wù)器讀取或?qū)懭敕?wù)器中。保 持緩沖區(qū)可以在創(chuàng)建時(shí)通過例如全部被初始化為零、一個(gè)重復(fù)的字符或任意的 字符的方式被初始化。根據(jù)本實(shí)施例,對(duì)應(yīng)的數(shù)據(jù)模塊,如字節(jié),在保持緩沖 區(qū)中己被修改,在使用率列表中將以已設(shè)定的對(duì)應(yīng)幾個(gè)比特表示,對(duì)應(yīng)沒有修 改的部分將在使用率列表保持其之前的狀態(tài)。這樣可以保證讀取到保持緩沖區(qū)中的數(shù)據(jù)與其初始狀態(tài)的數(shù)據(jù)是相同的數(shù)據(jù),例如初始為o的保持緩沖區(qū)讀取到一零數(shù)據(jù)塊;但是,對(duì)零數(shù)據(jù)塊的讀取將在使用率列表中以設(shè)定對(duì)應(yīng)的比特 再現(xiàn)。同一個(gè)數(shù)據(jù)塊或一數(shù)據(jù)塊的同一部分可能被重復(fù)讀取或?qū)懭?,但是由?使用率列表中的這部分?jǐn)?shù)據(jù)已被修改,所以并不影響使用率列表的狀態(tài)。在圖7A到圖7D,使用率列表中的比特711設(shè)置為零,表示保持緩沖區(qū)720 中對(duì)應(yīng)的字節(jié)721是未被修改的(例如,表示該文件的該字節(jié)沒有被用戶端讀 取或還沒有寫入)。保持緩沖區(qū)720中未修改的數(shù)據(jù)以非陰影表示,已經(jīng)修改的數(shù)據(jù)用陰影來表示。圖7A所示為使用率列表710、空閑指針730以及保持緩存720處于數(shù)據(jù)被讀 取或?qū)懭胂嚓P(guān)的文件之前的初始狀態(tài)。如圖7A所示空閑指針730初始指向在使 用率列表710的起始位置。如圖7B所示,保持緩沖區(qū)720中的前64字節(jié)都己經(jīng)被修改,當(dāng)一個(gè)字節(jié)(使 用率列表710中的8個(gè)比特代表實(shí)際保持緩沖區(qū)中的8字節(jié))存儲(chǔ)滿后,空閑指 針730就跳到下一個(gè)比特。在保持緩沖區(qū)720還沒有存儲(chǔ)滿的時(shí)候(如圖7A至 圖7C所示),空閑指針730將總是指向使用率列表710中首個(gè)還沒有存儲(chǔ)滿的字 節(jié)在的位置。應(yīng)該注意的是,如圖7C所示,保持緩沖區(qū)720中除了空閑指針730,同時(shí) 也可以偏移量保存文件,但是空閑指針730不會(huì)移動(dòng),直到當(dāng)前的位置被存儲(chǔ) 滿。在本實(shí)施例中,只要保持緩沖區(qū)720沒有存儲(chǔ)滿,空閑指針730將始終指向 在使用率列表710中最近的未被修改的數(shù)據(jù)塊上。如圖7D所示,如果空閑指針730已經(jīng)遞進(jìn)至超出使用率列表710 (例如設(shè) 置為零)的末尾,那么整個(gè)保持緩沖區(qū)720己經(jīng)在此刻存儲(chǔ)滿可以對(duì)其存儲(chǔ)內(nèi) 容進(jìn)行安全的操作。該跟蹤機(jī)制,不需要對(duì)文件中的每個(gè)空閑的區(qū)塊進(jìn)行跟蹤 (和/或搜索)從而降低了操作進(jìn)行的難度同時(shí)增加了運(yùn)行的效率。在本發(fā)明的其他實(shí)施例中,不需要使用空閑指針730,取而代之的是對(duì)使25用率列表711進(jìn)行邏輯與以判定保持緩沖區(qū)中是否存在任何未修改的分區(qū)。一 些實(shí)施例中,可以使用多個(gè)指針跟蹤一保持緩沖區(qū)中空閑或己經(jīng)存儲(chǔ)滿的區(qū) 域。根據(jù)圖7A至圖7D所示,使用率列表的要素可以由與保持緩沖區(qū)中一個(gè) 比特對(duì)應(yīng)一個(gè)字節(jié)組成;使用率列表的要素還可以是包括一個(gè)或多個(gè)比特、一個(gè)或多個(gè)字節(jié)、以及一個(gè)或多個(gè)數(shù)字或字符串。更進(jìn)一歩,每個(gè)使用率列表的 要素可以對(duì)應(yīng)保持緩沖區(qū)中的一個(gè)或多個(gè)比特、或一個(gè)或多個(gè)字節(jié)。總而言之,使用率列表中一個(gè)比特對(duì)應(yīng)保持緩沖區(qū)中n個(gè)字節(jié)。例如,使用率列表中1 比特可以表示一個(gè)4字節(jié)無符號(hào)長(zhǎng)整形值(32比特)或一個(gè)超長(zhǎng)整形值(64 比特)或更多。使用率列表中每個(gè)比特表示的保持緩沖區(qū)中的數(shù)據(jù)越多,使用 率列表就越??;但是,為了優(yōu)化操作速度,對(duì)使用率列表的操作盡可能將數(shù)據(jù) 排列在數(shù)據(jù)塊邊界以便能夠應(yīng)用位掩碼。最理想的速度應(yīng)該在32比特處理機(jī) 中一個(gè)使用率列表中1比特對(duì)應(yīng)一個(gè)小于或等于保持緩沖區(qū)中4字節(jié),或是 64比特處理機(jī)中一個(gè)使用率列表中1比特對(duì)應(yīng)一個(gè)小于或等于保持緩沖區(qū)中8 字節(jié)。雖然本文中提出并描述了一些特殊的實(shí)施例。但應(yīng)該理解的是這些特殊的 實(shí)施例僅作為示例提出,并不作為對(duì)本發(fā)明的限制。本發(fā)明還可有其他多種實(shí) 施例,.在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根 據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā) 明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法,其特征在于,包括在邏輯上置于一用戶端與一服務(wù)器之間的一網(wǎng)絡(luò)網(wǎng)關(guān)處接收從該用戶端發(fā)送的一遠(yuǎn)程文件訪問協(xié)議請(qǐng)求;該網(wǎng)絡(luò)網(wǎng)關(guān)以該用戶端的名義發(fā)布遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求到該服務(wù)器;該網(wǎng)絡(luò)網(wǎng)關(guān)將與該服務(wù)器一共享資源有關(guān)的被讀取或?qū)懭胍晃募木W(wǎng)關(guān)數(shù)據(jù)緩存到一個(gè)保持緩沖區(qū)內(nèi);并作為對(duì)與遠(yuǎn)程文件系統(tǒng)訪問協(xié)議或該保持緩沖區(qū)有關(guān)的一預(yù)先設(shè)定的事件做出的響應(yīng),該網(wǎng)絡(luò)網(wǎng)關(guān)通過對(duì)該保持緩沖區(qū)中存儲(chǔ)的數(shù)據(jù)執(zhí)行內(nèi)容過濾來判斷該保持緩沖區(qū)是否存在惡意程序、危險(xiǎn)或未授權(quán)的內(nèi)容。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述遠(yuǎn)程文件系統(tǒng)訪問協(xié)議 包括服務(wù)器信息塊協(xié)議或通用網(wǎng)際文件系統(tǒng)。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述網(wǎng)絡(luò)網(wǎng)關(guān)包括一個(gè)透明 代理,向處理器提供了該遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的一套指令子集。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述保持緩沖區(qū)設(shè)置在該網(wǎng) 絡(luò)網(wǎng)關(guān)的一非持續(xù)性存儲(chǔ)器中。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述保持緩沖區(qū)存儲(chǔ)在該網(wǎng) 絡(luò)網(wǎng)關(guān)的一共享內(nèi)存中,并可以被該網(wǎng)絡(luò)網(wǎng)關(guān)中運(yùn)行的多個(gè)程序所訪問。
6. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述保持緩沖區(qū)是設(shè)置在該 網(wǎng)絡(luò)網(wǎng)關(guān)分配內(nèi)存中,與該網(wǎng)絡(luò)網(wǎng)關(guān)中運(yùn)行的一具體程序有關(guān)。
7. 根據(jù)權(quán)利要求3所述的方法,其特征在于,還進(jìn)一步包括,該透明代理 通過一包含文件標(biāo)識(shí)符的弓1用列表來跟蹤保持緩沖區(qū)中的引用。
8. 根據(jù)權(quán)利要求3所述的方法,其特征在于,進(jìn)一步包括,該透明代理中 通過一使用率列表跟蹤該保持緩沖區(qū)使用與修改的情況。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述使用率列表包含能夠表 示該保持緩沖區(qū)存儲(chǔ)空間的信息。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,所述預(yù)先判斷的事件包括 判斷該保持緩沖區(qū)巳經(jīng)充滿。
11. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述預(yù)先判斷的事件包括 判斷一用戶端正在試圖在該文件上附加數(shù)據(jù)的操作。
12. —種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法,其 特征在于,包括通過一連接于一網(wǎng)絡(luò)設(shè)備的邏輯上部署在一用戶端與一服務(wù)器之間的代 理截取從一用戶端發(fā)送的一 SMB/CIFS協(xié)議請(qǐng)求;該代理以該用戶端的名義對(duì)該服務(wù)器發(fā)布遠(yuǎn)程文件系統(tǒng)訪問協(xié)議;該代理將與服務(wù)器一共享資源有關(guān)的被讀取或?qū)懭胍晃募木W(wǎng)關(guān)數(shù)據(jù)緩存到一個(gè)文件緩沖區(qū)內(nèi);作為對(duì)與SMB/CIFS協(xié)議或該文件緩沖區(qū)有關(guān)的一預(yù)先設(shè)定的事件做出 的響應(yīng),該代理通過對(duì)緩存中存儲(chǔ)的數(shù)據(jù)執(zhí)行內(nèi)容過濾來判斷該文件緩沖區(qū)是 否存在惡意程序、危險(xiǎn)或未授權(quán)的內(nèi)容。
13. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述網(wǎng)絡(luò)設(shè)備包括一網(wǎng) 關(guān)設(shè)備。
14. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述代理包括 -個(gè)透明 代理,僅對(duì)處理器提供SMB/CIFS協(xié)議的一套指令子集。
15. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述文件緩沖區(qū)包括對(duì) 該共享資源中每個(gè)打開文件設(shè)置的多個(gè)保持緩沖區(qū)。
16. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述文件緩沖區(qū)包括針 對(duì)該共享資源中每個(gè)打開文件的一個(gè)單獨(dú)的保持緩沖區(qū)。
17. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述文件緩沖區(qū)是設(shè)置 在該網(wǎng)絡(luò)設(shè)備的非持續(xù)性存儲(chǔ)器中。
18. 根據(jù)權(quán)利要求16所述的方法,其特征在于,所述單獨(dú)的保持緩沖區(qū) 設(shè)置在該網(wǎng)絡(luò)設(shè)備的一共享內(nèi)存中,可以被運(yùn)行在該網(wǎng)絡(luò)設(shè)備的多個(gè)程序訪 問。
19. 根據(jù)權(quán)利要求16所述的方法,其特征在于,該方法還進(jìn)一步包括, 該代理通過維護(hù)包含文件標(biāo)識(shí)符的引用列表來跟蹤該單獨(dú)保持緩沖區(qū)中的引 用。
20. 根據(jù)權(quán)利要求19所述的方法,其特征在于,該方法還進(jìn)一步包括, 該代理應(yīng)用一使用率列表跟蹤該單獨(dú)保持緩沖區(qū)使用與修改的情況。
21. 根據(jù)權(quán)利要求20所述的方法,其特征在于,所述使用率列表包含能 夠表示該單獨(dú)保持緩沖區(qū)存儲(chǔ)空間的信息。
22. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述預(yù)先設(shè)定的事件包括判斷該單獨(dú)保持緩沖區(qū)已經(jīng)存儲(chǔ)滿。
23. 根據(jù)權(quán)利要求12所述的方法,其特征在于,所述預(yù)先設(shè)定的事件包 括檢測(cè)到文件感染型病毒的一項(xiàng)或多項(xiàng)常見行為。
24. 根據(jù)權(quán)利要求23所述的方法,其特征在于,所述的文件感染型病毒 的一項(xiàng)或多項(xiàng)常見行為包括試圖在文件末尾附加數(shù)據(jù)。
25. —種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的網(wǎng)絡(luò)設(shè)備, 其特征在于,該網(wǎng)絡(luò)設(shè)備包括一內(nèi)容處理器,提供一項(xiàng)或多項(xiàng)過濾器可檢測(cè)所掃描的數(shù)據(jù)是否含有惡意 代碼;一遠(yuǎn)程文件系統(tǒng)訪問協(xié)議代理,與該內(nèi)容處理器連接,邏輯上部署在一用 戶端與一服務(wù)器之間,使通過一遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的在該用戶端與該服務(wù) 器之間傳輸?shù)臄?shù)據(jù)能夠由內(nèi)容處理器進(jìn)行內(nèi)容過濾操作并對(duì)檢測(cè)到的預(yù)先設(shè) 定的事件做出響應(yīng);以及一包含多個(gè)文件緩沖數(shù)據(jù)結(jié)構(gòu)的內(nèi)存,該文件緩沖數(shù)據(jù)結(jié)構(gòu)可緩沖與該服 務(wù)器中一共享資源有關(guān)的讀取或?qū)懭攵鄠€(gè)文件的數(shù)據(jù)并可在遠(yuǎn)程文件系統(tǒng)訪 問協(xié)議會(huì)話過程中將該多個(gè)文件中的每個(gè)文件的引用映射到與上述每個(gè)文件 對(duì)應(yīng)的一個(gè)單獨(dú)的保持緩沖區(qū)中。
26. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述遠(yuǎn)程文件系統(tǒng) 訪問協(xié)議包括服務(wù)器信息塊協(xié)議或通用網(wǎng)際文件系統(tǒng)協(xié)議。
27. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述網(wǎng)絡(luò)設(shè)備包括 一網(wǎng)絡(luò)網(wǎng)關(guān)。
28. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述遠(yuǎn)程文件系統(tǒng) 訪問協(xié)議代理包括一透明代理。
29. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述內(nèi)存是一共享 內(nèi)存,可以被運(yùn)行于該網(wǎng)絡(luò)設(shè)備的多個(gè)程序訪問。
30. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述文件緩沖數(shù)據(jù) 結(jié)構(gòu)包括對(duì)應(yīng)一單獨(dú)保持緩沖區(qū)的一使用率列表,以便跟蹤每個(gè)單獨(dú)保持緩沖區(qū)的使用以及修改情況。
31. 根據(jù)權(quán)利要求30所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述每個(gè)使用率列 表包括表示與每個(gè)單獨(dú)保持緩沖區(qū)中空閑分區(qū)與存儲(chǔ)滿分區(qū)的條目。
32. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述預(yù)先設(shè)定的事 件包括判斷一個(gè)或多個(gè)該單獨(dú)保持緩沖區(qū)己經(jīng)存儲(chǔ)滿。
33. 根據(jù)權(quán)利要求25所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述預(yù)先設(shè)定的事 件包括該遠(yuǎn)程文件系統(tǒng)訪問協(xié)議代理檢測(cè)到文件感染型病毒的一項(xiàng)或多項(xiàng)常 見行為。
34. 根據(jù)權(quán)利要求33所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述文件感染型病 毒的一項(xiàng)或多項(xiàng)常見表象或行為包括試圖對(duì)很多文件中的一個(gè)文件附加數(shù)據(jù)。
35. —種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法,其特 征在于,包括在一網(wǎng)絡(luò)設(shè)備上接收一建立網(wǎng)絡(luò)會(huì)話的請(qǐng)求,該請(qǐng)求以一源網(wǎng)絡(luò)地址、一 目標(biāo)網(wǎng)絡(luò)地址以及一遠(yuǎn)程文件系統(tǒng)訪問協(xié)議為特征;通過在與該網(wǎng)絡(luò)設(shè)備連接的在邏輯上置于用戶端與服務(wù)器之間的一代理 上進(jìn)行截取操作收集與該網(wǎng)絡(luò)會(huì)話有關(guān)的數(shù)據(jù),該代理從該用戶端獲取一遠(yuǎn)程 文件系統(tǒng)訪問協(xié)議請(qǐng)求,或從該服務(wù)器得到一遠(yuǎn)程文件系統(tǒng)訪問協(xié)議回應(yīng);該代理以該用戶端的名義發(fā)送遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求到該服務(wù)器,或 將以該服務(wù)器的名義將對(duì)遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求做出的回應(yīng)發(fā)送到該用 戶端;并對(duì)收集到的數(shù)據(jù)執(zhí)行內(nèi)容過濾的操作。
36. 根據(jù)權(quán)利要求35所述的方法,其特征在于,所述網(wǎng)絡(luò)設(shè)備包括一網(wǎng)關(guān)。
37. 根據(jù)權(quán)利要求35所述的方法,其特征在于,所述遠(yuǎn)程文件系統(tǒng)訪問 協(xié)議包括服務(wù)器信息塊協(xié)議/通用網(wǎng)際文件系統(tǒng)。
38. 根據(jù)權(quán)利要求35所述的方法,其特征在于,所述代理,向處理器提 供了該遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的一套或全部指令子集。
39. 根據(jù)權(quán)利要求35所述的方法,其特征在于,所述保持緩沖區(qū)用于存 儲(chǔ)上述收集到的數(shù)據(jù)。
40. —種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法,其特 征在于,包括一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),容納多個(gè)保持緩沖區(qū)、 一保持緩沖區(qū)數(shù)據(jù)列 表、 一文件映射表以及一使用率列表,該保持緩沖區(qū)用于存儲(chǔ)從一遠(yuǎn)程文件系 統(tǒng)訪問協(xié)議收集到的數(shù)據(jù),該使用率列表與上述多個(gè)保持緩沖區(qū)的每一個(gè)相對(duì)應(yīng);在該保持緩沖區(qū)數(shù)據(jù)列表內(nèi)跟蹤該多個(gè)保持緩沖區(qū)的每個(gè)保持緩沖區(qū)的引用;通過該文件映射表將一常規(guī)文件的引用映射到上述多個(gè)保存緩沖區(qū)的一 個(gè)常規(guī)緩沖區(qū)中的;利用與該多個(gè)保持緩沖區(qū)的每個(gè)保持緩沖區(qū)相對(duì)應(yīng)的使用率列表跟蹤該 多個(gè)保持緩沖區(qū)的已修改與未修改的分區(qū);對(duì)與該多個(gè)保持緩沖區(qū)中的一個(gè)有關(guān)的一預(yù)先設(shè)定的事件做出響應(yīng),通過 對(duì)該保持緩沖區(qū)執(zhí)行內(nèi)容過濾以判斷該保持緩沖區(qū)中是否存在惡意代碼、危險(xiǎn) 或未授權(quán)的內(nèi)容。
41. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述一項(xiàng)或多項(xiàng)計(jì)算機(jī) 可讀介質(zhì)包括非持續(xù)性存儲(chǔ)器,例如隨機(jī)存取存儲(chǔ)器。
42. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述一項(xiàng)或多項(xiàng)計(jì)算機(jī) 可讀介質(zhì)包括持續(xù)性存儲(chǔ)器,例如硬盤、閃存或其他非易失性存儲(chǔ)器。
43. 根據(jù)權(quán)利要求41所述的方法,其特征在于,所述非持續(xù)性存儲(chǔ)器包 括能夠被運(yùn)行在該網(wǎng)絡(luò)設(shè)備中的多個(gè)程序訪問的共享內(nèi)存。
44. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述文件映射表的要素 包含文件標(biāo)識(shí)符。
45. 根據(jù)權(quán)利要求44所述的方法,其特征在于,所述文件標(biāo)識(shí)符由一數(shù) 字、 一字符型字符串或二進(jìn)制的序列組成。
46. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述文件映射列表的要 素包含對(duì)應(yīng)多個(gè)保持緩沖區(qū)中的一個(gè)或多個(gè)的引用。
47. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述保持緩沖區(qū)數(shù)據(jù)列 表的要素包括對(duì)應(yīng)多個(gè)保持緩沖區(qū)中的一個(gè)或多個(gè)的引用。
48. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述保持緩存數(shù)據(jù)列表 的要素包括對(duì)應(yīng)多個(gè)保持緩沖區(qū)中的每一個(gè)的引用計(jì)數(shù)。
49. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述使用率列表的要素由一個(gè)或多個(gè)比特、字節(jié)、數(shù)字或字符串組成。
50. 根據(jù)權(quán)利要求49所述的方法,其特征在于,所述使用率列表的每一 個(gè)要素對(duì)應(yīng)于多個(gè)保持緩沖區(qū)中的相應(yīng)緩沖區(qū)的一個(gè)或多個(gè)比特或字節(jié)。
51. 根據(jù)權(quán)利要求49所述的方法,其特征在于,所述使用率列表的條目表示相應(yīng)保持緩沖區(qū)的相應(yīng)分區(qū)修改或未修改的狀態(tài)。
52. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述預(yù)先設(shè)定的事件包 括判斷該保持緩沖區(qū)被全部修改。
53. 根據(jù)權(quán)利要求40所述的方法,其特征在于,所述預(yù)先設(shè)定的事件包 括試圖在該保持緩沖區(qū)附加數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種對(duì)使用遠(yuǎn)程文件系統(tǒng)訪問協(xié)議的數(shù)據(jù)進(jìn)行內(nèi)容過濾的方法與系統(tǒng)。根據(jù)本發(fā)明的一實(shí)施例,運(yùn)行于一網(wǎng)關(guān)且邏輯上置于用戶端與服務(wù)器之間的代理截取遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求/回應(yīng)。作為接收到用戶端發(fā)出的遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求的響應(yīng),網(wǎng)絡(luò)網(wǎng)關(guān)以用戶端的名義向服務(wù)器發(fā)布遠(yuǎn)程文件系統(tǒng)訪問協(xié)議請(qǐng)求。網(wǎng)絡(luò)網(wǎng)關(guān)設(shè)備將與服務(wù)器一共享資源有關(guān)的讀取自/寫入到一文件的數(shù)據(jù)緩沖入一保持緩沖區(qū)。然后,作為對(duì)預(yù)先設(shè)定與遠(yuǎn)程文件系統(tǒng)訪問協(xié)議或該保持緩沖區(qū)有關(guān)的事件的響應(yīng),通過在該保持緩沖區(qū)內(nèi)執(zhí)行內(nèi)容過濾操作判斷該保持緩沖區(qū)中是否存在惡意代碼、危險(xiǎn)或未授權(quán)的內(nèi)容。
文檔編號(hào)H04L29/08GK101252585SQ20081008542
公開日2008年8月27日 申請(qǐng)日期2008年3月14日 優(yōu)先權(quán)日2007年5月8日
發(fā)明者威廉·杰弗里·克勞福德 申請(qǐng)人:飛塔信息科技(北京)有限公司