專利名稱:用于執(zhí)行網(wǎng)絡(luò)防火墻的基于多層的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機系統(tǒng)和網(wǎng)絡(luò)安全性。更具體地說,本發(fā)明涉及一種在網(wǎng)絡(luò)設(shè)備中執(zhí)行防火墻的方法。
背景技術(shù):
網(wǎng)絡(luò)協(xié)議的設(shè)計用于促進通過公開的數(shù)據(jù)交換而在各個網(wǎng)絡(luò)設(shè)備之間進行通信。這種公開的數(shù)據(jù)交換大大增強了網(wǎng)絡(luò)設(shè)備完成任務的用途,同時,它也產(chǎn)生一些問題,這是因為網(wǎng)絡(luò)協(xié)議不是為網(wǎng)絡(luò)安全性而設(shè)計,因此一般不提供網(wǎng)絡(luò)安全性。被耦合到公用網(wǎng)和專用網(wǎng)(例如,局域網(wǎng)(LANs)、廣域網(wǎng)(WANs)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng))的計算機容易受到直接或間接地與該網(wǎng)絡(luò)耦合的其他網(wǎng)絡(luò)設(shè)備的惡意攻擊。這類惡意的攻擊包括盜竊數(shù)據(jù)、“服務拒絕”(DOS)攻擊、計算機病毒擴散和類似的攻擊。當將計算機耦合到網(wǎng)絡(luò)時,會出現(xiàn)其他有關(guān)的事項(例如,控制兒童對不合需要的或不適當?shù)膚eb站點的訪問)。
防火墻一般是用來保護用戶個人、網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)避免遭遇惡意攻擊的一種工具,同時,也增加了通過實施策略來控制網(wǎng)絡(luò)上的數(shù)據(jù)交換的能力。通過檢查網(wǎng)絡(luò)信息包,并通過根據(jù)該檢查來確定是應該允許還是相反地阻滯這些信息包進一步穿過網(wǎng)絡(luò),該防火墻可執(zhí)行該策略。
經(jīng)由該防火墻而加以執(zhí)行的這項策略由一個或多個濾波器來定義。每個濾波器包括濾波器參數(shù)和關(guān)聯(lián)的動作。這些濾波器參數(shù)被用來識別受制于該防火墻策略的網(wǎng)絡(luò)信息包,并包括諸如硬件地址(例如,“媒體訪問控制”(MAC)地址)、網(wǎng)絡(luò)地址(例如,“網(wǎng)際協(xié)議”(IP)地址)、協(xié)議類型(例如,“傳輸控制協(xié)議”(TCP))、端口號和類似物等信息。該動作定義應該如何處置具有與這些濾波器參數(shù)相匹配的參數(shù)的信息包。一個特殊的例子是該濾波器包括“統(tǒng)一資源定位器”(URL)地址(例如,“http//www.foo.com”),作為它的參數(shù)。該濾波器進一步使該阻滯動作(即,丟失該信息包)與那個URL地址相關(guān)聯(lián)。只要該防火墻檢查信息包并且通過那個檢查而將該URL地址“http//www.foo.com”識別為被嵌入該信息包中,該服務器就丟失該信息包,從而防止它穿過網(wǎng)絡(luò)。
利用通過包括分層網(wǎng)絡(luò)結(jié)構(gòu)的網(wǎng)絡(luò)堆棧來發(fā)送和接收信息包,網(wǎng)絡(luò)設(shè)備可以交換數(shù)據(jù)。存在不同的網(wǎng)絡(luò)結(jié)構(gòu)模型,但大多數(shù)至少包括應用層、傳輸層、網(wǎng)絡(luò)層和鏈路層。網(wǎng)絡(luò)信息包序貫地穿過每個層,并且,當每個層被穿過時,該信息包經(jīng)歷處理。關(guān)于出站信息包,該應用層根據(jù)應用協(xié)議(例如,其中的一些是“超文本傳輸協(xié)議”(HTTP)、“文件傳輸協(xié)議”(FTP)和“簡單郵件傳輸協(xié)議”(SMTP))來處理數(shù)據(jù)。其他的層(例如,該網(wǎng)絡(luò)層和該傳輸層)通過將該數(shù)據(jù)嵌入TCP頭部和IP頭部中,來對其進行分組(packetize)。這些層通過(例如)分析頭部、為數(shù)據(jù)解除分組(unpacketize)等,來為入站信息包執(zhí)行互換處理。由這些層執(zhí)行的該分層“堆棧”結(jié)構(gòu)和處理功能會產(chǎn)生動態(tài)信息包結(jié)構(gòu),由此,當該信息包穿過該網(wǎng)絡(luò)協(xié)議堆棧時,包括這些信息包參數(shù)的信息包內(nèi)容會發(fā)生變化。
防火墻檢查位于該分層網(wǎng)絡(luò)堆棧內(nèi)的檢查點處的信息包。一方面,該檢查點在該應用層處。例如,該防火墻被用作“分層服務供應者”(LSP)。該應用層處的信息包包括基礎(chǔ)數(shù)據(jù),該基礎(chǔ)數(shù)據(jù)將被傳送到另一個網(wǎng)絡(luò)設(shè)備或者已從另一個網(wǎng)絡(luò)設(shè)備那里被加以接收。通過檢查該應用層處的該信息包,可允許該防火墻識別應用層參數(shù)(例如,URL地址)并將這些應用層參數(shù)與這些濾波器參數(shù)進行比較。但是,其他的信息包參數(shù)(例如,IP地址、端口號、MAC地址和類似物)不可用,這是因為它們要么還沒有被加入出站信息包,要么已離開入站信息包而被加以分析。
另一方面,在該網(wǎng)絡(luò)堆棧(作為被置于該鏈路層與該網(wǎng)絡(luò)層之間的中間驅(qū)動器)的較低層次處執(zhí)行該防火墻檢查點。該網(wǎng)絡(luò)堆棧的這些較低層次處的信息包包括最大數(shù)量的參數(shù)(例如,接口號、MAC地址、IP地址、協(xié)議類型、端口和有效載荷數(shù)據(jù))。雖然這些信息包包括這類參數(shù),但是,這并不表示認為可以容易地識別這些參數(shù)。在該防火墻接收該信息包之后,該防火墻需要分析并解釋該有關(guān)的信息包參數(shù),用于和這些濾波器參數(shù)進行比較。這樣,該網(wǎng)絡(luò)堆棧中的這些層以及該防火墻可執(zhí)行多余的信息包分析和解釋功能。
發(fā)明內(nèi)容
本發(fā)明針對一種在防火墻構(gòu)架中執(zhí)行防火墻的方法。該防火墻構(gòu)架包括多個層,這些層中的每個層能夠根據(jù)層協(xié)議來處理信息包,這些層中的每個層進一步能夠請求將防火墻策略應用于這些信息包。該防火墻構(gòu)架還包括防火墻引擎,該防火墻引擎包括多個被安裝的濾波器。
請求層從這多個層中的前一層那里接收網(wǎng)絡(luò)信息包。該請求層從該信息包中識別一組參數(shù),并將分類調(diào)用發(fā)給具有該參數(shù)集的這個防火墻引擎。作為響應,該防火墻引擎將動作返回到該請求層。如果該動作是允許該信息包進一步穿過這多個層的指令,則該請求層根據(jù)該層協(xié)議來處理該信息包,并將該信息包發(fā)送到這多個層中的下一層。相反,如果該動作是丟失該信息包的指令,則該層不處理該信息包,并且不將該信息包發(fā)送到這下一層。
這個被安裝的濾波器集中的每個濾波器包括一組濾波器條件和一個動作。當該請求層發(fā)出該分類調(diào)用時,該防火墻引擎確定這多個被安裝的濾波器中的任何濾波器是否與該參數(shù)集相匹配。然后,該防火墻引擎根據(jù)這些匹配濾波器中的信息來返回該動作。
本發(fā)明進一步提供了一種允許來自可信啟動設(shè)備的信息包穿過防火墻(通常被配置成阻滯未經(jīng)請求的入站信息包)并到達響應設(shè)備的方法。該啟動設(shè)備首先啟動使用密鑰商議協(xié)議的鑒定。一旦成功地完成該鑒定,該響應計算機就創(chuàng)建一個濾波器,該濾波器允許來自該啟動計算機的信息包到達該響應計算機處的目標處理。
通過以下參照附圖而進行的對說明性實施例的詳細描述,本發(fā)明的額外的特點和優(yōu)點將會變得一目了然。
所附權(quán)利要求書詳細地陳述了本發(fā)明的這些特點,但通過以下結(jié)合附圖的詳細說明,可以最佳程度地理解本發(fā)明及其目的和優(yōu)點。在這些附圖中圖1是框圖,一般展示了其上駐留本發(fā)明的示范計算機系統(tǒng);圖2是框圖,一般展示了由此可使用本發(fā)明的示范網(wǎng)絡(luò)環(huán)境;
圖3是框圖,一般展示了其中可使用本發(fā)明的各種方法的防火墻結(jié)構(gòu);圖4是框圖,展示了用于本發(fā)明的示范濾波器;圖5是框圖,展示了關(guān)于用于本發(fā)明的信息包上下文的示范數(shù)據(jù)結(jié)構(gòu);圖6是框圖,展示了用于本發(fā)明的應用編程接口的示范集合;圖7是框圖,展示了用于本發(fā)明的示范應用編程接口;圖8是框圖,展示了根據(jù)本發(fā)明的、由網(wǎng)絡(luò)層執(zhí)行的各項功能;圖9是框圖,展示了用于本發(fā)明的呼出(callout)的示范集合;圖10是流程圖,展示了根據(jù)本發(fā)明的、被用來執(zhí)行防火墻的示范方法;圖11是流程圖,展示了被網(wǎng)絡(luò)層用來執(zhí)行防火墻的示范方法;圖12是流程圖,展示了被防火墻引擎用來執(zhí)行防火墻的示范方法;圖13是流程圖,展示了一種方法,該方法被用來允許通過由可信網(wǎng)絡(luò)設(shè)備啟動的防火墻來進行未經(jīng)請求的通信。
具體實施例方式
描述了一種用于根據(jù)網(wǎng)絡(luò)設(shè)備中的防火墻結(jié)構(gòu)來執(zhí)行防火墻的方法。該方法使網(wǎng)絡(luò)信息包隸屬協(xié)議堆棧中的多個層處的濾波器。在本發(fā)明的一個實施例中,在多個操作系統(tǒng)處理(被稱作“核心模式處理”和“用戶模式處理”)中執(zhí)行該方法和防火墻結(jié)構(gòu)。作為選擇,在單一操作系統(tǒng)處理中,或者在在該操作系統(tǒng)以外執(zhí)行的一個或多個程序模塊或應用程序中執(zhí)行該方法和結(jié)構(gòu)。
該核心模式處理包括協(xié)議堆棧、核心防火墻引擎以及一個或多個呼出。該協(xié)議堆棧包括應用層、傳輸層、網(wǎng)絡(luò)層和鏈路層。按需要增加或從該系統(tǒng)中刪除額外的層。這些層每個都構(gòu)成請求層,該請求層從前一個層或處理那里接收該網(wǎng)絡(luò)信息包和對應的信息包上下文數(shù)據(jù)。然后,該請求層經(jīng)由層API,將分類請求發(fā)給該核心防火墻引擎。該分類請求包括由該請求層接收的該信息包、該信息包上下文和與該請求層關(guān)聯(lián)的一組層參數(shù)。該核心防火墻引擎處理該請求,并返回動作。舉例來講,該動作指示該請求層如何處置該信息包(例如,允許或阻滯)。如果該動作是允許,則該請求層根據(jù)層協(xié)議來處理該信息包,將該信息包上下文修改成包括這些層參數(shù),并將該信息包和信息包上下文傳遞到下一層。如果該動作是阻滯,則該請求層丟失該信息包,并且不將該信息包傳遞到這下一層。作為該阻滯動作的結(jié)果,該請求層可能會執(zhí)行額外的功能(例如,拆毀TCP連接)。
該核心防火墻引擎包括該層API、一組被安裝的濾波器和呼出API。這個被安裝的濾波器集中的每個濾波器包括一組濾波器條件和一個關(guān)聯(lián)的動作。該核心防火墻引擎通過識別一個或多個匹配濾波器,來處理從該請求層那里被發(fā)送的該分類請求。這些匹配濾波器具有跟這些層參數(shù)和信息包上下文相匹配的濾波器條件。一旦識別這些匹配濾波器,就按濾波器優(yōu)先級的順序來應用它們。如果正在被應用的該過濾的這個動作是允許或阻滯,則將這個動作返回到該請求層。如果該動作是呼出,則將該請求層所發(fā)出的該分類請求連同匹配濾波器標識一起傳遞到這些呼出模塊中的一個呼出模塊。該呼出模塊執(zhí)行其被編程的功能,并將動作返回到該核心防火墻引擎。如果沒有為信息包識別匹配濾波器,則向該請求層通知不曾發(fā)現(xiàn)匹配濾波器;然后,該請求層決定如何處置該信息包。
示范用戶模式處理包括用戶模式防火墻引擎以及一個或多個策略供應者。這些策略供應者從任何合適的來源(例如,易失或非易失存儲器)獲得策略。該策略是用于呈現(xiàn)新的濾波器的信息源,包括濾波器條件和關(guān)聯(lián)動作的這個集合。該用戶防火墻引擎經(jīng)由濾波器引擎API,將這個新的濾波器加入該核心防火墻引擎中的這個被安裝的濾波器集。
該用戶模式也包括該核心防火墻引擎的實例,從而允許創(chuàng)建用戶模式層。然后,這些用戶模式層使用該核心防火墻引擎的該用戶模式實例來識別與一組參數(shù)相匹配的濾波器,這組參數(shù)允許在該用戶模式以內(nèi)應用過濾。
在本發(fā)明的實施例中,從該核心防火墻引擎到一組呼出模塊的呼出接口實質(zhì)上允許這些防火墻性能的無限擴展。舉例來講,HTTP上下文呼出通過識別可接受的和不能接受的URL地址,來提供雙親特點?!熬W(wǎng)際安全性”(IPSec)呼出驗證信息包一直適當?shù)亟?jīng)歷IPSec處理。記錄呼出記入符合所建立的標準的信息包,從而促進以后對信息包的檢查。侵入檢測呼出根據(jù)已知的算法來識別可疑的信息包。
本發(fā)明也提供了一種方法,用于允許與可信的網(wǎng)絡(luò)設(shè)備進行未經(jīng)請求的通信,同時阻滯來自其他網(wǎng)絡(luò)設(shè)備的其他未經(jīng)請求的通信。
參考這些附圖(其中,相似的參考數(shù)字提及相似的元件),本發(fā)明被展示為在合適的計算環(huán)境中加以執(zhí)行。雖然未作要求,但是,將在正由個人計算機執(zhí)行的計算機可執(zhí)行指令(例如,程序模塊)的一般上下文中描述本發(fā)明。通常,程序模塊包括執(zhí)行特殊任務或?qū)嵤┨厥獾某橄髷?shù)據(jù)類型的例行程序、程序、對象、部件、數(shù)據(jù)結(jié)構(gòu)等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于本地記憶存儲設(shè)備和遠程記憶存儲設(shè)備中。
圖1展示了可以在其上執(zhí)行本發(fā)明的合適的計算系統(tǒng)環(huán)境100的例子。計算系統(tǒng)環(huán)境100只是合適的計算環(huán)境的一個例子,它并不意在對本發(fā)明的使用或功能性的范圍提出任何限制。也不應該將計算環(huán)境100解釋為具有涉及示范操作環(huán)境100中所展示的任何一個部件或部件組合的任何從屬性或要求。
本發(fā)明可用于眾多其他的通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置。可能適用于本發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的例子包括(但不局限于)個人計算機、服務器計算機、手持設(shè)備或便攜式設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境,以及類似物。
可以在正由計算機執(zhí)行的計算機可執(zhí)行指令(例如,程序模塊)的一般上下文中描述本發(fā)明。通常,程序模塊包括執(zhí)行特殊任務或?qū)嵤┨厥獾某橄髷?shù)據(jù)類型的例行程序、程序、對象、部件、數(shù)據(jù)結(jié)構(gòu)等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括記憶存儲設(shè)備的本地計算機存儲介質(zhì)和遠程計算機存儲介質(zhì)中。
參照圖1,用于執(zhí)行本發(fā)明的示范系統(tǒng)包括采取計算機110的形式的通用計算設(shè)備。計算機110的部件可以包括(但不局限于)處理單元120、系統(tǒng)存儲器130和系統(tǒng)總線121,系統(tǒng)總線121將包括該系統(tǒng)存儲器的各種系統(tǒng)部件耦合到處理單元120。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)(包括存儲總線或存儲控制器、外圍總線和使用各種總線構(gòu)造中的任何總線構(gòu)造的局域總線)中的任何總線結(jié)構(gòu)。舉例來講(不作限制),這類結(jié)構(gòu)包括“工業(yè)標準結(jié)構(gòu)”(ISA)總線、“微通道結(jié)構(gòu)”(MCA)總線、“增強的ISA”(EISA)總線、“視頻電子標準協(xié)會”(VESA)局域總線和也被稱作“中層樓(Mezzanine)總線”的“外圍部件互連”(PCI)總線。
計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算機110存取的任何可用介質(zhì),它包括易失和非易失介質(zhì)、可移動和不可移動的介質(zhì)。舉例來講(不作限制),計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括易失和非易失的可移動和不可移動的介質(zhì),這些介質(zhì)用關(guān)于信息(例如,計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù))存儲的任何方法或技術(shù)來加以執(zhí)行。計算機存儲介質(zhì)包括(但不局限于)RAM、ROM、EEPROM、快閃存儲器或其他存儲技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或其他光盤存儲器、盒式磁帶、磁帶、磁盤存儲器或其他磁性存儲設(shè)備、或可以被用來存儲該所需信息并可以由計算機110來進行存取的其他任何介質(zhì)。通信介質(zhì)通常具體表現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或調(diào)制數(shù)據(jù)信號(例如,載波或其他傳送機制)中的其他數(shù)據(jù),它包括任何信息傳遞介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號”意味著一種信號,該信號的一個或多個特征按這樣的方式來加以設(shè)置或更改,以便為該信號中的信息編碼。舉例來講(不作限制),通信介質(zhì)包括有線介質(zhì)(例如,有線網(wǎng)絡(luò)或直線連接)和無線介質(zhì)(例如,聲音、RF、紅外線和其他無線介質(zhì))。以上任何內(nèi)容的組合也應該被包括在計算機可讀介質(zhì)的范圍以內(nèi)。
系統(tǒng)存儲器130包括采取易失和/或非易失存儲器(例如,只讀存儲器(ROM)131和隨機存取存儲器(RAM)132)的形式的計算機存儲介質(zhì)?;据斎?輸出系統(tǒng)133(BIOS)通常被存儲在ROM 131中,該基本輸入/輸出系統(tǒng)包含有助于在計算機110內(nèi)的各個元件之間傳送信息(例如,在啟動期間)的這些基本例行程序。RAM 132通常包含可立即由處理單元120存取并且/或者目前正由處理單元120進行操作的數(shù)據(jù)和/或程序模塊。舉例來講(不作限制),圖1展示了操作系統(tǒng)134、應用程序135、其他程序模塊136和程序數(shù)據(jù)137。
計算機110也可以包括其他可移動/不可移動的易失/非易失計算機存儲介質(zhì)。只舉例來講,圖1展示了從不可移動的非易失磁性介質(zhì)讀取或?qū)ζ鋵懭氲挠脖P驅(qū)動器141、從可移動的非易失磁盤152讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動器151,以及從可移動的非易失光盤156(例如,CD ROM或其他光學介質(zhì))讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動器155。可以被用于該示范操作環(huán)境中的其他可移動/不可移動的易失/非易失計算機存儲介質(zhì)包括(但不局限于)卡型盒式磁帶機、快閃存儲卡、數(shù)字通用光盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM和類似的存儲介質(zhì)。硬盤驅(qū)動器141通常通過不可移動的存儲接口(例如,接口140)而被連接到系統(tǒng)總線121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常由可移動的存儲接口(例如,接口150)連接到系統(tǒng)總線121。
以上所討論的和圖1中所展示的這些驅(qū)動器及其關(guān)聯(lián)的計算機存儲介質(zhì)為計算機110提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲。在圖1中,例如,硬盤驅(qū)動器141被展示為存儲操作系統(tǒng)144、應用程序145、其他程序模塊146和程序數(shù)據(jù)147。注意,這些部件可以等同于或不同于操作系統(tǒng)134、應用程序135、其他程序模塊136和程序數(shù)據(jù)137。這里為操作系統(tǒng)144、應用程序145、其他程序模塊146和程序數(shù)據(jù)147提供不同的號碼,以展示它們至少是不同的副本。用戶可以通過輸入設(shè)備(例如,鍵盤162)和定點設(shè)備161(通常被稱作“鼠標”、“跟蹤球”或“觸墊”),來將命令和信息輸入計算機110。其他輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀或類似的輸入設(shè)備。這些和其他的輸入設(shè)備經(jīng)常通過被耦合到該系統(tǒng)總線的用戶輸入接口160而被連接到處理單元120,但也可以由其他接口和總線結(jié)構(gòu)(例如,并行端口、游戲端口或通用串行總線(USB))來加以連接。監(jiān)視器191或其他類型的顯示設(shè)備也經(jīng)由接口(例如,視頻接口190)而被連接到系統(tǒng)總線121。除該監(jiān)視器以外,計算機也可以包括其他外圍輸出設(shè)備(例如,揚聲器197和打印機196),這些外圍輸出設(shè)備可以通過輸出外圍接口195來加以連接。
計算機110可以在使用與一臺或多臺遠程計算機(例如,遠程計算機180)的邏輯連接的聯(lián)網(wǎng)環(huán)境中進行操作。遠程計算機180可以是另一臺個人計算機、服務器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他共同的網(wǎng)絡(luò)節(jié)點,它通常包括以上相對于個人計算機110而描述的許多或所有這些元件,盡管圖1中只展示了記憶存儲設(shè)備181。圖1中所描繪的這些邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其他網(wǎng)絡(luò)。這類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很普遍。
當被用于LAN聯(lián)網(wǎng)環(huán)境中時,個人計算機110通過網(wǎng)絡(luò)接口或適配器170而被連接到LAN 171。當被用于WAN聯(lián)網(wǎng)環(huán)境中時,計算機110通常包括調(diào)制解調(diào)器172或用于在WAN 173(例如,因特網(wǎng))上建立通信的其他裝置。調(diào)制解調(diào)器172(可能是內(nèi)置的,也可能是外置的)可以經(jīng)由用戶輸入接口160或其他合適的機制而被連接到系統(tǒng)總線121。在聯(lián)網(wǎng)環(huán)境中,相對于個人計算機110或其各個部分而描繪的程序模塊可以被存儲在該遠程記憶存儲設(shè)備中。舉例來講(不作限制),圖1將遠程應用程序185展示為駐留在存儲設(shè)備181上。將會理解所示的這些網(wǎng)絡(luò)連接起示范的作用,可以使用在各臺計算機之間建立通信鏈路的其他裝置。
在下文中,除非另有指示,將參照動作和一臺或多臺計算機所執(zhí)行的操作的符號表示來描述本發(fā)明。照此,將會理解這類動作和操作(有時被稱作“是計算機執(zhí)行的”)包括用結(jié)構(gòu)化形式來表現(xiàn)數(shù)據(jù)的電信號的該計算機的該處理單元所執(zhí)行的操作。這項操作變換該數(shù)據(jù)或?qū)⑵浔4嬖谠撚嬎銠C的該存儲系統(tǒng)中的各個位置,這樣,可按精通該技術(shù)領(lǐng)域的人所熟悉的方式來重新配置或改變該計算機的這個操作。那里保存有數(shù)據(jù)的這些數(shù)據(jù)結(jié)構(gòu)是存儲器的物理位置,該存儲器具有由該數(shù)據(jù)的格式定義的特定屬性。但是,前述上下文中描述了本發(fā)明,而這并不意在起限制的作用,如精通該技術(shù)領(lǐng)域的人將會理解的,也可以在硬件中執(zhí)行下文中所描述的這各種動作和操作。
現(xiàn)在,將參照圖2來描述其中使用本發(fā)明的用于執(zhí)行防火墻的方法的一種網(wǎng)絡(luò)環(huán)境。該網(wǎng)絡(luò)本質(zhì)上起示范的作用,因為可在被耦合到任何網(wǎng)絡(luò)配置的任何網(wǎng)絡(luò)設(shè)備中執(zhí)行本發(fā)明的該方法。該網(wǎng)絡(luò)環(huán)境包括專用網(wǎng)200和公用網(wǎng)202。專用網(wǎng)200和公用網(wǎng)202屬于任何合適的類型(例如,局域網(wǎng)(LANs)、廣域網(wǎng)(WANs)、內(nèi)聯(lián)網(wǎng)、因特網(wǎng)或其任何組合)。
該網(wǎng)絡(luò)環(huán)境包括多個網(wǎng)絡(luò)設(shè)備204、206、208、210和212。網(wǎng)絡(luò)設(shè)備204、206被耦合到專用網(wǎng)200。網(wǎng)絡(luò)設(shè)備210、212被耦合到公用網(wǎng)202。網(wǎng)絡(luò)設(shè)備208被耦合到專用網(wǎng)200和公用網(wǎng)202,并在這兩個網(wǎng)絡(luò)之間提供接口。這些網(wǎng)絡(luò)設(shè)備被耦合到使用任何合適的技術(shù)(例如,以太網(wǎng)、1394或802.11(b))的該公用網(wǎng)和專用網(wǎng)。這些網(wǎng)絡(luò)設(shè)備被進一步加以執(zhí)行,作為任何合適的計算設(shè)備(例如,個人計算機、服務器、手持設(shè)備、打印機、交換器、路由器、橋接器、轉(zhuǎn)發(fā)器或類似的設(shè)備)。
網(wǎng)絡(luò)設(shè)備208包括防火墻214以及一個或多個濾波器216。防火墻214是根據(jù)一種防火墻結(jié)構(gòu)(其中,利用根據(jù)本發(fā)明的這種方法)來加以執(zhí)行的一個程序模塊或一組程序模塊。防火墻214檢查在被耦合到專用網(wǎng)200的網(wǎng)絡(luò)設(shè)備204、206、208與被耦合到公用網(wǎng)202的網(wǎng)絡(luò)設(shè)備210、212之間被交換的網(wǎng)絡(luò)信息包。在本發(fā)明的實施例中,防火墻214也檢查從專用網(wǎng)200內(nèi)的網(wǎng)絡(luò)設(shè)備那里被發(fā)送并去往那些網(wǎng)絡(luò)設(shè)備的在本地被指定的網(wǎng)絡(luò)信息包。
防火墻214在網(wǎng)絡(luò)設(shè)備208中被加以執(zhí)行,以保護并控制在專用網(wǎng)200與公用網(wǎng)202之間被交換的網(wǎng)絡(luò)信息流通量,這被稱作“邊緣防火墻”。作為選擇,防火墻214在如網(wǎng)絡(luò)設(shè)備210中所展示的單一網(wǎng)絡(luò)設(shè)備中被加以執(zhí)行,并保護該單一網(wǎng)絡(luò)設(shè)備,這被稱作“主機防火墻”。該防火墻也能夠按同步方式、作為主機和/或邊緣防火墻的中央管理集來加以執(zhí)行,這被稱作“分布式防火墻”。較佳地選擇執(zhí)行防火墻214的這個或這些網(wǎng)絡(luò)設(shè)備的布置,以便防火墻216檢查它應該保護的、為這些網(wǎng)絡(luò)設(shè)備而指定的所有網(wǎng)絡(luò)信息流通量。
濾波器216作為防火墻214的一部分來加以執(zhí)行。作為選擇,濾波器216作為防火墻214可以使用的單獨的數(shù)據(jù)結(jié)構(gòu)的一部分來加以執(zhí)行。防火墻214和濾波器216執(zhí)行一種防火墻策略,該防火墻策略被設(shè)計成保護網(wǎng)絡(luò)設(shè)備204、206、208避免遭遇來源于被耦合到該公用網(wǎng)的網(wǎng)絡(luò)設(shè)備210、212的惡意攻擊。防火墻214也提供增加的功能性(例如,促進雙親控制、侵入檢測、記錄網(wǎng)絡(luò)信息包和其他基于增加的濾波器的功能性)。
每個濾波器216包括一組濾波器條件以及一個或多個關(guān)聯(lián)的動作。這些濾波器條件包括參數(shù)和信息,這些參數(shù)和信息可以從網(wǎng)絡(luò)信息包(例如,接口號、硬件地址、網(wǎng)絡(luò)地址、協(xié)議類型、端口號和有效載荷數(shù)據(jù))中被加以分析或從網(wǎng)絡(luò)信息包中獲得。這一個或多個關(guān)聯(lián)的動作定義執(zhí)行該防火墻的該網(wǎng)絡(luò)設(shè)備應該如何處置與這些濾波器條件相匹配的信息包。典型的動作包括允許(即,允許該信息包繼續(xù)網(wǎng)絡(luò)遍歷)和阻滯(即,通過丟失信息包,來阻滯進一步的網(wǎng)絡(luò)遍歷)。
防火墻214檢查當在網(wǎng)絡(luò)設(shè)備208處被接收時穿過網(wǎng)絡(luò)的網(wǎng)絡(luò)信息包;并且,通過將這些信息包參數(shù)與這些濾波器條件進行比較,防火墻214識別一個或多個匹配濾波器。當這些濾波器條件與這些信息包參數(shù)相匹配時,產(chǎn)生匹配濾波器。和濾波器條件一樣,這些信息包參數(shù)包括從信息包中被加以分析或獲得的信息。當該防火墻識別匹配濾波器時,執(zhí)行與這些濾波器條件關(guān)聯(lián)的這一個或多個動作。
如這里所使用的該術(shù)語“信息包”指的是數(shù)據(jù)。該信息包可能是根據(jù)網(wǎng)絡(luò)協(xié)議而加以格式化的網(wǎng)絡(luò)信息包,也可能是由層、程序或模塊處理的數(shù)據(jù)流。
圖3表現(xiàn)了其中可執(zhí)行本發(fā)明的該方法的一種防火墻結(jié)構(gòu)的示范實施例。該方法提供了使信息包隸屬于網(wǎng)絡(luò)堆棧的所有層處的濾波器的能力。該方法提供了中央管理性能,這些中央管理性能允許增加和刪除濾波器,并慮及待識別和解決的濾波器沖突。該防火墻結(jié)構(gòu)是可擴展的,這體現(xiàn)在濾波器層按需要來被增加和刪除,并可以擴大,以包括允許和阻滯動作以外的專用功能性。雖然具體參照防火墻和防火墻濾波器來描述本發(fā)明,但是,也使用該方法來促進和管理其他的濾波器和策略。作為特殊的例子,本發(fā)明適合用來促進和管理被用于“服務質(zhì)量”(QOS)、“網(wǎng)際協(xié)議安全性”(IPSec)套組以及其他的加密協(xié)議、鑒定協(xié)議和密鑰管理協(xié)議的濾波器。
該防火墻結(jié)構(gòu)包括用戶模式處理250和核心模式處理252。用戶模式處理250和核心模式處理252作為網(wǎng)絡(luò)設(shè)備中的操作系統(tǒng)的一部分來加以執(zhí)行。精通該技術(shù)領(lǐng)域的人將會理解該操作系統(tǒng)的用戶模式處理250和核心模式處理252包括額外的部件,為簡單起見,沒有示出這些額外的部件。作為選擇,在作為一個或多個程序模塊或應用程序的該操作系統(tǒng)以外或在單一操作系統(tǒng)處理以內(nèi)整體或部分地執(zhí)行該防火墻結(jié)構(gòu)。
核心模式處理252包括網(wǎng)絡(luò)堆棧254、核心防火墻引擎256和任選的呼出258??偟膩碚f,核心模式處理252通過為網(wǎng)絡(luò)信息包識別匹配濾波器、根據(jù)已知的協(xié)議來處理信息包并對如匹配濾波器所指定的該信息包執(zhí)行其他動作,來實施被建立的防火墻策略。
網(wǎng)絡(luò)堆棧254包括多個層,這些層包括數(shù)據(jù)流層268、傳輸層270、網(wǎng)絡(luò)層272和鏈路層274。該防火墻結(jié)構(gòu)是可擴展的,并且,可按需要來動態(tài)地增加和除去額外的層。增加的層的例子包括文件存取層276,該文件存取層根據(jù)“服務器主塊”(SMB)協(xié)議來加以執(zhí)行。這些層可以與其他程序模塊(例如,“超文本傳輸協(xié)議”(HTTP)分析程序模塊278)協(xié)同運作。
網(wǎng)絡(luò)堆棧254中的這些層處理入站網(wǎng)絡(luò)信息包和出站網(wǎng)絡(luò)信息包。出站網(wǎng)絡(luò)信息包是正從執(zhí)行該防火墻結(jié)構(gòu)的該網(wǎng)絡(luò)設(shè)備那里被傳送到網(wǎng)絡(luò)上的信息包。入站信息包是在執(zhí)行該防火墻結(jié)構(gòu)的該網(wǎng)絡(luò)設(shè)備處被接收到的信息包。如圖3中所示的這各個箭頭所指出的,入站信息包從下到上地穿過網(wǎng)絡(luò)堆棧254,出站信息包從上到下地穿過網(wǎng)絡(luò)堆棧254。
網(wǎng)絡(luò)信息包序貫地穿過這些網(wǎng)絡(luò)層,并由這些網(wǎng)絡(luò)層序貫地加以處理。根據(jù)已知的技術(shù),網(wǎng)絡(luò)堆棧254中的每個層能夠從前一個層或模塊那里接收信息包,能夠根據(jù)規(guī)范或協(xié)議來處理該信息包,并能夠?qū)⑦@個處理過的信息包發(fā)送到下一個層或模塊。根據(jù)本發(fā)明,網(wǎng)絡(luò)堆棧254中的每個層也保持信息包上下文,將該信息包上下文傳遞到這下一層,將分類請求發(fā)給核心防火墻引擎256,并根據(jù)該防火墻策略來對該信息包采取行動。
該信息包上下文是從一個層到另一個層地跟隨該信息包的數(shù)據(jù)結(jié)構(gòu)。每個層通過將該層被設(shè)計成要加以處理的一組參數(shù)(例如,該層被設(shè)計成從信息包中加入、分析或?qū)С龅男畔?加入該上下文數(shù)據(jù)結(jié)構(gòu),來保持該上下文。參照圖5來描述被用于該信息包上下文的示范數(shù)據(jù)結(jié)構(gòu)。
由網(wǎng)絡(luò)堆棧254的各個層根據(jù)本發(fā)明來執(zhí)行的這些操作中的一項操作是通過發(fā)出該分類請求,來調(diào)用核心防火墻引擎256。該分類請求是網(wǎng)絡(luò)堆棧254中的層所執(zhí)行的調(diào)用,請求識別與該信息包相匹配的任何濾波器,并返回任何關(guān)聯(lián)的策略(例如,防火墻策略)。發(fā)出該分類請求的這個層在這里被稱作“請求階段”或“請求層”。每個層也對由核心防火墻引擎256返回的該信息包采取該行動。用戶模式層也可以構(gòu)成請求層。
核心防火墻引擎256包括層API 280、一組被安裝的濾波器282和呼出API284。核心防火墻引擎256根據(jù)本發(fā)明的該方法來執(zhí)行各種功能,包括(1)保持定義該防火墻策略的被安裝的濾波器集282;(2)從網(wǎng)絡(luò)堆棧254中的這些層接收分類請求;(3)根據(jù)該分類請求,來識別一個或多個匹配濾波器;以及(4)向該請求層指示將要被應用于該信息包的任何策略。
這個被安裝的濾波器集中的每個濾波器包括一組濾波器條件以及一個或多個關(guān)聯(lián)的動作。如參照圖2的描述,這些濾波器條件識別經(jīng)歷這個關(guān)聯(lián)的濾波器動作的這些網(wǎng)絡(luò)信息包。被安裝的濾波器集282中所規(guī)定的這些動作包括允許和阻滯。經(jīng)由任選的呼出258來增加額外的功能性。參照圖4來描述這些濾波器的示范形式。
層API 280在網(wǎng)絡(luò)堆棧254中的各個層與核心防火墻引擎256之間提供接口。通過層API 280,該請求層將該分類請求發(fā)給核心防火墻引擎256。該分類請求包括如請求層所接收的該信息包、如該請求層所接收的該信息包上下文,以及層參數(shù)。這些層參數(shù)是由該請求層處理(例如,增加或分析)的信息包參數(shù)。作為特殊的例子,源網(wǎng)際協(xié)議(IP)地址和目的網(wǎng)際協(xié)議(IP)地址是當執(zhí)行該IP協(xié)議時由網(wǎng)絡(luò)層272發(fā)送的層參數(shù)。層參數(shù)也可以包括被加入該信息包或從該信息包中被加以分析的這些信息包參數(shù)以外的信息。作為特殊的例子,這些層參數(shù)包括局部地址類型。該局部地址類型由該IP層來確定,并作為該分類請求的一部分來加以發(fā)送。局部地址類型包括單點傳送、廣播、多點傳送、任意點傳送(anycast)和類似的類型。參照圖6來描述層API 280的特殊實施。
隨意地說,使用呼出258來執(zhí)行該允許和阻滯濾波器動作以外的增加的功能性。當核心防火墻引擎256為該信息包(作為該關(guān)聯(lián)的動作,它包括對這些呼出模塊之一的呼出)識別匹配濾波器時,執(zhí)行呼出。該核心防火墻引擎將如該請求層所發(fā)出的該分類請求(即完全信息包、層參數(shù)和信息包上下文)連同該匹配濾波器的標識一起經(jīng)由呼出API 284發(fā)送到該呼出模塊。該防火墻結(jié)構(gòu)包括呼出基本集258。和層一樣,按需要來增加額外的呼出,從而提供可擴展的結(jié)構(gòu)。參照圖6來描述呼出API 284的特殊實施。
用戶模式處理250包括用戶防火墻引擎260,以及被識別為“PP1”、“PP2”和“PP3”的一個或多個策略供應者262。策略供應者262是將防火墻策略(即被安裝的濾波器282)加入該防火墻結(jié)構(gòu)的處理。可以使用任何處理來完成這項任務。一個例子是遺產(chǎn)(legacy)IPSec策略服務(LIPS)。該遺產(chǎn)IPSec策略服務增加對應該使用IPSec協(xié)議(例如,“封裝安全協(xié)議”(ESP)和“鑒定頭部協(xié)議”(AH))的網(wǎng)絡(luò)信息流通量進行定義的濾波器。作為特殊的例子,該遺產(chǎn)IPSec策略服務增加防火墻策略,該防火墻策略指出必須根據(jù)該ESP協(xié)議,來為所有未經(jīng)請求的入站信息包加密。該策略進一步規(guī)定應該阻滯明文中的任何未經(jīng)請求的入站信息包(即未加密的信息包)。策略供應者262從任何合適的來源(例如,易失或非易失存儲器中的數(shù)據(jù),或允許網(wǎng)絡(luò)管理員或系統(tǒng)用戶直接輸入策略的“圖形用戶界面”(GUI))獲得該策略。用戶防火墻引擎260將該策略轉(zhuǎn)換成新的濾波器,即,按照濾波器條件來定義該策略,并將這個新的濾波器加入被安裝的濾波器集282。
用戶防火墻引擎260也執(zhí)行濾波器判優(yōu)和沖突解決功能。當策略供應者262為用戶模式防火墻引擎260提供新策略時,該用戶防火墻引擎確定起因于這項新策略的這個新的濾波器是否與被安裝的濾波器282中的任何濾波器有沖突。如果存在沖突,則用戶防火墻引擎260解決該沖突。標題為《用于管理基于網(wǎng)絡(luò)濾波器的策略的方法》的美國專利申請(代理人標簽號221037)中描述了一種適用于本發(fā)明的該構(gòu)架中的、用于識別和解決沖突的方法的例子。
該結(jié)構(gòu)進一步包括濾波器引擎API 266,該濾波器引擎API 266構(gòu)成用戶模式防火墻引擎260與核心防火墻引擎256之間的接口。濾波器引擎API 266提供關(guān)于用戶防火墻引擎260的機制,用于將新的濾波器加入被安裝的濾波器集282,并用于檢查被安裝的濾波器282,以便可以檢測和解決濾波器沖突。管理API 290向策略供應者262揭露了濾波器引擎API 266的功能性。
用戶模式防火墻引擎260也包括濾波器模塊294。濾波器模塊294是用戶模式250中的核心防火墻引擎256的實例。用戶模式防火墻引擎260中的濾波器模塊294的這個實例允許用戶防火墻引擎260為一個或多個用戶模式層282復制核心防火墻引擎256的各項服務。用與創(chuàng)建核心模式層相同的方法來增加用戶模式層282。由于濾波器模塊294是核心防火墻引擎256的該用戶模式實例,因此,將會理解這里為該核心模式防火墻引擎而描述的任何功能性也可應用于濾波器模塊294。例如,增加額外的用戶模式層或從該系統(tǒng)結(jié)構(gòu)中刪除額外的用戶模式層,并可以創(chuàng)建呼出,從而為這些用戶模式層提供增加的功能性。
密碼模塊API 288在用戶策略引擎260與密碼模塊296之間提供接口。該密碼模塊提供了一種機制,用于確定為給定的信息包使用哪些安全設(shè)置。使用密碼模塊API 288來用信號通知該密碼模塊需要建立SA。
參考圖4,現(xiàn)在將描述被安裝的濾波器集282。每個濾波器310具有多個字段,這些字段包括濾波器Id 312、加權(quán)314、一個或多個動作316、策略上下文317和一組濾波器條件318。濾波器Id 312為該濾波器提供唯一標識。例如,濾波器Id 312被用作供核心防火墻引擎256將匹配濾波器信息返回到用戶防火墻引擎260和呼出258的一種工具。在本發(fā)明的實施例中,濾波器310被分配給網(wǎng)絡(luò)堆棧254中的各個層中的一個層。濾波器Id 312被核心防火墻引擎256用來跟蹤將哪個濾波器分配給哪個層。
加權(quán)字段314包括識別濾波器310的優(yōu)先級的值。加權(quán)字段314中的這個值越大,該濾波器的優(yōu)先級就越高。該濾波器優(yōu)先級確定核心防火墻引擎256將匹配濾波器應用于該信息包的那個順序。
在本發(fā)明的實施例中,首先應用具有最高優(yōu)先級(即最大的加權(quán)值)的那個濾波器,然后應用優(yōu)先級位于其次的濾波器,等等,直到遇到具有終止動作的匹配濾波器為止。以下更加詳細地描述了終止動作。一旦應用具有該終止動作的這個匹配濾波器,核心防火墻引擎256就停止應用匹配濾波器。這樣,在應用該終止動作之后,不對該信息包采取由較低優(yōu)先級匹配濾波器規(guī)定的動作316。作為選擇,防火墻引擎256識別單一匹配濾波器,并返回來自該單一匹配濾波器的一組動作。不管加權(quán)值314如何,防火墻引擎256也可以應用所有的匹配濾波器。
濾波器條件集318確定信息包是否與濾波器310相匹配。每個濾波器條件318包括類型320、數(shù)據(jù)322和層Id字段Id 324。類型320定義對應的數(shù)據(jù)322中所包括的變量的長度和數(shù)目。該結(jié)構(gòu)規(guī)定預定義的已知變量類型(例如,“字節(jié)”、“短”、“長”、“8個字節(jié)”、“字符串”、“網(wǎng)際協(xié)議版本4(IPv4)地址”、“網(wǎng)際協(xié)議版本6(IPv6)地址”、“IPv4地址加上掩碼”、“IPv6地址加上掩碼”和“地址范圍”)。數(shù)據(jù)字段322包括與該類型相匹配的數(shù)據(jù)。例如,如果該類型是“IPv4地址”,則關(guān)于數(shù)據(jù)字段322的可接受的值是如有點的十進制記數(shù)法中所表達的00.00.00.00~255.255.255.255的范圍內(nèi)的32位數(shù)字。在一些實例中,類型320規(guī)定數(shù)據(jù)字段322中的多個值?!暗刂贩秶?、“IPv4地址加上掩碼”和“IPv6地址加上掩碼”這些類型允許采用兩個IP地址值,從而定義IP地址的始、末范圍。關(guān)于最大的靈活性,該結(jié)構(gòu)也允許采用用戶定義的類型。作為選擇,將額外的類型手動加入該系統(tǒng)結(jié)構(gòu)。
分別使用層Id字段Id 332來分別識別起源層和來自該起源層的參數(shù)。該起源層和來自該起源層的這個參數(shù)定義信息包參數(shù),即與數(shù)據(jù)322進行比較的層參數(shù)和信息包上下文。該起源層識別該網(wǎng)絡(luò)堆棧中的層。來自該起源層的這個參數(shù)識別與該起源層關(guān)聯(lián)的特殊參數(shù)。濾波器條件326展示了特殊的例子。該類型是IPv4,從而指出數(shù)據(jù)322是32位IP地址。該層Id是“IP”,表示該32位數(shù)字是IP(即網(wǎng)絡(luò))層參數(shù)。該字段Id是“Src IP Addr”,它在該例中代表IP層參數(shù)(尤其是源IP地址)。該數(shù)據(jù)字段中所提供的該源IP地址是“123.3.2.1”,指出具有那個源IP地址的任何信息包都符合該濾波器條件,從而與該濾波器相匹配。
可以規(guī)定多個濾波器條件318。當規(guī)定多個濾波器條件318時,并且當滿足所有的濾波器條件318時,信息包與濾波器310相匹配。
濾波器310中被指定的動作326是允許、阻滯或呼出。如果濾波器310中的動作324是允許或阻滯,并且該信息包與濾波器310相匹配,那么,該允許或阻滯動作被核心防火墻引擎256返回到該請求層。如果動作316是呼出,則核心防火墻引擎256將其自己的分類請求發(fā)給指定的呼出模塊258,該分類請求包括該完全信息包、層參數(shù)、上下文和該匹配濾波器的標識。呼出模塊258對該信息包執(zhí)行其被編程的功能(例如,侵入檢測)。該呼出可以將動作(允許或阻滯)返回到該核心防火墻引擎,這又將該動作轉(zhuǎn)達給該請求層。該呼出也可以指示該核心防火墻引擎繼續(xù)應用信息包,而不會提供允許或阻滯動作。該呼出也能夠保持信息包上下文,該信息包上下文同樣經(jīng)由核心防火墻引擎256而被返回到該請求層。
動作被指定為終止或非終止。默認的情況是,“允許”和“阻滯”被指定為終止動作。終止動作是這樣一種動作——一旦在匹配信息包中被識別,它就可以被用來停止如前所述的應用匹配濾波器的過程。
使用策略上下文317來存儲除防火墻策略以外的策略(例如,安全性策略或QOS策略)。該策略上下文是任何合適的數(shù)據(jù)結(jié)構(gòu)。例如,該策略上下文是由加入過該策略上下文的處理來解釋的64位數(shù)字。該策略上下文和/或動作也可能是空值。
圖5展示了被用于信息包上下文的數(shù)據(jù)結(jié)構(gòu)330的例子,該信息包上下文由網(wǎng)絡(luò)堆棧254和呼出模塊258中的各個層來保持,并被傳遞到這些層。當這個入站或出站網(wǎng)絡(luò)信息包穿過這些層并包括被標注為336-340的一個或多個項目時,信息包上下文330跟隨該網(wǎng)絡(luò)信息包。每個項目包括層Id字段Id 332和對應的值334。
層Id字段Id 332的含義等同于作為濾波器310中的濾波器條件318的一部分而加以提供的層Id字段Id 324的含義(圖4)。也就是說,層Id字段Id322為值字段334中的該數(shù)據(jù)識別該起源層和來自該起源層的這個層參數(shù)。值字段334包括特殊的層參數(shù)。
作為特殊的例子,項目336包括該層Id字段Id 332“NDISSrc.MACAddr.”。“NDIS”表示鏈路層274的“網(wǎng)絡(luò)驅(qū)動器接口規(guī)范”實施(圖1)。“SrcMAC addr.”表示源MAC地址。這樣,層字段Id 332指出值字段334中的該數(shù)據(jù)是曾由該NDIS(鏈路)層處理的源MAC地址。值字段334包括這個實際的源MAC地址,在該例中,該源MAC地址是如十六進制記數(shù)法中所表達的“00.08.74.4F.22.E5”。
作為第二個例子,項目338具有“NDISIF No”的層Id字段Id 332。這再次將該層識別為NDIS,但在此情況下,將該參數(shù)識別為把接口號表示為該特殊NDIS參數(shù)的“IF No”。值字段334包括這個實際的接口號,該接口號在此情況下是2。
作為第三個例子,項目340具有“IPDst IP Addr”的層Id字段Id 332。該“IP”使用該IP協(xié)議來表示該網(wǎng)絡(luò)層,并且,該“Dst IP Addr”將目的IP地址表示為該IP層參數(shù)。值字段334包括“123.3.2.1”的這個實際的目的IP地址。
已描述了該基礎(chǔ)防火墻結(jié)構(gòu),現(xiàn)在來注意使用這里所描述的該基礎(chǔ)防火墻結(jié)構(gòu)來加以執(zhí)行的該系統(tǒng)和示范方法的這些功能接口。這些功能接口作為多個應用編程接口(APIs)來加以執(zhí)行。這些API s包括如圖6和圖7中作為例證所示的層API 280、呼出API 284、濾波器引擎API266和密碼模塊API 288。
層API 280促進網(wǎng)絡(luò)堆棧254內(nèi)的各個層中的每個層與核心防火墻引擎256之間的數(shù)據(jù)交換。如所示,層API 280包括“分類”法350、“增加層”法352和“刪除層”法354。
該請求層使用“分類”法350,將層參數(shù)、如該請求層所接收的該信息包以及該信息包上下文發(fā)送到核心防火墻引擎256。核心防火墻引擎256將(1)來自該請求層的這些層參數(shù)和(2)信息包上下文項目跟被分配給該請求層的每個濾波器310中的濾波器條件318進行比較,以識別匹配濾波器。以下是該“分類”法的示范實施。將會理解以下這些方法被描述成接收或返回數(shù)據(jù)值。根據(jù)已知的編程技術(shù),這些方法可以使用指向數(shù)據(jù)值的指針,而不是實際的數(shù)據(jù)值。
<pre listing-type="program-listing">NTSTATUSWFPClassify(IN ULONG LayerId,IN WFP_INCOMING_VALUES* pInFixedValues,IN WFP_INCOMING_CONTEXT_VALUE* pInContext,PVOIDpPacket,OUT WFP_ACTION_TYPE* pActionType,OUT UINT64* pOutContext);</pre>其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
LayerId識別發(fā)出該分類請求的該網(wǎng)絡(luò)層,即該請求層。參考圖3,該層Id將該層識別為數(shù)據(jù)流層268、傳輸層270、網(wǎng)絡(luò)層272或鏈路層274。如果被加入該系統(tǒng),則其他層(包括用戶模式層)有效。例如,如果加入SMB層276,則該SMB層具有其自己的唯一標識。本發(fā)明的該防火墻結(jié)構(gòu)進一步允許網(wǎng)絡(luò)堆棧254中的層處的多項協(xié)議實施。例如,該堆棧具有兩個傳輸層270——第一傳輸層使用該TCP協(xié)議,第二傳輸層使用該UDP協(xié)議。
pInFixedValues包括由該請求層處理的這些層參數(shù)的子集。將該pInFixedValues連同這些信息包上下文項目與這些濾波器條件進行比較,以確定該信息包是否與該濾波器相匹配。以下的表格A中識別關(guān)于每個層的該pInFixedValues中所包括的默認層參數(shù)。將會理解這些默認層是例子,而不起限制的作用,因為該層可以包括它在該pInFixedValues中可以使用的任何參數(shù)。
表格A層默認層參數(shù)鏈路層源MAC地址和目的MAC地址;接口號網(wǎng)絡(luò)層源IP地址和目的IP地址;協(xié)議類型;局部地址類型傳輸層源端口號和目的端口號;應用程序 被解密的應用層協(xié)議有效載荷pInContext包括如該請求層所接收的上下文數(shù)據(jù)結(jié)構(gòu)330(圖5)。核心防火墻引擎256使用該信息包上下文并結(jié)合這些層參數(shù)來識別匹配信息包。
pPacket包括如該請求層所接收的這整個信息包。該pPacket沒有被核心防火墻引擎256用來識別匹配濾波器。如前所述,核心防火墻引擎256使用該pInFixedValues和pInContext來識別匹配濾波器。該pPacket被包括在該“分類”法中,以便核心防火墻引擎256可以將它發(fā)送到被識別為匹配濾波器中的動作316的一個或多個呼出模塊258。
pActionType包括被返回到該請求層的動作316。所返回的動作316是如在該匹配濾波器中所識別的允許、阻滯或無、或由該匹配濾波器執(zhí)行的呼出模塊。
pOutContext包括該策略上下文數(shù)據(jù)。如前所述,使用該策略上下文來推動跟IPSec、QOS和任何其他基于非防火墻濾波器的策略有關(guān)聯(lián)的網(wǎng)絡(luò)策略。
“增加層”352和“刪除層”354方法被分別用來增加層和從該防火墻結(jié)構(gòu)中除去層。以下是“增加層”352方法的示范形式。
NTSTATUSAddExtensionLayer(OUT PULONG pLayerId);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
pLayerId是被返回到正在添加的那個層(即執(zhí)行該“增加層”法的那個層)的唯一層標識值。
以下是“刪除層”406方法的示范形式。
NTSTATUSRemoveExtensionLayer(ULONG LayerId);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
LayerId識別正在被除去的那個層,即執(zhí)行該“刪除層”法的那個層。
呼出API 284促進核心防火墻引擎256與呼出258之間的數(shù)據(jù)交換。和層API 280一樣,“呼出”API 284具有“分類”法。“呼出”API 284的“分類”法356類似于“層”API 280的“分類”法350,除“它也包括匹配濾波器數(shù)據(jù)”這一點以外。以下是被用來執(zhí)行呼出的“分類”法356的示范形式。
typedefNTSTATUS(*WFP_CALLOUT_CLASSIFY_FN)(IN const WFP_INCOMING_VALUES* fixedValues,IN WFP_INCOMING_CONTEXT_VALUE*wfpContext,IN VOID* packet,IN WFP_FILTER*matchedFilter,OUT WFP_ACTION_TYPE* action,OUT UINT64* outContext);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
fixedValues包括從該請求層那里被發(fā)送的這些層參數(shù)。該fixedValues是pInFixedValues數(shù)據(jù)中的該請求層所提供的相同的數(shù)據(jù),該pInFixedValues數(shù)據(jù)作為層API 280中的“分類”法350的一部分來加以發(fā)送。
wfpContext包括上下文數(shù)據(jù)結(jié)構(gòu)330(圖5)。該數(shù)據(jù)等同于如該pInContext中的該請求層所發(fā)送的數(shù)據(jù),該pInContext作為層API 280中的“分類”法350的一部分來加以發(fā)送。
packet包括如該請求層所接收的這整個信息包。該數(shù)據(jù)等同于如該pPackett中的該請求層所發(fā)送的數(shù)據(jù),該pPacket作為層API 280中的“分類”法350的一部分來加以發(fā)送。
matchedFilter識別請求該呼出的那個濾波器。通常,該匹配濾波器由啟動呼出API 284的“分類”法356的匹配濾波器310的濾波器Id 312來加以識別。
pActionType包括從呼出258被返回到核心防火墻引擎256的那個動作。如果該pActionType是允許或阻滯,則將它返回到該請求層,作為由“層”API280返回的該pActionType。該呼出也可以返回繼續(xù)動作,該繼續(xù)動作指示核心防火墻引擎256繼續(xù)將匹配濾波器應用于該信息包。
pOutContext包括該策略上下文數(shù)據(jù)(例如,安全性或QOS策略數(shù)據(jù))。
呼出API 408也包括“通知”法358。當濾波器310被加入被安裝的濾波器集282(將呼出模塊258識別為其動作316之一)時,使用“通知”法358來通知呼出。該通知為該呼出提供了一種機會——采取任何所要求的動作(例如,當核心防火墻引擎256執(zhí)行該動作時,分配或解除分配將由呼出258使用的緩沖器)。以下是“通知”法358的示范形式。
typedefNTSTATUS(*WFP_CALLOUT_NOTIFY_FN)(IN WFP_NOTIFY_ENUMnotify,IN WFP_FILTER*filter);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
notify包括一個數(shù)值,該數(shù)值指出是正在增加還是正在刪除該濾波器。例如,1的值指出正在增加該濾波器,2的值指出正在刪除該濾波器。
filter識別正在被唯一值增加或刪除的該濾波器。通過提供作為濾波器310的一部分而被包括在內(nèi)的濾波器Id 312,可以實現(xiàn)這一點。
該呼出API也包括“呼出登記”法360和“呼出解除登記”362方法,以分別增加和除去呼出模塊?!昂舫龅怯洝狈椒?60的示范形式如下所述NTSTATUS WfpRegisterCallout(IN const GUID* calloutId,IN const WFP_CALLOUT*callout,IN const SECURITY_DESCRIPTOR*sd);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
callout Id提供關(guān)于該登記呼出模塊的唯一標識。
callout提供任何呼出特定信息(例如,驅(qū)動器服務名稱、設(shè)備名稱,以及指向這些呼出分類和通知功能的指針)。
sd提供關(guān)于該呼出的安全描述符。該安全描述符識別哪些處理可以讀取和刪除該呼出。
“呼出解除登記”法362的示范形式如下所述
NTSTATUS WfpDeregisterCallout(IN const GUID* calloutId);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
callout Id是將要被除去的該呼出的唯一Id。
濾波器引擎API 266促進用戶模式防火墻引擎260與核心模式防火墻引擎256之間的數(shù)據(jù)交換。如所示,濾波器引擎API 266包括“增加濾波器”法364、“刪除濾波器”法366和“列舉層”法368。如前所述,濾波器引擎API266的這些方法可以被包括在管理API 290中,以便向策略供應者262揭示那里的功能性。
分別使用“增加濾波器”364和“刪除濾波器”366方法,來將新的濾波器加入被安裝的濾波器集282,并從被安裝的濾波器集282中刪除現(xiàn)存的濾波器。以下是“增加濾波器”法364的示范形式。
NTSTATUSAddFilterToLayer(ULONG LayerId,WFP_FILTER* pFilter);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
LayerId識別被分配給該濾波器的那個層。
pFilter是正在被加入被安裝的濾波器集282的濾波器310。
以下是“刪除濾波器”法366的示范形式。
NTSTATUSDeleteFilterFromLayer(ULONG LayerId,ULONG FilterId);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
LayerId識別為其分配該濾波器的那個層。
pFilter是正從這個被安裝的濾波器集中被刪除的該濾波器。
“列舉層”法368提供關(guān)于用戶防火墻引擎260的一種機制,以識別與一套標準相匹配的所有濾波器。這樣,可允許該濾波器引擎API識別發(fā)生沖突的濾波器,用于濾波器判優(yōu)和沖突解決。以下是“列舉層”法368的示范形式。
IndexStartEnum(PWFP_ENUM_TEMPLATE pEnumTemplate,OUT PULONG pMatchCount,OUT PWFP_ENUM_HANDLE pEnumHandle)其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
pEnumTemplate包括定義將要被返回的這些濾波器的一種數(shù)據(jù)結(jié)構(gòu)。例如,它包括參數(shù),這些濾波器條件必須為將要被返回的該濾波器而與這些參數(shù)相匹配。
pMatchCount包括基于這個規(guī)定的pEnumTemplate的濾波器匹配數(shù)目。
pEnumHanlde包括對這些匹配的濾波器項目的參考。
密碼模塊API 288在用戶模式密碼模塊層282與用戶防火墻引擎260之間提供接口。密碼模塊API 288包括“IPSec SA獲取”法370、“期滿通知”法372、“IPSec SA獲取完成”法374、“密碼模塊登記”法376、“密碼模塊解除登記”法378、“IPSec入站獲得SPI”法380、“增加入站SA”法382、“增加出站SA”法384、“入站SA期滿”386方法和“密碼模塊啟動”法388。
使用該密碼模塊API來促進安全協(xié)議(例如,由IPSec定義,由啟動計算機和響應計算機使用)的運用。IPSec包括諸如鑒定頭部(AH)和封裝安全協(xié)議(ESP)等協(xié)議。該ESP協(xié)議(主要在“IETF請求注解”(RFC)2406中加以證明)是鑒定和加密協(xié)議,該協(xié)議使用密碼機制來提供完整性、來源鑒定和數(shù)據(jù)機密性。該AH協(xié)議(主要由IETF RFC 2402來證明)是鑒定協(xié)議,該協(xié)議使用該信息包頭部中的散列簽名來證實該信息包數(shù)據(jù)的完整性和該發(fā)送者的可靠性。
該IKE協(xié)議(主要在IETF RFC 2409中加以證明)提供一種關(guān)于啟動計算機和響應計算機的方法,以商議用于該AH協(xié)議和ESP協(xié)議的安全設(shè)置。所商議的這些安全設(shè)置構(gòu)成被稱作“安全關(guān)聯(lián)”(SA)的數(shù)據(jù)結(jié)構(gòu)。該SA定義被ESP或AH用來保護IP信息包的這些內(nèi)容的參數(shù)(例如,鑒定算法、加密算法、密鑰和密鑰的使用期限)。由于ESP和AH需要被建立的SA,因此,在該啟動和響應計算機使用該ESP或AH協(xié)議之前,執(zhí)行IKE商議。由被稱作“安全參數(shù)索引”(SPI)的值來識別給定的SA。
該啟動計算機和響應計算機中的每種計算機包括IPSec驅(qū)動器,該IPSec驅(qū)動器根據(jù)IPSec策略來確定在該啟動計算機與該響應計算機之間被發(fā)送的數(shù)據(jù)是要求加密還是要求鑒定。該IPSec策略是一組濾波器,它定義該網(wǎng)絡(luò)設(shè)備如何使用IPSec,并包括濾波器清單、鑒定方法和其他信息。在本發(fā)明的實施例中,由這個被安裝的濾波器集中所包括的濾波器來定義該IPSec策略。
用戶防火墻引擎260(經(jīng)由客戶代理人)調(diào)用“IPSec SA獲取”法370,來將驅(qū)動器獲取或外部啟動請求傳遞到該密碼模塊。該密碼模塊層返回這個調(diào)用,并異步地執(zhí)行該商議。一旦這個密碼模塊已完成該商議,該密碼模塊層就調(diào)用“IPSec SA獲取完成”法374,以通知該用戶防火墻引擎該商議完成。以下是該“IPSec SA獲取”法的示范形式。
typedef WIN32_ERR(*PROCESS_IPSEC_SA_ACQUIRE0)(IN FWP_IPSEC_ACQUIRE_CONTEXT0 ipsecContext,IN const FWP_IPSEC_SA_ACQUIRE0*acquire,IN FWP_IPSEC_SPI inboundSAspi);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
ipsecContext是將該獲取與正在被加入的該SA連接起來的句柄。
acquire包括用于根據(jù)已知協(xié)議(例如,IKE)來商議該SA的必要信息。
inboundSAspi包括被用于入站SA的SPI。
調(diào)用“期滿通知”法372,以便將期滿通知傳遞到增加過該入站SA的那個密碼模塊。以下是該“期滿通知”法的示范形式。
typedef VOID(*PROCESS_IPSEC_SA_EXPIRE0)(IN const FWP_IPSEC_SA_EXPIRE_NOTIFY0* expireNotify);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
expireNotify包含識別該期滿SA的信息。例如,在出站SA的情況下,提供該SPI。
密碼模塊調(diào)用“IPSec SA獲取完成”374方法,以便在它已結(jié)束商議并增加所有這些SA之后,或在它已碰到錯誤之后,關(guān)閉該用戶防火墻引擎的上下文。在執(zhí)行該方法之后,該密碼模塊層沒有再使用關(guān)于其他任何API方法的該ipsecContext。以下是該“IPSec SA獲取完成”法的示范形式。
WIN32_ERRFwpIPSecSAAcquireComplete0(IN FWPM_ENGINE_HANDLE engineHandle,IN FWP_IPSEC_ACQUIRE_CONTEXT0 ipsecContext,IN const FWP_IPSEC_NEGOTIATION_STATUS0* status);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle為用戶防火墻引擎260提供句柄。
ipsecContext是由利用該“IPSec獲取”法的用戶防火墻引擎?zhèn)鬟f的該上下文。
status提供該SA商議的狀態(tài)和其他細節(jié)。如果經(jīng)由FwpKeyingModuleInitiate0在外部啟動過該獲取,則用戶防火墻引擎260返回該狀態(tài)。
由密碼模塊層來調(diào)用“密碼模塊登記”法376,以便向用戶防火墻引擎260登記,并傳遞其功能指針。以下是該“密碼模塊登記”法的示范形式。
WIN32_ERRFwpKeyingModuleRegister0(IN FWPM_ENGINE_HANDLEengineHandle,IN const GUID* keyingModuleID,IN const FWP_KEYING_MODULE_INFO0*keymodInfo);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle為用戶防火墻引擎260提供該句柄。
keyingModuleID是關(guān)于該密碼模塊的唯一ID。
keymodInfo包括關(guān)于該密碼模塊層的登記信息(例如,用于處理“IPSec SA獲取”和“IPSec SA期滿”功能的指針)。
由該密碼模塊來調(diào)用“密碼模塊解除登記”法378,以便從用戶防火墻引擎260中解除登記該密碼模塊。以下是該“密碼模塊解除登記”法的示范形式。
WIN32_ERRFwpKeyingModuleDeregister0(IN FWPM_ENGINE_HANDLE engineHandle,IN const GUID* keyingModuleID);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle是給用戶防火墻引擎260的該句柄。
keyingModuleID是該密碼模塊層的唯一ID。
由該密碼模塊層來調(diào)用“IPSec入站獲得SPI”法380,以獲得關(guān)于新的入站SA的該SPI。當該密碼模塊層在響應的網(wǎng)絡(luò)設(shè)備中執(zhí)行時,通常使用“IPSec入站獲得SPI”法380。以下是該“IPSec入站獲得SPI”法的示范形式。
WIN32_ERRFwpIPSecSAInboundGetSpi0(IN FWPM_ENGINE_HANDLEengineHandle,IN const FWP_IPSEC_TRAFFIC0* ipsecTrafficDescription,IN const FWP_IPSEC_UDP_ENCAP0* udpEncapInfo,OUT FWP_IPSEC_SPI* inboundSpi);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle是給用戶防火墻引擎260的該句柄。
ipsecTrafficDescription是用于創(chuàng)建入站幼小狀態(tài)的SA的5元組說明。該5元組包括源IP地址與目的IP地址、源端口與目的端口,以及傳輸層協(xié)議類型。
udpEncapInfo是用于創(chuàng)建該幼小狀態(tài)的SA的UDP封裝數(shù)據(jù)。UDP封裝是將根據(jù)安全協(xié)議而加以格式化的信息包嵌入未加密的UDP信息包的一種已知的方法。
inboudSpi是關(guān)于該入站SA的該SPI。
由該密碼模塊層來調(diào)用“增加入站SA”法382,以增加入站SA(即,更新幼小狀態(tài)的SA)。用戶防火墻引擎260使用該SA中的該SPI來將此調(diào)用映射到其內(nèi)部狀態(tài),并將該SA ioctl down到該IPSec驅(qū)動器。以下是該“增加入站SA”法的示范形式。
WIN32_ERRFwpIPSecSAInboundAdd0(IN FWPM_ENGINE_HANDLEengineHandle,IN const FWP_IPSEC_SA_STRUCT0* inboundSA);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle是給該用戶防火墻引擎的該句柄。
inboundSA包括該入站SA。
由密碼模塊來調(diào)用“增加出站SA”384方法,以增加出站SA。該用戶防火墻引擎使用入站SPI參數(shù)來將此調(diào)用映射到其內(nèi)部狀態(tài),并將該SA ioctl down到該IPSec驅(qū)動器。以下是“增加出站SA”法的示范形式。
WIN32_ERRFwpIPSecSAOutboundAdd0(IN FWPM_ENGINE_HANDLE engineHandle,IN FWP_IPSEC_SPI inboundSpi,IN const FWP_IPSEC_SA_STRUCT0*outboundSA);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle是給用戶防火墻引擎260的該句柄。
onboundSpi是關(guān)于該入站SA的該SPI,該入站SA與出站SA配對。
outboundSA包括該出站SA。
由該密碼模塊來調(diào)用“入站SA期滿”法386,以截止先前增加的該入站SA。以下是“入站SA期滿”法386的示范形式。
WIN32_ERRFwpIPSecSAInboundExpire0(IN FWPM_ENGINE_HANDLE engineHandle,IN const FWP_IPSEC_SA_EXPIRE0*expire);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle是給用戶防火墻引擎260的該句柄。
expire包括關(guān)于將要期滿的該SA的數(shù)據(jù)。
由已知的外部應用程序(比如RAS、Winsock API和類似物)來調(diào)用“密碼模塊啟動”法388,以便在該應用程序開始發(fā)送其網(wǎng)絡(luò)信息流通量之前,啟動該密碼模塊層并設(shè)置SA。用戶防火墻引擎260異步地使該RPC調(diào)用待決,從IPSec驅(qū)動器那里獲得該SPI,并將該獲取傳遞到這個合適的密碼模塊。一旦該密碼模塊層調(diào)用FwpIPSecSAAcquireComplete0,該用戶防火墻引擎就完成具有該商議狀態(tài)的該異步RPC。以下是該“密碼模塊啟動”法的示范形式。
WIN32_ERRFwpKeyingModuleInitiate0(IN FWPM_ENGINE_HANDLE engineHandle,IN const FWP_IPSEC_SA_ACQUIRE0* acquire,IN HANDLE waitEvent,OUT FWP_IPSEC_NEGOTIATION_STATUS0* negotiationStatus);其中,以下內(nèi)容表現(xiàn)了這些所列舉的參數(shù)的特征。
engineHandle是給用戶防火墻引擎260的該句柄。
acquire包括商議SA所必要的數(shù)據(jù)。
waitEvent是給當存在商議狀態(tài)時被觸發(fā)的事件的句柄。如果客戶(即,調(diào)用外部應用程序)沒有興趣等待該商議完成,則它可以將這個參數(shù)設(shè)置為NULL。在內(nèi)部,該客戶代理人隨意地將這個事件傳遞到RPC,并且,一旦該異步RPC調(diào)用完成,就請求它設(shè)置這個事件。
negotiationStatus包括該商議的結(jié)果。如果waitEvent是NULL,則該negotiationStatus是NULL。否則,negotiationStatus保持有效,直到該waitEvent被觸發(fā)為止。
圖8展示了根據(jù)本發(fā)明的、由網(wǎng)絡(luò)堆棧254中的這些層使用的各種方法。圖8中所展示的該方法也可以由一個或多個用戶模式層282跟濾波器模塊294和用戶防火墻引擎260協(xié)力來加以使用。
每個層能夠執(zhí)行多項功能,包括處理網(wǎng)絡(luò)信息包;將分類請求發(fā)給核心防火墻引擎256;以及,管理信息包上下文。在本發(fā)明的實施例中,在網(wǎng)絡(luò)堆棧254中所安裝的薄墊片400、402、404、406內(nèi)的各個層中的每個層處執(zhí)行這些功能。作為選擇,該功能性被直接置入這些單獨的層,而不需要這些薄墊片。
網(wǎng)絡(luò)堆棧254包括數(shù)據(jù)流層268、傳輸層270、網(wǎng)絡(luò)層272和鏈路層274。出于展示本發(fā)明的目的,鏈路層274作為NDIS驅(qū)動器來加以執(zhí)行,網(wǎng)絡(luò)層272作為IP層來加以執(zhí)行,傳輸層270作為TCP層來加以執(zhí)行,數(shù)據(jù)流層268作為HTTP層來加以執(zhí)行。將會理解可以根據(jù)任何協(xié)議來執(zhí)行層。例如,該傳輸層也配合“用戶數(shù)據(jù)報協(xié)議”(UDP)。該應用層支持“文件傳輸協(xié)議”(FTP)、“遠程過程調(diào)用”(RPC)、“簡單郵件傳輸協(xié)議”(SMTP)、“服務器主塊”(SMB)等。如前所述,可以將額外的層加入該結(jié)構(gòu),并可以刪除層。例如,使用參照圖6來加以描述的該“增加層”法和“刪除層”法,來增加和刪除層。
被標注為408(a)-(d)的網(wǎng)絡(luò)信息包在它穿過網(wǎng)絡(luò)堆棧254中的各個層并由這些層來處理時,展示了該網(wǎng)絡(luò)信息包。如果信息包408(a)-(d)是入站信息包,則它從下到上穿過該網(wǎng)絡(luò)堆棧。如果信息包408(a)-(d)是出站信息包,則它從上到下穿過該網(wǎng)絡(luò)堆棧。這類處理眾所周知,但出于展示本發(fā)明的目的,對其進行簡要的描述。
假設(shè)在網(wǎng)絡(luò)設(shè)備(例如,web瀏覽器)中執(zhí)行的應用程序啟動關(guān)于位于另一個網(wǎng)絡(luò)設(shè)備上的網(wǎng)頁的內(nèi)容的請求,則該應用程序?qū)⒃撜埱蟀l(fā)給數(shù)據(jù)流層268。在該例中,數(shù)據(jù)流264根據(jù)該HTTP協(xié)議來對該請求進行格式化,并將該請求發(fā)送到信息包408(a)中的該傳輸層。傳輸層270接收信息包408(a)。傳輸層270(執(zhí)行該TCP協(xié)議)將該數(shù)據(jù)放置在一個或多個信息包中,并且,為每個信息包提供TCP頭部。該TCP頭部包括諸如該源端口與目的端口、協(xié)議類型(即TCP、序號、標記和檢驗和)等信息。然后,該傳輸層將被標注為408(b)的該信息包發(fā)送到該網(wǎng)絡(luò)層。
該網(wǎng)絡(luò)層執(zhí)行該IP協(xié)議,并將該數(shù)據(jù)裝入IP頭部,該IP頭部包括該源IP地址與目的IP地址、標記、檢驗和以及其他已知信息。該IP頭部也指出是否為該信息包分段。當該IP信息包的尺寸超過關(guān)于被用來傳送信息包的該網(wǎng)絡(luò)技術(shù)的“最大傳輸單位”(MTU)尺寸時,為該信息包分段。例如,以太網(wǎng)技術(shù)規(guī)定該MTU是1500個字節(jié)。如果該IP信息包長度超過該MTU,則將它分成兩個或多個IP信息包——每個IP信息包具有其自己的IP頭部,與該MTU相比,它們都具有相等的或較短的長度。
在本發(fā)明的實施例中,該網(wǎng)絡(luò)層被分成第一層和第二層。這第一層(被稱作“片段層”)處理IP信息包片段。例如,在為出站IP信息包分段之前,并在將入站IP信息包重新裝配成單一IP信息包之后,這第二層(被稱作“完全裝配層”)處理完全的IP信息包。在網(wǎng)絡(luò)層處理和可能的分裂之后,信息包408(c)被發(fā)送到鏈路層274。鏈路層274通過為MAC頭部提供該源MAC地址和目的MAC地址以及其他信息,來進一步對該數(shù)據(jù)實行分組(packetizes)。然后,將該信息包發(fā)送到網(wǎng)絡(luò)接口卡(NIC),在那里,該信息包在物理上被傳送到網(wǎng)絡(luò)上。
用互換方式來處理入站信息包。信息包408(d)由該NIC來接收,并被發(fā)送到鏈路層274。如果必要的話,則除去該MAC頭部,并將信息包408(c)發(fā)送到該網(wǎng)絡(luò)層,在那里,重新裝配這些IP信息包片段;并且,分析該IP頭部。然后,該網(wǎng)絡(luò)層將信息包408(b)發(fā)送到該傳輸層,在那里,除去該TCP頭部;并且,如果在多個TCP信息包中發(fā)送過該數(shù)據(jù)流,則重新裝配該數(shù)據(jù)流。最后,將數(shù)據(jù)流408(a)發(fā)送到數(shù)據(jù)流層268,在那里,該數(shù)據(jù)由該應用協(xié)議(在這種情況下是該HTTP協(xié)議)來進行解密。
關(guān)于每個出站信息包,該網(wǎng)絡(luò)堆棧的各個層保持信息包上下文410(a)-(c)。關(guān)于每個入站信息包,該網(wǎng)絡(luò)堆棧的各個層保持信息包上下文412(a)-(c)。當每個信息包穿過這些網(wǎng)絡(luò)層時,該信息包上下文跟隨它。信息包上下文也被傳遞到呼出258,并可以由這些呼出來加以修改(圖3)。
當在每個層處處理這些信息包時,更新該信息包上下文。每個層將其層參數(shù)加入該信息包上下文,從而將該信息提供給隨后的各個層或處理。如所示,鏈路層274加入如上下文412(a)所展示的源MAC地址和目的MAC地址以及關(guān)于入站信息包的接口號。那個上下文由網(wǎng)絡(luò)層272來接收,網(wǎng)絡(luò)層272加入如上下文412(b)所展示的源IP地址和目的IP地址。傳輸層266接收該上下文,并加入如上下文412(a)所展示的這些端口號。
對于和出站信息包關(guān)聯(lián)的上下文410(a)-(c)而言,會發(fā)生類似的處理。數(shù)據(jù)流層268加入諸如來自如上下文410(a)所展示的該信息包有效載荷的URL地址等信息,傳輸層270進一步加入如上下文410(b)所展示的源端口號和目的端口號,該網(wǎng)絡(luò)層加入如上下文410(c)所展示的源IP地址和目的IP地址。
將會理解每個層可以將可用的任何上下文信息加入那個層。通常,這包括該層被設(shè)計成要加以處理(即,增加信息包或分析信息包或從信息包中導出)的任何信息。
當在每個層處接收該信息包及其對應的上下文時,通過識別這些層參數(shù)并發(fā)送被標注為414的分類請求,該層可用作請求層。分類請求414包括層參數(shù)416、從該先前層接收的信息包上下文418和完全信息包420。被用來發(fā)出該分類請求的示范方法是參照層API 280來加以描述的“分類”法350(圖7)。
響應于每個分類請求,核心模式防火墻引擎256將層參數(shù)416和信息包上下文418跟被分配給該請求層的這些濾波器的濾波器條件318(圖4)進行比較。核心防火墻引擎256將被標注為422的響應(具有來自擁有最高加權(quán)314的匹配濾波器310的動作424)發(fā)送到該請求層。核心防火墻引擎256也返回策略上下文426。如果核心防火墻引擎256沒有識別匹配濾波器,則該核心防火墻引擎通知該請求層不存在匹配濾波器。核心防火墻引擎256繼續(xù)識別匹配濾波器,直到匹配濾波器指定終止動作(即允許或阻滯)為止,或者直到檢驗被分配給該請求層的所有濾波器(不管首先檢驗哪個濾波器)為止。作為選擇,核心防火墻引擎256識別所有匹配,并在單一響應中將這些動作返回到該請求層。
如一般所展示的,層參數(shù)的識別作為由網(wǎng)絡(luò)堆棧254的各個層執(zhí)行的該標準層處理的一部分。不要求額外的信息包分析,從而將對系統(tǒng)性能的影響減到最小。而且,由于這些層在保持信息包上下文的過程中進行合作,因此,防火墻引擎256可以將濾波器條件與通常無法使用那些信息包參數(shù)的各個層處的信息包參數(shù)進行比較。例如,網(wǎng)絡(luò)層268從包括源MAC地址和目的MAC地址的鏈路層274那里接收關(guān)于入站信息包的上下文。由于網(wǎng)絡(luò)層272發(fā)出具有網(wǎng)絡(luò)層參數(shù)(例如,源IP地址和目的IP地址以及該信息包上下文)的分類請求,因此,即使這些MAC地址通常不可用,核心防火墻引擎256也可以在網(wǎng)絡(luò)層272處的IP地址和MAC地址上進行過濾。
參考圖9,現(xiàn)在將描述與本發(fā)明的該防火墻結(jié)構(gòu)一同包括在內(nèi)的呼出模塊的示范集合258。呼出模塊258包括HTTP上下文呼出430、侵入檢測呼出436、IPSec呼出438和記錄呼出440。
HTTP上下文呼出430保持可接受的或(作為選擇)不能接受的URL地址的高速緩存432。HTTP上下文呼出430定期訪問與該公用網(wǎng)連接的服務器434,該公用網(wǎng)保持URL地址并將它們分類成“可接受的”或“不能接受的”。當核心防火墻引擎256執(zhí)行該HTTP上下文呼出時,該呼出檢查該信息包,對該URL地址進行解密(如果必要的話),并確定根據(jù)高速緩存432中的信息,它是否是可接受的。然后,如果該URL地址是可接受的,則該HTTP呼出返回允許,作為動作316;如果該URL地址對于核心模式防火墻引擎256而言是不能接受的,則返回阻滯;這又經(jīng)由層API 280將動作316返回到該請求層。該HTTP上下文呼出在執(zhí)行雙親控制功能的過程中可發(fā)揮作用。
侵入檢測呼出436使用可用的算法和技術(shù)來檢查該信息包,以識別病毒或可疑信息包的征候。如果檢測到可疑信息包,則返回阻滯動作316。可疑信息包的例子是這樣一種信息包——其中,IP頭部和TCP頭部中的所有標記被設(shè)置為值1。該信息包是可疑的,這是因為它永遠不會有效,并且會指出攻擊簽名。作為選擇,侵入檢測呼出436修改信息包上下文,以便標記該信息包的可疑性質(zhì),從而推遲了關(guān)于是否阻滯到該網(wǎng)絡(luò)堆棧中的隨后各層的該信息包的決定。
IPSec呼出438被設(shè)計成確定是否曾將適當?shù)陌踩珔f(xié)議應用于該信息包。IPSec呼出438與IPSec處理進行通信,并根據(jù)IPSec策略來確定該信息包是否曾被期望經(jīng)歷IPSec處理。如果是,則IPSec呼出438根據(jù)信息包上下文來驗證該信息包實際上是否經(jīng)歷過該IPSec處理。如果該信息包曾被期望根據(jù)IPSec來加以處理,但卻不是如此(例如,該信息包在明文中),則返回阻滯動作。如果該信息包經(jīng)歷過IPSec處理,則該IPSec呼出驗證應用過該適當?shù)腟A。
使用記錄呼出440來保存關(guān)于該信息包(例如,供以后使用的該完全信息包)的信息。例如,這類以后的使用可能是關(guān)于某個網(wǎng)絡(luò)信息流通量(該網(wǎng)絡(luò)信息流通量出乎意料地沒有穿過網(wǎng)絡(luò),因為它正受到阻滯)或用于跟蹤該系統(tǒng)上的惡意攻擊的診斷程序。
圖10展示了被用來執(zhí)行本發(fā)明的該總體防火墻功能的處理450。在步驟452中,該請求層發(fā)出關(guān)于信息包的分類請求,從而識別該請求中的信息包參數(shù)。在步驟454中,識別與該分類請求中的這些信息包參數(shù)相匹配的濾波器。然后,根據(jù)如步驟456中所示的這些匹配濾波器,來決定是否應該丟失該信息包。如果該決定是“丟失該信息包”,則丟失該信息包,并且,該處理結(jié)束,而不會執(zhí)行進一步的信息包處理。如果該決定是“不丟失該信息包”,則該請求層根據(jù)在該請求層處所執(zhí)行的該協(xié)議來處理該信息包,并且,如步驟458中所示的那樣來修改該信息包上下文數(shù)據(jù)結(jié)構(gòu)。如果沒有額外的層,則該處理同樣結(jié)束。否則,如步驟462中所示,將該處理過的信息包和信息包上下文發(fā)送到這下一層。該處理繼續(xù)進行,直到丟失該信息包為止,或者直到該信息包穿過所有層為止。
圖11展示了被標注為500的一種方法,該方法被該請求層用來處理信息包、發(fā)出分類請求并保持信息包上下文。這里所描述的該方法由這各種網(wǎng)絡(luò)層的薄墊片模塊400、402、404、406來執(zhí)行。作為選擇,方法500由來自該網(wǎng)絡(luò)堆棧的這些層內(nèi)的整體處理來加以執(zhí)行,而不需要單獨的薄墊片。方法500也可以由一個或多個用戶模式層來執(zhí)行。
在步驟502中,該請求層從前一層接收完全信息包408和對應的信息包上下文412。在出站信息包的情況下,這前一層在該網(wǎng)絡(luò)堆棧中比該請求層更高。在入站信息包的情況下,這前一層在該網(wǎng)絡(luò)堆棧中比該請求層更低。
在步驟504中,該請求層識別這些層參數(shù)。這些層參數(shù)由該請求層通過從入站信息包中分析這些參數(shù)或?qū)⑦@些參數(shù)加入出站信息包來加以處理。這些層參數(shù)可以包括可從信息包中導出的其他信息(例如,該局部地址類型)。以上的表格A中描述了這些默認層參數(shù),并且,層API 280中的“分類”法350的該pInFixValues中包括這些默認層參數(shù)。
在步驟506中,該請求層將該分類請求發(fā)給核心防火墻引擎256。參照層API 280中的“分類”法350來描述過用于發(fā)出分類請求的示范方法。
響應于該分類請求,將動作返回到該請求層。該請求層根據(jù)被返回的這個動作來確定是否丟失信息包508。如果該核心防火墻引擎返回阻滯,作為該動作,那么,該請求層丟失該信息包。如果核心防火墻引擎256返回該動作,因為沒有發(fā)現(xiàn)匹配濾波器,那么,該請求層也可以丟失該信息包?!霸撜埱髮邮欠裨跊]有發(fā)現(xiàn)匹配濾波器的情況下丟失信息包”這一點在系統(tǒng)范圍的基礎(chǔ)上或在逐層的基礎(chǔ)上是可以配置的。
如果被返回的這個動作是允許,則進一步進行信息包處理。在步驟510中,該請求層將該信息包上下文修改成包括層信息,通常是曾作為該分類請求中的這些層參數(shù)而被包括在內(nèi)的相同類型的信息。這樣,表格A(以上)不僅識別這些層參數(shù),而且識別由每個層加入該信息包上下文的該默認信息。該信息包上下文被保存在數(shù)據(jù)結(jié)構(gòu)(例如,參照圖5而描述的那個數(shù)據(jù)結(jié)構(gòu))中。
在步驟512中,該請求層根據(jù)關(guān)于那個層的該協(xié)議實施來處理該信息包。這類處理眾所周知,這里不需要詳細描述。示范的協(xié)議實施包括HTTP、FTP、SMTP、關(guān)于該應用層的RPC、關(guān)于該傳輸層的TCP和UDP、關(guān)于該網(wǎng)絡(luò)層的IP,以及關(guān)于該鏈路層的NDIS。
在步驟514中,該請求層將該信息包(根據(jù)該層協(xié)議來加以處理)連同該修改過的信息包上下文傳遞到下一層。如果該信息包是入站信息包,則這下一層是該網(wǎng)絡(luò)堆棧中的較高的層。如果該信息包是出站信息包,則這下一層是該網(wǎng)絡(luò)堆棧中的較低的層。處理500由該網(wǎng)絡(luò)堆棧中的每個層來重復執(zhí)行,并且繼續(xù)進行,直到該信息包穿過該網(wǎng)絡(luò)堆棧中的所有層為止,或者直到該信息包被該網(wǎng)絡(luò)堆棧中的這些層之一丟失為止。
參考圖12,現(xiàn)在將描述示范方法520,示范方法520被核心防火墻引擎256用來識別匹配濾波器并將該動作返回到該請求層。如前所述,也可以由在該用戶防火墻引擎中執(zhí)行的濾波器模塊294來實現(xiàn)核心防火墻引擎256的功能性。
在步驟522中,核心防火墻引擎256使用(例如)“分類”法350并經(jīng)由層API 280,從該請求層接收該信息包、層參數(shù)和信息包上下文。
在步驟524中,該核心防火墻引擎識別一個或多個匹配濾波器。在本發(fā)明的實施例中,將濾波器分配給特定的請求層。如果將該濾波器分配給該請求層,并且,這些信息包參數(shù)與所有的濾波器條件318相匹配,則核心防火墻引擎256只嘗試將濾波器識別為匹配(圖5)。如前所述,這些信息包參數(shù)包括來自這些請求層的層參數(shù)和該信息包上下文。在識別所有的匹配濾波器之后,該核心防火墻引擎根據(jù)每個匹配濾波器中的加權(quán)字段314來安排這些濾波器。
在步驟526中,核心防火墻引擎256應用具有還未被應用的最高加權(quán)314的那個濾波器。明確地說,核心防火墻引擎256識別該濾波器中所規(guī)定的動作316。如果動作316指定呼出模塊258之一,則核心防火墻引擎256經(jīng)由如步驟532中所示的呼出API 284來執(zhí)行該呼出。參照該呼出API中的“分類”法356(圖6)來描述過被用來執(zhí)行該呼出的示范方法。該呼出可以將動作返回到核心防火墻引擎256。
如果該動作不是呼出,或者在執(zhí)行該呼出之后,該核心防火墻引擎將來自該匹配濾波器的或如該呼出所識別的關(guān)聯(lián)動作返回到如步驟536中所示的該請求層。作為選擇,核心防火墻引擎256等候返回該動作,直到已應用所有的匹配濾波器為止。
在步驟534中,核心防火墻引擎256確定是否存在任何額外的匹配濾波器。如果不存在,則該處理終止。如果存在額外的匹配濾波器,則該處理返回到步驟526,在那里,應用優(yōu)先級高居第二的濾波器。該處理繼續(xù)進行,直到應用所有的匹配濾波器為止。作為選擇,一旦為該信息包識別終止動作,該處理就終止。如果沒有為該信息包識別匹配濾波器,則該核心防火墻引擎通知該請求層不曾發(fā)現(xiàn)匹配濾波器。然后,該請求層確定如何處置該信息包(即,是允許還是阻滯該信息包)。
圖13展示了根據(jù)本發(fā)明而使用的方法560,用于防止來自未經(jīng)請求的入站信息包的惡意攻擊,同時允許與可信用戶進行通信,從而啟動來自未知網(wǎng)絡(luò)地址的通信。
在步驟562中,執(zhí)行本發(fā)明的該防火墻的響應計算機接收未經(jīng)請求的入站信息包。在步驟564中,處理560確定該入站信息包是否是鑒定請求。例如,鑒定請求可能取決于該IKE協(xié)議。如果該入站信息包是鑒定請求,則該響應計算機嘗試鑒定如步驟568中所示的該啟動計算機。被用來鑒定該啟動計算機的一種方法是通過數(shù)字證書。該數(shù)字證書由認證當局(CA)發(fā)行,它包括諸如用戶名、序列號、截止日期、公開密鑰(被用于為消息和數(shù)字簽名加密)的副本和該CA的數(shù)字簽名等信息,以便接收者可以驗證該證書是真實的。
然后,在步驟568中,該處理確定該鑒定處理是否成功。如果該鑒定不成功(即,該響應計算機無法鑒定該啟動計算機),則該處理結(jié)束。
如果該鑒定處理是成功的,則如步驟570中所示的那樣來創(chuàng)建新的濾波器。這個新的濾波器包括濾波器條件,這些濾波器條件與關(guān)于該響應計算機的地址信息(例如,IP地址、端口號、協(xié)議類型和類似的信息)相匹配;并且作為該關(guān)聯(lián)的動作“允許”而包括在內(nèi)。作為選擇,這個新的濾波器具有濾波器條件,這些濾波器條件跟在該啟動計算機與響應計算機之間達成一致意見的安全設(shè)置相匹配。如步驟572中所示,當接收不是鑒定請求的入站信息包時,該處理確定是否已鑒定該啟動計算機(即,是否存在具有允許動作的匹配濾波器)。如果匹配濾波器具有該允許動作,則如步驟547中所示的那樣,允許該信息包穿過網(wǎng)絡(luò)。否則,如步驟576中所示的那樣,阻滯該信息包進行進一步的網(wǎng)絡(luò)遍歷。
用于提供來自未經(jīng)請求的用戶的安全通信的方法516的替換方案是創(chuàng)建一種濾波器,該濾波器要求所有的入站信息包符合安全協(xié)議(例如,由IPSec規(guī)定的協(xié)議)。這樣,在信息包可以暢通無阻地通過該濾波器之前,它必須如步驟566中所描述的那樣,首先建立被鑒定的SA。
這里所引用的所有這些參考資料被包括于此,用作整體參考。
鑒于可以應用本發(fā)明的這些原理的這許多可能的實施例,應該認識到這里根據(jù)這些附圖而描述的該實施例意在只起說明的作用,而不應該被視作限制本發(fā)明的范圍。例如,精通該技術(shù)領(lǐng)域的人將會認識到可以在硬件中執(zhí)行軟件中所示的該說明性實施例的這些元件,反之亦然;或者,在不脫離本發(fā)明的精神的前提下,可以在布置和細節(jié)方面修改該說明性實施例。此外,精通該技術(shù)領(lǐng)域的人將會認識到其他處理使用濾波器(例如,QOS和IPSec)。可以使用本發(fā)明的這項發(fā)明來管理并執(zhí)行濾波器以及這些和額外的處理的基于濾波器的策略。所以,如這里所描述的本發(fā)明計劃可以將所有這類實施例納入以下的權(quán)利要求書及其相等物的范圍以內(nèi)。
權(quán)利要求
1.一種用于在請求階段執(zhí)行防火墻策略的方法,該請求階段是防火墻構(gòu)架中的多個階段之一,該防火墻構(gòu)架進一步包括具有多個被安裝的濾波器的防火墻引擎,其特征在于,包括通過該請求階段,從這多個階段中的前一個階段接收信息包;通過該請求階段,識別與該信息包關(guān)聯(lián)的一組參數(shù);發(fā)出分類調(diào)用,該分類調(diào)用包括與該信息包關(guān)聯(lián)的這個參數(shù)集;響應于該分類調(diào)用,根據(jù)這多個被安裝的濾波器中的至少一個濾波器所指定的該防火墻策略來接收動作。
2.如權(quán)利要求1所述的方法,其特征在于,該動作是指令,用于允許該信息包繼續(xù)進行網(wǎng)絡(luò)遍歷,進一步包括根據(jù)層協(xié)議來處理該信息包;以及,將該信息包發(fā)送到這多個階段中的下一個階段。
3.如權(quán)利要求1所述的方法,其特征在于,該信息包是被指定到網(wǎng)絡(luò)設(shè)備去的出站信息包;并且,其中,這個參數(shù)集包括根據(jù)該請求階段所執(zhí)行的協(xié)議而被加入該信息包的信息。
4.如權(quán)利要求1所述的方法,其特征在于,該信息包是從網(wǎng)絡(luò)設(shè)備接收的入站信息包;并且,其中,這個參數(shù)集包括信息,該請求階段根據(jù)該請求階段所執(zhí)行的協(xié)議來從該入站信息包中分析該信息。
5.如權(quán)利要求1所述的方法,其特征在于,這多個階段在操作系統(tǒng)的核心模式內(nèi)執(zhí)行。
6.如權(quán)利要求1所述的方法,其特征在于,這多個階段在操作系統(tǒng)的用戶模式內(nèi)執(zhí)行。
7.如權(quán)利要求1所述的方法,其特征在于,進一步包括從這前一個階段接收信息包上下文數(shù)據(jù)結(jié)構(gòu),該信息包上下文包括與該信息包關(guān)聯(lián)的先前的階段數(shù)據(jù);以及,通過增加這個參數(shù)集,來修改該信息包上下文數(shù)據(jù)結(jié)構(gòu)。
8.如權(quán)利要求7所述的方法,其特征在于,這個參數(shù)集中的參數(shù)包括該請求階段的標識、該參數(shù)類型和值。
9.如權(quán)利要求7所述的方法,其特征在于,該請求階段將該修改過的信息包上下文數(shù)據(jù)結(jié)構(gòu)發(fā)送到這多個階段中的下一個階段。
10.一種用于在包括一組被安裝的濾波器的防火墻引擎中執(zhí)行防火墻策略的方法,這些被安裝的濾波器每個都包括一組濾波器條件和一個關(guān)聯(lián)的動作,其特征在于,包括接收一組信息包參數(shù),這些信息包參數(shù)包括與請求層關(guān)聯(lián)的第一信息包信息以及與信息包上下文數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的第二信息包信息;識別一組匹配濾波器,這個匹配濾波器集中的每個濾波器具有對應于這些信息包參數(shù)的濾波器條件;以及,從這些匹配濾波器中的至少一個濾波器中識別該關(guān)聯(lián)的動作。
11.如權(quán)利要求10所述的方法,其特征在于,這個匹配濾波器集中的每個濾波器具有優(yōu)先級,并且,來自最高優(yōu)先級濾波器的該關(guān)聯(lián)的動作是非終止動作,進一步包括從這個匹配濾波器集中的一個或多個較低優(yōu)先級濾波器中識別該關(guān)聯(lián)的動作,直到達到終止動作為止。
12.如權(quán)利要求10所述的方法,其特征在于,來自這個匹配濾波器集的濾波器識別呼出(callout)模塊,進一步包括將這些信息包參數(shù)和來自這個匹配濾波器集的該濾波器的標識發(fā)送到該呼出模塊。
13.如權(quán)利要求12所述的方法,其特征在于,該呼出修改該信息包上下文。
14.如權(quán)利要求10所述的方法,其特征在于,該防火墻引擎在操作系統(tǒng)的用戶模式中執(zhí)行。
15.如權(quán)利要求10所述的方法,其特征在于,該防火墻引擎在操作系統(tǒng)的核心模式中執(zhí)行。
16.一種用于允許在啟動網(wǎng)絡(luò)設(shè)備與響應網(wǎng)絡(luò)設(shè)備之間進行網(wǎng)絡(luò)通信的方法,該響應網(wǎng)絡(luò)設(shè)備包括用于防止未經(jīng)請求的網(wǎng)絡(luò)通信的防火墻,其特征在于,包括根據(jù)密鑰商議協(xié)議,來創(chuàng)建允許入站信息包的第一個防火墻濾波器;根據(jù)該密鑰商議協(xié)議,在該啟動網(wǎng)絡(luò)設(shè)備與該響應網(wǎng)絡(luò)設(shè)備之間實施成功的密鑰商議;驗證該啟動設(shè)備的身份,作為該密鑰商議協(xié)議的一部分;以及,創(chuàng)建第二個防火墻濾波器,該防火墻濾波器允許從該啟動網(wǎng)絡(luò)設(shè)備那里被發(fā)送的入站信息包。
17.如權(quán)利要求16所述的方法,其特征在于,這第二個防火墻濾波器允許從該啟動網(wǎng)絡(luò)設(shè)備那里被發(fā)送的、符合安全協(xié)議的信息包。
18.如權(quán)利要求16所述的方法,其特征在于,這第二個防火墻濾波器允許指定該啟動設(shè)備的地址的信息包。
19.如權(quán)利要求16所述的方法,其特征在于,該密鑰商議是IKE商議。
20.一種用于執(zhí)行計算機可讀指令的計算機可讀介質(zhì),這些計算機可讀指令用于在請求階段執(zhí)行防火墻策略,該請求階段是防火墻構(gòu)架中的多個階段之一,該防火墻構(gòu)架進一步包括具有多個被安裝的濾波器的防火墻引擎,其特征在于,包括通過該請求階段,從這多個階段中的前一個階段接收信息包;通過該請求階段,識別與該信息包關(guān)聯(lián)的一組參數(shù);發(fā)出分類調(diào)用,該分類調(diào)用包括與該信息包關(guān)聯(lián)的這個參數(shù)集;響應于該分類調(diào)用,根據(jù)這多個被安裝的濾波器中的至少一個濾波器所指定的該防火墻策略來接收動作。
21.如權(quán)利要求20所述的計算機可讀介質(zhì),其特征在于,該動作是指令,用于允許該信息包繼續(xù)進行網(wǎng)絡(luò)遍歷,進一步包括根據(jù)層協(xié)議來處理該信息包;以及,將該信息包發(fā)送到這多個階段中的下一個階段。
22.如權(quán)利要求20所述的計算機可讀介質(zhì),其特征在于,進一步包括從這前一個階段接收信息包上下文數(shù)據(jù)結(jié)構(gòu),該信息包上下文包括與該信息包關(guān)聯(lián)的先前的階段數(shù)據(jù);以及,通過增加這個參數(shù)集,來修改該信息包上下文數(shù)據(jù)結(jié)構(gòu)。
23.一種用于執(zhí)行計算機可讀指令的計算機可讀介質(zhì),這些計算機可讀指令用于在包括一組被安裝的濾波器的防火墻引擎中執(zhí)行防火墻策略,這些被安裝的濾波器每個都包括一組濾波器條件和一個關(guān)聯(lián)的動作,其特征在于,包括接收一組信息包參數(shù),這些信息包參數(shù)包括與請求層關(guān)聯(lián)的第一信息包信息以及與信息包上下文數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的第二信息包信息;識別一組匹配濾波器,這個匹配濾波器集中的每個濾波器具有對應于這些信息包參數(shù)的濾波器條件;以及,從這些匹配濾波器中的至少一個濾波器中識別該關(guān)聯(lián)的動作。
24.如權(quán)利要求23所述的計算機可讀介質(zhì),其特征在于,這個匹配濾波器集中的每個濾波器具有優(yōu)先級,并且,來自最高優(yōu)先級濾波器的該關(guān)聯(lián)的動作是非終止動作,進一步包括從這個匹配濾波器集中的一個或多個較低優(yōu)先級濾波器中識別該關(guān)聯(lián)的動作,直到達到終止動作為止。
25.如權(quán)利要求23所述的計算機可讀介質(zhì),其特征在于,來自這個匹配濾波器集的濾波器識別呼出模塊,進一步包括將這些信息包參數(shù)和來自這個匹配濾波器集的該濾波器的標識發(fā)送到該呼出模塊。
26.一種用于執(zhí)行計算機可讀指令的計算機可讀介質(zhì),這些計算機可讀指令用于允許在啟動網(wǎng)絡(luò)設(shè)備與響應網(wǎng)絡(luò)設(shè)備之間進行網(wǎng)絡(luò)通信,該響應網(wǎng)絡(luò)設(shè)備包括用于防止未經(jīng)請求的網(wǎng)絡(luò)通信的防火墻,其特征在于,包括根據(jù)密鑰商議協(xié)議,來創(chuàng)建允許入站信息包的第一個防火墻濾波器;根據(jù)該密鑰商議協(xié)議,在該啟動網(wǎng)絡(luò)設(shè)備與該響應網(wǎng)絡(luò)設(shè)備之間實施成功的密鑰商議;驗證該啟動設(shè)備的身份,作為該密鑰商議協(xié)議的一部分;以及,創(chuàng)建第二個防火墻濾波器,該防火墻濾波器允許從該啟動網(wǎng)絡(luò)設(shè)備那里被發(fā)送的入站信息包。
27.如權(quán)利要求26所述的計算機可讀介質(zhì),其特征在于,這第二個防火墻濾波器允許從該啟動網(wǎng)絡(luò)設(shè)備那里被發(fā)送的、符合安全協(xié)議的信息包。
28.如權(quán)利要求26所述的計算機可讀介質(zhì),其特征在于,這第二個防火墻濾波器允許指定該啟動設(shè)備的地址的信息包。
全文摘要
提供了一種方法,用于在防火墻結(jié)構(gòu)中執(zhí)行防火墻。該防火墻結(jié)構(gòu)包括多個網(wǎng)絡(luò)層和第一個防火墻引擎。這些層將信息包和信息包信息發(fā)送到這第一個防火墻引擎,保持信息包上下文并將其傳遞到隨后的各個層,并且處理這些信息包。這第一個防火墻引擎將該信息包信息與一個或多個被安裝的濾波器進行比較,并將動作返回到這些層,從而指出如何處置該信息包。
文檔編號H04L12/66GK1574792SQ20041004886
公開日2005年2月2日 申請日期2004年6月3日 優(yōu)先權(quán)日2003年6月6日
發(fā)明者B·D·斯旺達, G·S·帕爾, N·S·S·N·勞 申請人:微軟公司