專利名稱:用于集成多個(gè)網(wǎng)絡(luò)策略的方法和框架的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)安全。更具體地說,本發(fā)明涉及一種將多個(gè)網(wǎng)絡(luò)策略集成到一網(wǎng)絡(luò)設(shè)備中的一單獨(dú)框架中的方法。
背景技術(shù):
網(wǎng)絡(luò)協(xié)議被設(shè)計(jì)為幫助網(wǎng)絡(luò)設(shè)備之間通過一數(shù)據(jù)的開放交換的通信。數(shù)據(jù)的開放交換大大增強(qiáng)了利用網(wǎng)絡(luò)設(shè)備來完成任務(wù)的應(yīng)用,但它也造成了問題,因?yàn)榫W(wǎng)絡(luò)協(xié)議不是被設(shè)計(jì)用于,且一般不提供網(wǎng)絡(luò)安全。連接(couple)至公共和私有網(wǎng)絡(luò),諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、內(nèi)聯(lián)網(wǎng)(intranet)和互聯(lián)網(wǎng)(internet)的計(jì)算機(jī)對于來自直接或間接連接到網(wǎng)絡(luò)的其他網(wǎng)絡(luò)設(shè)備的惡意攻擊顯得脆弱。這些惡意攻擊包括偷竊數(shù)據(jù)、拒絕服務(wù)(DOS)攻擊、繁殖計(jì)算機(jī)病毒,等等。
許多方法已被開發(fā)以保護(hù)網(wǎng)絡(luò)設(shè)備免受惡意攻擊,其通常是通過實(shí)施一個(gè)或多個(gè)網(wǎng)絡(luò)策略來實(shí)現(xiàn)。一種網(wǎng)絡(luò)策略是一安全策略,例如由互聯(lián)網(wǎng)協(xié)議安全(IPSec)組提供的安全策略。IPSec組提供了諸如封裝安全協(xié)議(ESP)、認(rèn)證頭部(AH)以及互聯(lián)網(wǎng)密鑰交換和管理(IKE)協(xié)議。ESP協(xié)議記載在互聯(lián)網(wǎng)工程特別任務(wù)(IETF)請求注解(RFC)2046中,其是一個(gè)使用密碼(cryptographic),機(jī)制的認(rèn)證以及加密協(xié)議,用于提供數(shù)據(jù)的完整性、源認(rèn)證以及保密性。AH協(xié)議記載在IETF RFC 2402中,其是一個(gè)在分組頭部中使用哈希(hash)簽名的認(rèn)證協(xié)議,用于驗(yàn)證分組數(shù)據(jù)的完整性并認(rèn)證發(fā)送者。
IKE協(xié)議記載在IETF RFC 2409中,其提供了一種使網(wǎng)絡(luò)設(shè)備協(xié)商AH和ESP格式所使用的安全設(shè)定的方法。經(jīng)協(xié)商的安全設(shè)定形成一數(shù)據(jù)結(jié)構(gòu)稱為安全性聯(lián)合(SA)。SA定義了諸如認(rèn)證算法、加密算法、密鑰、以及密鑰的生存時(shí)間等參數(shù),這些參數(shù)被ESP或AH用來保護(hù)IP分組的內(nèi)容。由于ESP和AH要求一已建立的SA,因此IKE協(xié)商在ESP和AH被用于發(fā)射數(shù)據(jù)之前被執(zhí)行。
一網(wǎng)絡(luò)設(shè)備識別屬于(subject to)IPSec,例如IKE、AH或者ESP處理的分組,以及這些分組應(yīng)該被基于一在安全性策略數(shù)據(jù)庫(SPD)中維持的安全性策略而被IPSec處理的情況。安全性策略是一組分配給網(wǎng)絡(luò)設(shè)備的規(guī)則,其定義了如何使用IPSec。安全性策略包括過濾器列表,認(rèn)證方法和其他信息。確定應(yīng)用于一分組的合適的安全性策略通常是基于分組的源和目的IP地址、源和目的端口以及協(xié)議類型。
另一種用于保護(hù)免受惡意攻擊的網(wǎng)絡(luò)策略是防火墻策略。防火墻策略由一個(gè)或多個(gè)過濾器實(shí)施。每一個(gè)過濾器包括過濾器參數(shù)和應(yīng)用于分組的和過濾器參數(shù)相匹配的相關(guān)策略。過濾器參數(shù)包括下列信息硬件地址,比如媒質(zhì)介入控制(MAC)地址、網(wǎng)絡(luò)地址,例如IP地址、協(xié)議類型,例如傳輸控制協(xié)議(TCP)、端口數(shù)量等等。過濾器中的防火墻策略識別了應(yīng)該怎樣對待具有與過濾器參數(shù)相匹配的參數(shù)的分組。在一個(gè)具體的例子中,過濾器包括作為其參數(shù)的統(tǒng)一的源位置(URL),例如“http//www.foo.com”。過濾器策略指示具有那個(gè)URL地址的分組應(yīng)該被丟棄。當(dāng)網(wǎng)絡(luò)設(shè)備檢查一分組并通過該檢查識別URL地址“http//www.foo.com”包含在分組中時(shí),網(wǎng)絡(luò)設(shè)備丟棄該分組并由此防止其通過網(wǎng)絡(luò)。
網(wǎng)絡(luò)設(shè)備也使用非安全性相關(guān)的策略來控制網(wǎng)絡(luò)話務(wù)的流動(dòng)。作為一個(gè)例子,網(wǎng)絡(luò)設(shè)備實(shí)施基于服務(wù)質(zhì)量(QoS)的策略。QoS表明實(shí)際的傳輸速率、錯(cuò)誤率以及其他的可被測量、改進(jìn)以及有時(shí)能提前確保的特性。分組基于策略和保留標(biāo)準(zhǔn)被發(fā)出。QoS用于,例如,為了網(wǎng)絡(luò)設(shè)備間改進(jìn)的通信而分配網(wǎng)絡(luò)帶寬。
在一個(gè)網(wǎng)絡(luò)設(shè)備上實(shí)施多個(gè)策略,例如安全性策略、防火墻策略、QoS策略等等很常見。這些策略可能沖突,即識別矛盾的動(dòng)作以采用同一個(gè)分組。在一個(gè)網(wǎng)絡(luò)設(shè)備上實(shí)施多個(gè)網(wǎng)絡(luò)策略使診斷分組傳輸問題也變得困難。例如,如果分組沒有被正確地發(fā)射或接收,則難以識別是哪一個(gè)網(wǎng)絡(luò)策略妨礙了該分組。
發(fā)明內(nèi)容
本發(fā)明是指一種用于在一個(gè)網(wǎng)絡(luò)設(shè)備中實(shí)施多個(gè)網(wǎng)絡(luò)策略的方法和框架。多個(gè)網(wǎng)絡(luò)協(xié)議由安裝在一個(gè)策略引擎內(nèi)的一組過濾器定義。每一個(gè)過濾器包括一組過濾條件、一動(dòng)作以及一策略環(huán)境。過濾器條件包括使策略引擎能識別與一分組相匹配的一個(gè)或多個(gè)過濾器的參數(shù)。動(dòng)作和策略環(huán)境識別應(yīng)用于匹配過濾器條件的分組的網(wǎng)絡(luò)策略。
一請求層發(fā)送一請求以及和分組相關(guān)的一組參數(shù)至策略引擎。策略引擎通過將和分組相關(guān)的參數(shù)和過濾器條件相比較以識別分組的一個(gè)或多個(gè)匹配的過濾器。接下來從相匹配的過濾器的策略環(huán)境和動(dòng)作來識別網(wǎng)絡(luò)策略。在網(wǎng)絡(luò)策略被識別后,其由網(wǎng)絡(luò)設(shè)備執(zhí)行。
在本發(fā)明的一個(gè)實(shí)施例中,多個(gè)網(wǎng)絡(luò)策略中的一個(gè)是防火墻策略,其通過包含作為過濾器中的動(dòng)作組而實(shí)施,允許或阻止,從而識別出與過濾器條件相匹配的分組是否應(yīng)被允許遍歷網(wǎng)絡(luò)棧中的層或者被相反地阻止進(jìn)一步的網(wǎng)絡(luò)遍歷。
在本發(fā)明的一個(gè)實(shí)施例中,多個(gè)網(wǎng)絡(luò)策略中的一個(gè)是安全性策略,包含作為策略環(huán)境數(shù)據(jù),用于識別將要被應(yīng)用于匹配過濾器條件的安全性策略。
在本發(fā)明的一個(gè)實(shí)施例中,多個(gè)網(wǎng)絡(luò)策略中的一個(gè)是服務(wù)質(zhì)量策略,包含作為策略環(huán)境數(shù)據(jù),用于識別要被用于匹配過濾器條件的分組的通信設(shè)置。
本發(fā)明的方法和框架可用于實(shí)施一可編程的、基于主機(jī)的、分布式認(rèn)證的防火墻,其使安全性和其他策略被應(yīng)用于幾個(gè)協(xié)議層中。本發(fā)明的其他特征和優(yōu)勢將在下述結(jié)合附圖的說明性的實(shí)施例的詳細(xì)描述之后變得明顯。
雖然所附的權(quán)利要求具體說明本發(fā)明的特征,而本發(fā)明及目的和優(yōu)勢將從下列結(jié)合附圖的詳細(xì)描述中得到最好的理解,其中圖1是一般說明應(yīng)用本發(fā)明的示例計(jì)算機(jī)系統(tǒng)的框圖;圖2是可使用本發(fā)明的示例網(wǎng)絡(luò)環(huán)境的框圖;圖3是用于實(shí)施并管理多個(gè)網(wǎng)絡(luò)策略的系統(tǒng)結(jié)構(gòu)的框圖;圖4是說明一策略過濾器的示例數(shù)據(jù)結(jié)構(gòu);圖5是說明分組環(huán)境的示例數(shù)據(jù)結(jié)構(gòu);
圖6是說明了本發(fā)明所使用的示例應(yīng)用編程接口;圖7是說明了本發(fā)明所使用的一示例應(yīng)用編程接口;圖8是說明獲得用于數(shù)據(jù)的策略的請求層的框圖;圖9是說明由一請求層實(shí)施網(wǎng)絡(luò)策略所使用的方法的流程圖;圖10是說明由一策略引擎識別用于數(shù)據(jù)的網(wǎng)絡(luò)策略所使用的方法的流程圖;以及圖11是說明了用于把新的策略過濾器增加至一策略引擎中的方法的流程圖。
具體實(shí)施例方式
描述了一種在一個(gè)網(wǎng)絡(luò)設(shè)備中實(shí)施并管理多個(gè)基于過濾器的網(wǎng)絡(luò)策略的方法和框架。典型的基于過濾器的網(wǎng)絡(luò)策略包括安全性策略、防火墻策略以及QoS策略。多個(gè)基于過濾器的網(wǎng)絡(luò)策略被保存在一個(gè)過濾器策略引擎中。
基于過濾器的策略在一個(gè)框架中被實(shí)施,所述框架包括一用戶策略引擎和一個(gè)核心(kernel)策略引擎??蚣苓€包括核心層和用戶層。核心策略引擎、核心層以及一次或多次呼出(callout)在一操作系統(tǒng)的核心模式中執(zhí)行。核心層包括一應(yīng)用層、一傳輸層、一網(wǎng)絡(luò)層以及一鏈路層以形成一網(wǎng)絡(luò)棧。與一個(gè)或多個(gè)策略提供者一起,用戶策略引擎和用戶模式在一操作系統(tǒng)用戶模式中執(zhí)行。一示例性的用戶層是用于識別安全性策略的鍵控(keying)模塊層?;蛘撸景l(fā)明的方法和框架在一單獨(dú)的操作系統(tǒng)模式中執(zhí)行,或者在操作系統(tǒng)外執(zhí)行的一個(gè)或多個(gè)程序模塊或應(yīng)用程序中執(zhí)行。
用戶層和核心層各自形成一請求層,用于從一前面的層或系統(tǒng)進(jìn)程接收一分組和相應(yīng)的分組環(huán)境數(shù)據(jù)。請求層通過已應(yīng)用編程接口(AIP)發(fā)送一請求至核心策略引擎或者用戶策略引擎。所述請求包括下列信息由請求層接收的分組、分組環(huán)境以及和請求層相關(guān)的一組層參數(shù)。策略引擎處理請求并返回一動(dòng)作和策略環(huán)境。該層然后按照所述動(dòng)作和策略環(huán)境實(shí)施網(wǎng)絡(luò)策略。
多個(gè)網(wǎng)絡(luò)策略由一組已安裝的過濾器所定義。該組已安裝的過濾器中的每一個(gè)包括一組過濾器條件、一動(dòng)作以及策略環(huán)境。動(dòng)作用于返回防火墻策略,例如允許或是阻止。策略環(huán)境包括其他策略,諸如安全性或QoS策略。核心或用戶策略引擎通過識別一個(gè)或多個(gè)匹配的過濾器來處理從請求層發(fā)送的請求。匹配的過濾器具有與層參數(shù)和分組環(huán)境相匹配的過濾器條件。
策略提供者用于創(chuàng)建網(wǎng)絡(luò)策略并且從任何合適的信源,例如易失性或非易失性存儲(chǔ)器,或者通過圖形用戶接口而得到所述策略。策略是用于提供新的過濾器的信息源,包括過濾器條件組、動(dòng)作以及策略環(huán)境。用戶策略引擎把新的過濾器增加至用戶策略引擎或核心策略引擎中已安裝的過濾器組中。
參考附圖,其中相同的附圖標(biāo)記指相同的元件,本發(fā)明以在一合適的計(jì)算環(huán)境中實(shí)施來說明。盡管并不要求,本發(fā)明將以計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境來描述,例如由個(gè)人計(jì)算機(jī)執(zhí)行的程序模塊。通常,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實(shí)施特定的抽象數(shù)據(jù)類型。本發(fā)明也可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)是由通過一通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行。在一分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)器儲(chǔ)存設(shè)備中。
圖1說明了可實(shí)施本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境100的一個(gè)范例。計(jì)算系統(tǒng)環(huán)境100僅僅是合適的計(jì)算環(huán)境的一個(gè)范例且其并不是作為本發(fā)明的使用或功能的范圍的限制。計(jì)算環(huán)境100也不應(yīng)該被解釋為有任何依靠或要求相關(guān)于任何一個(gè)在示例運(yùn)行環(huán)境100中的說明的組件或其組合。
本發(fā)明也可在多種其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置中運(yùn)行。熟知的可適用于本發(fā)明的計(jì)算系統(tǒng)、環(huán)境和/或配置的范例包括但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、掌上或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子元件、網(wǎng)絡(luò)PC、迷你計(jì)算機(jī)、主機(jī)計(jì)算機(jī)、包括任何上述系統(tǒng)或設(shè)備的分布式計(jì)算機(jī)環(huán)境等等。
本發(fā)明可在計(jì)算機(jī)可執(zhí)行指令的一般形式中被描述,諸如程序模塊,其被一計(jì)算機(jī)執(zhí)行。通常,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)嵤┨囟ǖ某橄髷?shù)據(jù)類型。本發(fā)明也可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行。在一個(gè)分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程的包括存儲(chǔ)儲(chǔ)存設(shè)備的計(jì)算機(jī)存儲(chǔ)媒質(zhì)中。
參考圖1,實(shí)施本發(fā)明的一個(gè)示例性系統(tǒng)包括一以計(jì)算機(jī)110的形式出現(xiàn)的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可包括,但不限于一處理單元120、一系統(tǒng)存儲(chǔ)器130以及一系統(tǒng)總線121,系統(tǒng)總線121把包括系統(tǒng)存儲(chǔ)器在內(nèi)的多種系統(tǒng)組件耦合至處理單元120。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括一存儲(chǔ)器總線或存儲(chǔ)器控制器、一外圍設(shè)備總線以及一使用任何種類的總線結(jié)構(gòu)的本地總線。為了示范而不是為了限制,這種結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子元件標(biāo)準(zhǔn)聯(lián)盟(VESA)本地總線以及外圍組件互連(PCI)總線,也稱為Mezzanine總線。
計(jì)算機(jī)110一般包括多種計(jì)算機(jī)可讀媒質(zhì)。計(jì)算機(jī)可讀媒質(zhì)可以是任何現(xiàn)存的可由計(jì)算機(jī)110訪問的媒質(zhì),包括易失性和非易失性媒質(zhì)、可移動(dòng)和不可移動(dòng)媒質(zhì)。為了說明而不是為了限制,計(jì)算機(jī)可讀媒質(zhì)可包括計(jì)算機(jī)存儲(chǔ)媒質(zhì)和通信媒質(zhì)。計(jì)算機(jī)存儲(chǔ)媒質(zhì)包括易失性和非易失性媒質(zhì)、可移動(dòng)和不可移動(dòng)媒質(zhì),其可用任何用于保存信息的方法或技術(shù)實(shí)施,所述信息包括計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)媒質(zhì)包括,但不限于RAM、ROM、EEPROM、閃存存儲(chǔ)器或其他存儲(chǔ)技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或者其他光盤存儲(chǔ)器、磁帶盒、磁帶、磁盤存儲(chǔ)器或其他磁性存儲(chǔ)設(shè)備,或任何其他可用于保存期望的信息且能被計(jì)算機(jī)110訪問的媒質(zhì)。通信媒質(zhì)一般記載計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他在經(jīng)調(diào)制的數(shù)據(jù)信號中的數(shù)據(jù),諸如一載波或其他傳輸機(jī)制并包括任何信息發(fā)送(delivery)數(shù)據(jù)。術(shù)語“經(jīng)調(diào)制的數(shù)據(jù)”表示一個(gè)信號,它的一個(gè)或多個(gè)特征以一種形式被設(shè)置或改變以編碼該信號中的信息。為了示范而不是限制,通信媒質(zhì)包括有線媒質(zhì),諸如一有線網(wǎng)絡(luò)或直接的有線連接,以及無線媒質(zhì),諸如聲波(acoustic)、射頻(RF)、紅外線以及其他無線媒質(zhì)。任何上述媒質(zhì)的組合也應(yīng)該包括在計(jì)算機(jī)可讀媒質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器130包括以易失性和非易失性媒質(zhì)出現(xiàn)的計(jì)算機(jī)存儲(chǔ)媒質(zhì),諸如只讀存儲(chǔ)器(ROM)131和隨機(jī)存儲(chǔ)存儲(chǔ)器(RAM)132。一基本輸入/輸出系統(tǒng)133(BIOS),包含幫助在計(jì)算機(jī)110的元件之間傳輸信息的基本例程,例如在啟動(dòng)期間,基本例程一般保存在ROM 131中。RAM 132一般包含由處理單元120即時(shí)可存取的或者當(dāng)前正在被處理器120操作的數(shù)據(jù)和/或程序模塊。為了說明而不是限制,圖1說明了操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136以及程序數(shù)據(jù)137。
計(jì)算機(jī)110還可包括其他的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)媒質(zhì)。僅是為了說明的目的,圖1說明了一硬盤驅(qū)動(dòng)器141,其向不可移動(dòng)的、非易失性的磁性媒質(zhì)讀出或?qū)懭耄淮疟P驅(qū)動(dòng)器151,其向可移動(dòng)的、非易失性的磁盤152讀出或?qū)懭?,以及一光盤驅(qū)動(dòng)器155,其向可移動(dòng)的、非易失性的光盤156,例如CD ROM或者其他光媒質(zhì)讀出或?qū)懭?。其他可在示例性的操作系統(tǒng)中使用的可移動(dòng)的/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)媒質(zhì)包括,但不限于磁帶盒、閃存卡、數(shù)字通用光盤、數(shù)字視頻磁帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器141一般通過一諸如接口140的不可移動(dòng)存儲(chǔ)器接口連接至系統(tǒng)總線121,而磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155一般通過一諸如接口150的可移動(dòng)的存儲(chǔ)器接口連結(jié)至系統(tǒng)總線121。
上面討論的并在圖1中說明的驅(qū)動(dòng)器和它們相關(guān)的計(jì)算機(jī)存儲(chǔ)媒質(zhì)保存用于計(jì)算機(jī)110的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)。例如,在圖1中,硬盤驅(qū)動(dòng)器141被示為保存操作系統(tǒng)141、應(yīng)用程序145、其他程序模塊146以及程序數(shù)據(jù)147。需要注意這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136以及程序數(shù)據(jù)137相同或不同。操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146和程序數(shù)據(jù)147在此被給予了不同的號碼以說明至少它們是不同的拷貝。用戶可通過諸如鍵盤162和指向(pointing)設(shè)備161向計(jì)算機(jī)110輸入命令和信息,指向設(shè)備161一般是指鼠標(biāo)、軌跡球或者觸摸板。其他輸入設(shè)備(沒有圖示)可包括麥克風(fēng)、游戲桿、游戲板、圓盤衛(wèi)星天線、掃描儀等等。這些和其他的輸入設(shè)備通常通過連接至系統(tǒng)總線的用戶輸入接口160連結(jié)到處理單元120,但是也可以通過其他接口以及總線結(jié)構(gòu)相連接,例如并行接口、游戲接口或通用串行接口(USB)。監(jiān)視器191或者其他類型的顯示設(shè)備也通過一諸如視頻接口190的接口連接至系統(tǒng)總線121。除了顯示器之外,計(jì)算機(jī)還可以包括其他外圍輸入設(shè)備,例如揚(yáng)聲器197和打印機(jī)196,它們可以通過輸出外圍接口195相連。
計(jì)算機(jī)110可運(yùn)行于使用邏輯連接至一個(gè)或多個(gè)諸如遠(yuǎn)程計(jì)算機(jī)180的遠(yuǎn)程計(jì)算機(jī)的網(wǎng)絡(luò)環(huán)境中。遠(yuǎn)程計(jì)算機(jī)180可以是另一個(gè)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、層(deer)設(shè)備或者其他的公共網(wǎng)絡(luò)節(jié)點(diǎn),且一般包括上面描述的與個(gè)人計(jì)算機(jī)110相關(guān)的許多或者是全部的元件,但是在圖1中僅示出了存儲(chǔ)儲(chǔ)存設(shè)備181。在圖1中說明的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其他網(wǎng)絡(luò)。這種網(wǎng)絡(luò)環(huán)境經(jīng)常出現(xiàn)在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)中。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接到LAN 170。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)110一般包括調(diào)制解調(diào)器172或者其他用于在諸如互聯(lián)網(wǎng)的WAN 173上建立通信的裝置。調(diào)制解調(diào)器172,可以是內(nèi)置的或是外置的,可通過用戶輸入接口160或其他適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線121。在網(wǎng)絡(luò)環(huán)境中,相關(guān)于個(gè)人計(jì)算機(jī)110或其中的部分而說明的程序模塊可保存在遠(yuǎn)程存儲(chǔ)設(shè)備中。為了說明而不是限制,圖1說明了位于存儲(chǔ)設(shè)備181上的遠(yuǎn)程應(yīng)用程序185。需要理解的是,該網(wǎng)絡(luò)連接是示例性的且其他的在計(jì)算機(jī)之間建立通信鏈路的裝置也是可以使用的。
在下面的描述中,本發(fā)明將結(jié)合由一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行的動(dòng)作和操作的象征性的表示來描述,除了另外指明。因此,需要理解這樣的動(dòng)作和操作,即某些時(shí)候是指被計(jì)算機(jī)所執(zhí)行的,包括由計(jì)算機(jī)的處理單元操作表示具有結(jié)構(gòu)形式的數(shù)據(jù)的電信號。該操作變換數(shù)據(jù)或?qū)⑵渚S持在計(jì)算機(jī)存儲(chǔ)系統(tǒng)中的位置上,其以一種為本領(lǐng)域內(nèi)的技術(shù)人員所熟知得方式來重新配置或改變計(jì)算機(jī)的操作。維持?jǐn)?shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是具有由數(shù)據(jù)格式所定義的特定屬性的存儲(chǔ)器的物理位置。然而,雖然在上述環(huán)境中描述了本發(fā)明,然而并不意味著其受到限制,熟悉本領(lǐng)域的技術(shù)人員應(yīng)該理解此后將要描述的多種動(dòng)作和操作也可以在硬件中實(shí)施。
現(xiàn)在將結(jié)合圖2描述一網(wǎng)絡(luò)環(huán)境,其中將實(shí)現(xiàn)按照本發(fā)明實(shí)施并管理多個(gè)基于過濾器的網(wǎng)絡(luò)策略的方法。網(wǎng)絡(luò)將以其本質(zhì)作為示例,因?yàn)楸景l(fā)明的方法可以在耦合至任何網(wǎng)絡(luò)配置的任何網(wǎng)絡(luò)設(shè)備中實(shí)施。網(wǎng)絡(luò)環(huán)境包括一專用網(wǎng)絡(luò)200和一公共網(wǎng)絡(luò)202。專用網(wǎng)絡(luò)200和公共網(wǎng)絡(luò)202是任何合適的類型,例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)或者任何它們的組合。
網(wǎng)絡(luò)環(huán)境包括多個(gè)網(wǎng)絡(luò)設(shè)備204、206、208、210和212。網(wǎng)絡(luò)設(shè)備204、206耦合至專用網(wǎng)絡(luò)200。網(wǎng)絡(luò)設(shè)備210、212耦合至公共網(wǎng)絡(luò)202。網(wǎng)絡(luò)設(shè)備208耦合至專用網(wǎng)絡(luò)200和公共網(wǎng)絡(luò)202兩者,并在它們之間提供一個(gè)接口。網(wǎng)絡(luò)設(shè)備使用任何合適的技術(shù)耦合至公共和專用網(wǎng)絡(luò),所述技術(shù)例如以太網(wǎng)、1394或者802.11(b)。網(wǎng)絡(luò)設(shè)備進(jìn)一步實(shí)施為任何合適的計(jì)算設(shè)備,例如個(gè)人計(jì)算機(jī)、服務(wù)器、手持式設(shè)備、打印機(jī)、交換機(jī)、路由器、網(wǎng)橋(bridge)、中繼器(repeater)等等。
網(wǎng)絡(luò)設(shè)備208包括一過濾器管理模塊214和一個(gè)或多個(gè)過濾器216。管理模塊214是按照本發(fā)明實(shí)施的一個(gè)程序模塊或一組程序模塊。管理模塊214檢查在耦合至專用網(wǎng)絡(luò)200的網(wǎng)絡(luò)設(shè)備204、206、208和耦合至公共網(wǎng)絡(luò)202的網(wǎng)絡(luò)設(shè)備210、212之間交換的網(wǎng)絡(luò)分組。在本發(fā)明的一個(gè)實(shí)施例中,管理模塊214還檢查從專用網(wǎng)絡(luò)200中的網(wǎng)絡(luò)設(shè)備發(fā)送的,且目的地也為專用網(wǎng)絡(luò)200中的網(wǎng)絡(luò)設(shè)備的本地目的網(wǎng)絡(luò)分組。
管理模塊214控制在專用網(wǎng)絡(luò)200和公共網(wǎng)絡(luò)202之間交換的網(wǎng)絡(luò)話務(wù)?;蛘?,管理模塊214在一諸如在網(wǎng)絡(luò)設(shè)備210中說明的單獨(dú)網(wǎng)絡(luò)設(shè)備中實(shí)施并控制用于該網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)話務(wù)。管理模塊還能夠被實(shí)施為一組中央管理的主機(jī)和/或邊緣網(wǎng)絡(luò)設(shè)備。
過濾器實(shí)施為管理模塊214的一部分。或者,過濾器216實(shí)施為可由管理模塊214訪問的單獨(dú)數(shù)據(jù)結(jié)構(gòu)的一部分。每一個(gè)過濾器216包括一組過濾器條件、動(dòng)作以及策略環(huán)境。過濾器條件用于識別服從網(wǎng)絡(luò)策略的數(shù)據(jù)并包括下列信息接口數(shù)量、硬件地址、網(wǎng)絡(luò)地址、協(xié)議類型、端口數(shù)量以及負(fù)載(payload)數(shù)據(jù)。動(dòng)作用于實(shí)施防火墻策略并指示實(shí)施管理模塊的網(wǎng)絡(luò)設(shè)備應(yīng)該如何處理匹配過濾器條件的分組。典型的動(dòng)作包括允許、即允許分組繼續(xù)網(wǎng)絡(luò)遍歷,還包括阻止,即通過丟棄分組來阻止進(jìn)一步的網(wǎng)絡(luò)遍歷。策略環(huán)境用于保存識別其他網(wǎng)絡(luò)策略的信息,其它策略例如安全性和QoS策略,它們將同樣被應(yīng)用于匹配過濾器條件的分組。
如這里使用的,術(shù)語網(wǎng)絡(luò)分組或分組是指數(shù)據(jù)。數(shù)據(jù)可按照一網(wǎng)絡(luò)協(xié)議(例如IP、TCP、HTTP)被格式化,或者可以包括一基本數(shù)據(jù)流。通過把分組信息(這里指分組參數(shù))和過濾器條件相比較,管理模塊識別一個(gè)或多個(gè)匹配的過濾器。當(dāng)過濾器條件匹配分組參數(shù)時(shí)會(huì)產(chǎn)生一匹配的過濾器。分組參數(shù)包括從分組得到的信息,還包括分組環(huán)境信息和層參數(shù)。當(dāng)管理模塊識別一匹配過濾器時(shí),就執(zhí)行與該過濾條件相關(guān)的一個(gè)或多個(gè)工作和/或策略環(huán)境。
圖3示出了管理模塊214的一示例性的結(jié)構(gòu)。管理模塊214的結(jié)構(gòu)允許分組服從核心和用戶層處的過濾器。該結(jié)構(gòu)提供了中央管理能力,其允許增加和刪除過濾器且識別并解決過濾器沖突。管理模塊214是可擴(kuò)展的,因?yàn)楹诵幕蛴脩裟J綄涌筛鶕?jù)需要增加和刪除,并可通過呼出(callout)模塊來擴(kuò)展以包括特殊的功能。本發(fā)明特別適合用于實(shí)施并管理多個(gè)網(wǎng)絡(luò)策略所使用的過濾器,所述策略例如防火墻、服務(wù)質(zhì)量(QoS)、互聯(lián)網(wǎng)協(xié)議安全性(IPSec)組以及其他的加密、認(rèn)證和密鑰管理安全性協(xié)議。
管理模塊214包括一用戶模式進(jìn)程250和一核心模式進(jìn)程252。用戶模式進(jìn)程和核心模式進(jìn)程252作為網(wǎng)絡(luò)設(shè)備中操作系統(tǒng)的一部分執(zhí)行。熟悉本領(lǐng)域的技術(shù)人員將會(huì)理解操作系統(tǒng)的用戶模式進(jìn)程250和核心模式進(jìn)程252包括其他的組件,但是為了簡明起見,此處未示出?;蛘撸芾砟K214的全部或者部分在操作系統(tǒng)之外作為一個(gè)或多個(gè)程序模塊或者應(yīng)用程序被執(zhí)行。
核心模式進(jìn)程252包括核心層254、核心策略引擎256和任選呼出258。核心模式進(jìn)程252通過識別用于網(wǎng)絡(luò)分組的匹配過濾器來實(shí)施一經(jīng)建立的網(wǎng)絡(luò)策略,按照已知的協(xié)議處理分組并按照匹配過濾器所設(shè)計(jì)的對分組執(zhí)行其他動(dòng)作。
在本發(fā)明的一個(gè)實(shí)施例中,核心層254形成一網(wǎng)絡(luò)棧。網(wǎng)絡(luò)棧包含多個(gè)層,包括一數(shù)據(jù)流層268、一傳輸層270、一網(wǎng)絡(luò)層272以及一鏈路層274。管理模塊是可擴(kuò)展的且可根據(jù)需要?jiǎng)討B(tài)地增加或者刪除額外的層。增加的層的一個(gè)示例包括文件訪問層276,其按照服務(wù)器消息塊(SMB)協(xié)議實(shí)施。核心模式進(jìn)程252較佳地被配置成實(shí)施將要應(yīng)用于在核心層254傳輸?shù)姆纸M的防火墻策略。
核心策略引擎256包括一層API 280,一組安裝的過濾器282和一呼出API 284。核心層引擎256按照本發(fā)明的方法執(zhí)行多種功能,包括(1)維持定義網(wǎng)絡(luò)策略,例如安全性、QoS、防火墻策略等等的已安裝的過濾器組282,(2)接收來自核心層254的請求,(3)基于該請求識別一個(gè)或多個(gè)匹配過濾器,以及(4)基于匹配過濾器和其中定義的網(wǎng)絡(luò)策略來指示該層作用于分組上的任何動(dòng)作。
用戶策略引擎260包括一過濾器模塊294。過濾器模塊294是用戶模式250中的核心策略引擎256的一個(gè)實(shí)例。用戶策略引擎260中的過濾器模塊294的實(shí)例允許用戶策略引擎260為一個(gè)或多個(gè)用戶層282復(fù)制核心策略引擎256的服務(wù)。用戶層282以與創(chuàng)建核心模式層的方式相同的方式被增加。由于過濾器294是核心策略引擎256的用戶模式實(shí)例,因此可以理解此處所描述的任何用于核心策略引擎的功能都將被應(yīng)用于過濾器模塊294。例如,額外的用戶模式層從系統(tǒng)結(jié)構(gòu)被增加或者刪除,而呼出(callout)可被創(chuàng)建以向用戶模式層提供額外的功能。過濾器278定義的網(wǎng)絡(luò)策略被增加至過濾器模塊294,而用戶模式層282可通過發(fā)送一請求至用戶策略引擎260來識別用于匹配指定參數(shù)的分組或數(shù)據(jù)的策略。雖然用戶層282被示為在操作系統(tǒng)用戶模式中執(zhí)行,然而用戶層也可分布在其他的系統(tǒng)進(jìn)程中。
已安裝的該組過濾器278、282組被用于實(shí)施一個(gè)或多個(gè)網(wǎng)絡(luò)策略。每一個(gè)過濾器包括一組過濾器條件、動(dòng)作和策略環(huán)境。如結(jié)合圖2所描述的,過濾器條件識別了服從由動(dòng)作和策略環(huán)境所定義的過濾器策略的分組。在安裝的過濾器組282中指定的動(dòng)作包括允許和阻止。策略環(huán)境是用于保存諸如安全性和QoS這樣的策略的已知策略參數(shù)的任何適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)。一個(gè)過濾器的示例形式結(jié)合圖4描述。
層API 280提供了核心層和核心策略引擎之間的接口。通過層API 280,請求層請求核心策略引擎識別將要應(yīng)用于一分組的網(wǎng)絡(luò)策略。
呼出258被用于實(shí)施附加的功能,例如上級(parental)控制,侵入(intrusion)檢測等等。當(dāng)核心或用戶策略引擎256識別一用于分組的匹配過濾器時(shí),一呼出被執(zhí)行,上述的匹配過濾器包括對呼出模塊中一個(gè)的呼出作為關(guān)聯(lián)動(dòng)作。額外的呼出,例如層,在需要時(shí)被增加從而提供一擴(kuò)展的結(jié)構(gòu)。呼出API 284的一特定的實(shí)施參考圖6進(jìn)行描述。
用戶模式進(jìn)程250包括用戶策略引擎260和一個(gè)或多個(gè)策略提供者262,被標(biāo)識為“PP1”、“PP2”和“PP3”。策略提供者262是增加網(wǎng)絡(luò)策略至管理模塊214的進(jìn)程,所述網(wǎng)絡(luò)策略即安裝的過濾器278、282。任何進(jìn)程被用于完成此任務(wù)。一個(gè)示例是一傳統(tǒng)IPSec策略服務(wù)(LIPS)。傳統(tǒng)IPSec策略服務(wù)增加定義網(wǎng)絡(luò)話務(wù)的過濾器,該網(wǎng)絡(luò)話務(wù)被假設(shè)(suppose)使用互聯(lián)網(wǎng)協(xié)議安全(IPSec),例如封裝安全性協(xié)議(ESP)和認(rèn)證頭部協(xié)議(AH)。作為一個(gè)指定的示例,傳統(tǒng)IPSec策略服務(wù)增加一防火墻策略,指示所有未經(jīng)要求(unsolicited)的界內(nèi)(inbound)分組必須按照ESP協(xié)議進(jìn)行加密。該策略進(jìn)一步提供以明文形式的任何未經(jīng)要求的界內(nèi)分組,即一未加密的分組應(yīng)被阻止。策略提供者262從任何合適的信源獲得策略,例如易失性的或非易失性存儲(chǔ)器中的數(shù)據(jù),或者一圖形用戶界面(GUI),該圖形用戶界面允許一管理員或者系統(tǒng)用戶直接輸入策略。用戶策略引擎260將策略轉(zhuǎn)進(jìn)一新的過濾器,即以過濾器條件和相關(guān)的動(dòng)作來定義策略,并把新的過濾器增加到已安裝的過濾器組278、282。
管理模塊214進(jìn)一步包括過濾器引擎API 266,其形成一在用戶策略引擎260和核心策略引擎256之間的接口。引擎API 266提供用于用戶策略引擎260的機(jī)制以增加新的過濾器至安裝的過濾器組282,并檢查安裝的匹配選擇的標(biāo)準(zhǔn)的過濾器282以進(jìn)行診斷。管理API 290,可由策略提供者262訪問,也提供一機(jī)制以從該機(jī)制中增加并刪除過濾器。
每一個(gè)用戶和核心層能夠從先前的層中接受分組、模塊或系統(tǒng)進(jìn)程。每一個(gè)用戶或核心層也維持分組環(huán)境,將分組環(huán)境傳送至下一層或系統(tǒng)進(jìn)程,發(fā)布易分類請求至核心或用戶策略引擎,并按照一個(gè)或多個(gè)網(wǎng)絡(luò)策略在分組上采取動(dòng)作。
分組環(huán)境是按照分組的數(shù)據(jù)結(jié)構(gòu)。每一個(gè)層通過增加一組參數(shù)至環(huán)境數(shù)據(jù)結(jié)構(gòu)中來維持環(huán)境數(shù)據(jù),該組參數(shù)是該層被設(shè)計(jì)為進(jìn)行處理的或者是可從分組中獲取的。一用于分組環(huán)境的示例性的數(shù)據(jù)結(jié)構(gòu)結(jié)合圖5進(jìn)行描述。
分類請求是由一層發(fā)出的調(diào)用(call),請求識別與分組匹配的任何過濾器以及請求例如允許或阻止,和/或相關(guān)的策略環(huán)境這樣的任何動(dòng)作被返回至該層。發(fā)布分類請求的層此處稱為一請求層。每一個(gè)層還對由核心或用戶策略引擎返回的分組采取動(dòng)作。
管理模塊214還包括一鍵控模塊層296。該鍵控模塊層被用于查找和鍵控協(xié)議一起使用的網(wǎng)絡(luò)策略,例如作為諸如IPSec這樣的安全性協(xié)議的一部分實(shí)現(xiàn)的互聯(lián)網(wǎng)密鑰交換及管理(IKE)協(xié)議。鍵控模塊API 288提供用戶策略引擎260和鍵控模塊層之間的接口。過濾器可通過用戶策略引擎260被增加至過濾器模塊294,所述策略引擎260定義了哪些分組服從于一給定的安全性參數(shù)的組。鍵控模塊API提供了一種使其他進(jìn)程調(diào)用鍵控模塊層的服務(wù)以識別匹配的已安裝的過濾器的機(jī)制,所述過濾器包括識別將要應(yīng)用的策略環(huán)境。
參考圖4,現(xiàn)在將描述已安裝的過濾器組282,其可被安裝至過濾器模塊294或者核心策略提供者256。每一個(gè)過濾器310具有多個(gè)字段,包括過濾器Id 321、權(quán)重314、一個(gè)或多個(gè)動(dòng)作316、策略環(huán)境317和一組過濾器條件318。過濾器Id 312為過濾器提供一唯一的標(biāo)示。
權(quán)重字段314包括識別過濾器310的優(yōu)先權(quán)的值。在權(quán)重字段314內(nèi)的值越高,過濾器的優(yōu)先權(quán)越高。過濾器優(yōu)先權(quán)確定由核心策略引擎256或用戶策略引擎將匹配過濾器應(yīng)用于分組的順序?;蛘撸^濾器310被人為地排序且權(quán)重字段314可選擇地被排斥。
過濾器條件318的組確定一分組是否匹配過濾器310。每一個(gè)過濾器條件318包括類型320、數(shù)據(jù)322以及層Id字段Id 324。過濾器條件318的數(shù)量是動(dòng)態(tài)配置的,且過濾器條件318能根據(jù)需要增加或者刪除。
類型320定義了包括在相應(yīng)的數(shù)據(jù)322重的變量的長度和數(shù)量。該結(jié)構(gòu)提供用于預(yù)定義已知變量類型,例如字節(jié)、短、長、8字節(jié)、串、互聯(lián)網(wǎng)協(xié)議版本4(IPv4)地址、互聯(lián)網(wǎng)協(xié)議版本6(IPv6)地址、IPv4地址加掩碼(mask)、IPv6地址加掩碼以及地址范圍。
數(shù)據(jù)字段322包括數(shù)據(jù)匹配類型。例如,如果類型是IPv4地址,數(shù)據(jù)字段322的一可接受的值是一個(gè)32位的數(shù),其范圍表示為帶點(diǎn)的十進(jìn)制數(shù)為00.00.00.00至255.255.255.255。在一些情況下,類型32提供數(shù)據(jù)字段322中的多個(gè)值。地址范圍、IPv4地址加掩碼、IPv6地址加掩碼類型允許兩個(gè)IP地址值,定義IP地址的一開始和一結(jié)尾。為了最大的靈活性,該結(jié)構(gòu)同樣允許用戶定義類型?;蛘撸~外的類型可人為添加至系統(tǒng)結(jié)構(gòu)中。
層Id字段Id字段332被用于分別識別一始發(fā)(originating)層和一來自始發(fā)層的參數(shù)。始發(fā)層和來自始發(fā)層的參數(shù)定義分組參數(shù),即層參數(shù)和數(shù)據(jù)322用來比較的分組環(huán)境。始發(fā)層識別一特定的核心或用戶層。來自始發(fā)層的參數(shù)識別一和始發(fā)層相關(guān)的特定參數(shù)。一個(gè)特定的示例由過濾器條件326說明。類型是IPv4表示數(shù)據(jù)322是一個(gè)32位的IP地址。層Id是“IP”表示32位的數(shù)是一個(gè)IP,即網(wǎng)絡(luò)、層參數(shù)。示例中的字段Id是“Src IP Addr”表示一個(gè)IP層參數(shù),特別是一個(gè)源IP地址。在數(shù)據(jù)字段中提供的IP地址是“123.3.2.1”,表示任何具有該源IP地址的分組符合該過濾器條件并匹配過濾器。
過濾器310中指定的動(dòng)作326是允許、阻止、呼出或者空(null)。如果過濾器310中的動(dòng)作324是允許或者是阻止且分組匹配過濾器310,允許或者阻止動(dòng)作會(huì)返回請求層。允許和阻止動(dòng)作一般用于實(shí)施防火墻策略。如果動(dòng)作316是呼出,策略引擎向指定的呼出模塊258發(fā)布其自身的分類請求,包括全部的分組、層參數(shù)、環(huán)境和對于匹配的過濾器的識別。呼出模塊258在分組上執(zhí)行其程序功能,例如侵入(intrusion)檢測。呼出可返回一動(dòng)作(或者是允許、或者是阻止)至策略引擎,策略引擎返回對于動(dòng)作的回應(yīng)(relay)至請求層。呼出還能夠維持分組環(huán)境,其通過策略引擎256返回請求層。
核心策略引擎或用戶策略引擎也返回一策略環(huán)境317。策略環(huán)境317被用于保存除了防火墻策略以外的策略,例如安全性或者QoS策略。策略環(huán)境可以是任何合適的數(shù)據(jù)結(jié)構(gòu)。例如,策略環(huán)境是一個(gè)64位的數(shù)字,由一被增加到策略環(huán)境317的進(jìn)程解釋。過濾器中的策略環(huán)境可包括實(shí)際的策略或者由系統(tǒng)使用的映射至真正的策略的真正的值。
圖5說明了用于由核心和用戶層以及呼出模塊258維持的分組環(huán)境的數(shù)據(jù)結(jié)構(gòu)的示例。每一個(gè)入口包括一層Id字段Id 332和相應(yīng)的值334。層Id字段Id 332具有和作為過濾器310(圖4)中的過濾器條件318的一部分被提供的層Id字段Id 324一樣的含義。Namely,層Id字段Id 332識別始發(fā)層和來自始發(fā)層的層參數(shù)用于值字段334中的數(shù)據(jù)。值字段334包括一特定的層參數(shù)。
在一個(gè)特定示例中,入口336包括層Id字段Id 332“NDISSrc.MAC Addr”?!癗DIS”表示鏈路層274(圖1)的網(wǎng)絡(luò)驅(qū)動(dòng)器接口規(guī)范實(shí)施?!癝rc.MAC Addr”表示源MAC地址。因此,層Id字段Id 332表示在值字段334中的數(shù)據(jù)是由NDIS(鏈路)層處理的源MAC地址。值字段334包括真正的源MAC地址,一個(gè)實(shí)例是以十六進(jìn)制表示的“00.08.74.4F.22.E5”。
第二個(gè)示例,入口338具有層Id字段Id 332“NDISIF No”。再次識別層為NDIS,但是在這種情況下參數(shù)“IF NO”表示一接口數(shù)量作為特定的NDIS參數(shù)。值字段334包括真正的接口數(shù)量,在這種情況下為2。
第三個(gè)示例,入口340具有層Id字段Id 332“IPDst IP Addr”?!癐P”表示使用IP協(xié)議的網(wǎng)絡(luò)層而“Dst IP Addr”表示一目的地IP地址作為IP層參數(shù)。值字段334包括真正的目的地IP地址“123.3.2.1”。
在描述了基礎(chǔ)(underlying)的防火墻結(jié)構(gòu)后,注意力集中到系統(tǒng)的功能性接口和使用此處描述的基礎(chǔ)防火墻結(jié)構(gòu)執(zhí)行的方法的示例。功能性接口被實(shí)施作為多個(gè)應(yīng)用程序接口(API)。API包括在圖6和圖7中說明的層API 280、過濾器引擎API 266和鍵控模塊API 288。
層API 280幫助核心層和核心策略引擎256之間的數(shù)據(jù)交換。通過擴(kuò)展,用于層API 280的方法也幫助了用戶層282和過濾器模塊294之間的數(shù)據(jù)交換,且被包括作為下面將要描述的鍵控模塊API 288的一部分。如圖示,層API 288包括一分類(classify)方法350、一增加層方法352和一刪除層方法354。
分類方法350被請求層用于向核心策略引擎256或者過濾器模塊288發(fā)送層參數(shù)、有請求層接收的分組以及分組環(huán)境。核心策略引擎256或者過濾器模塊288比較(1)來自請求層的層參數(shù)和(2)在每一個(gè)被分配給請求層的過濾器310中至過濾器條件318的分組環(huán)境入口,以識別匹配的過濾器。下面是分類方法的一個(gè)示例性的實(shí)施。需要理解下列方法被描述為接收或者返回?cái)?shù)據(jù)值。按照公知的編程技術(shù),該方法可以使用數(shù)據(jù)值的指針來代替真正的數(shù)據(jù)值。
<pre listing-type="program-listing">NTSTATUSWFPCIassify(IN ULONG LayerId,IN WFP_INCOMING_VALUES*pInFixedValuesIN FP_INCOMING_CONTEXT_VALUES* pInContextPVOID pPacketOUT WFP_ACTION_TYPEpActionTypeOUT UINT64*pOutContext);</pre>其中下列特征是所陳述(recited)的參數(shù)。
LayerId識別了發(fā)布分類(classification)請求的核心或用戶層,即請求層。參考圖3,LayerId識別層為數(shù)據(jù)流層268、傳輸層270、鏈路層274或者諸如鍵控模塊層的用戶層。如果被增加至系統(tǒng),其他層也是有效的。
pInFixedValues包括由請求層處理的層參數(shù)的子集。pInFixedValues和分組環(huán)境入口一起與過濾器條件相比較以確定分組是否匹配過濾器。包括在pInFixedValues中的用于核心層的默認(rèn)層參數(shù)在下列的表A中被標(biāo)識。沒有用于用戶層的默認(rèn)參數(shù)。需要理解下列的值僅僅是本結(jié)構(gòu)的優(yōu)勢的一個(gè)示例,既其允許層使用任何該層可訪問的數(shù)據(jù)。
表A層默認(rèn)層參數(shù)鏈路層源和目的地MAC地址;接口數(shù)量網(wǎng)絡(luò)層源和目的地IP地址;協(xié)議類型;本地地質(zhì)類型傳輸層源和目的地端口數(shù)量應(yīng)用 解密的應(yīng)用層協(xié)議負(fù)載pInContext包括由請求層接收的環(huán)境數(shù)據(jù)結(jié)構(gòu)330(圖5)。分組環(huán)境被和層參數(shù)結(jié)合使用以識別匹配的分組。
pPacket包括由請求層接收的整個(gè)分組。
pActionType包括返回請求層的動(dòng)作316。返回的動(dòng)作316是在匹配的過濾器中識別的允許、阻止、繼續(xù)或者空,或者是由匹配的過濾器執(zhí)行的呼出模塊。如前面所描述的,動(dòng)作316被用于實(shí)施并識別網(wǎng)絡(luò)防火墻策略。
pOutContext包括策略環(huán)境數(shù)據(jù)。如前面所描述的,策略環(huán)境被用于實(shí)施和IPSec、Qos以及任何其他非基于防火墻的策略相關(guān)的網(wǎng)絡(luò)策略。
增加層352和刪除層354方法被分別用于從管理模塊214增加和刪除一用戶或者核心層。下面是增加層352方法的一個(gè)示例形式。
NTSTATUSAddExtensionLayer(OUT PULONG pLayerId);其中下列特征是所陳述(recited)的參數(shù)。
pLayerId是唯一的返回被增加的層,即執(zhí)行增加層方法的層的層識別值。
在本發(fā)明的一個(gè)是示例中,當(dāng)操作系統(tǒng)初始化時(shí)某些層就被包括在結(jié)構(gòu)中。這些層的示例包括鏈路、網(wǎng)絡(luò)和傳輸層。因此,不要求AddExtensionLayer方法在框架中包括這些層。一LayerSerProperties方法被提供,為策略引擎識別哪些字段是用于該層的有效過濾器條件,怎樣計(jì)算過濾器權(quán)重等等。下列是LayerSerProperties方法的一個(gè)示例形式。
WIN32_ERR WINAPI FwpmLayerSetProperty0(IN FWPM_ENGINE_HANDLE engineHandle,IN const GUID*layerId,IN const FWPM_LAYER_PROPERTY0*layerProperty);其中下列特征是所陳述的參數(shù)。
enginehandle是對于策略引擎的句柄。
layerId識別層。
layerProperty識別包括層字段的層屬性和過濾器權(quán)重的計(jì)算。
下列是刪除層406方法的一個(gè)示例形式。
NTSTATUSRemoveExtensionLayer(ULONG LayerId);LayerId識別將要被刪除的層;即執(zhí)行刪除層方法的層。
呼出API 284便于核心或用戶策略引擎和呼出之間的數(shù)據(jù)交換。類似于層API 280,呼出API 280具有一分來方法。呼出API 284的分類方法356類似于層API 280的分類方法402,除了它還包括匹配過濾器數(shù)據(jù)。下列是用于執(zhí)行呼出的分類方法356的一示例形式。
typedef NTSTATUS(*WFP_CALLOUT_CLASSIFY_FN)(IN const WFP_INCOMING_VALUES*fixedValues,IN WF_INCOMING_CONTEST_VALUEs* wfpContext,IN VOID* packet,IN WFP_FILTER* matchedFilter,OUT WFP_ACTION_TYPE action,OUT UINT64* outContext);其中下列特征是所陳述的參數(shù)。
fixedValues包括從請求層發(fā)送的層參數(shù)。fixedValues和由請求層提供的,在pInFixedValues中作為層API 280中的分類方法350的一部分發(fā)送的數(shù)據(jù)是相同的。
wfpContext包括環(huán)境數(shù)據(jù)結(jié)構(gòu)330(圖5)。該數(shù)據(jù)和由請求層發(fā)送的,在pInContext中發(fā)送作為層API 280中的分類方法350的一部分的數(shù)據(jù)相同。
packet包括由請求層接收的整個(gè)分組。該數(shù)據(jù)和由請求層提供的,在pPacket中發(fā)送作為層API 280中的分類方法350的一部分的數(shù)據(jù)相同。
matchedFilter識別請求呼出的過濾器。一般的,匹配過濾器由初始化呼出API 284的分類方法350的匹配過濾器310的過濾器Id 312識別。
pActionType包括從呼出258返回至核心或用戶策略引擎的動(dòng)作。如果pActionType是允許或阻止,其以由層API 280返回的pAction返回請求層。
pOutContext包括策略環(huán)境數(shù)據(jù),例如安全性或者Qos策略數(shù)據(jù)。
呼出API 408也包括告知(notify)方法358。告知方法358被用于在一過濾器310被增加到安裝的過濾器組282中時(shí)告知一呼出,識別作為其動(dòng)作316中的一個(gè),呼出模塊258。告知向呼出提供一機(jī)會(huì)來獲取任何請求的動(dòng)作,例如分配(allocating)或者去除分配(de-allocating)緩沖,該緩沖將在其被策略引擎256執(zhí)行時(shí)被呼出258使用。下列時(shí)告知方法358的一個(gè)示例形式。
typedef NYSTATUS(*WFP_CALLOUT_NOTIFY_FN)(IN WFP_NOTIFY_ENUM notify(告知)IN WFP_FILTER filter(過濾器));其中下列特征時(shí)所陳述的參數(shù)。
notify包括一表示過濾器是否被增加或刪除的數(shù)字值。例如,值1表示過濾器被增加而值2表示過濾器被刪除。
filter通過唯一的值識別被增加或者是刪除的過濾器。這可通過提供被包括作為過濾器310的一部分的過濾器Id 312而完成。
呼出API還包括一呼出注冊方法360和呼出去注冊方法362以分別增加或者刪除呼出模塊。下列是呼出其注冊方法360的一個(gè)示例形式NTSTATUS WfpRegisterCallout(IN const GUID* calloutId,IN const WFP_CALLOUT*calloutIN const SECURITY_DESCRITOR* sd);其中下列特征是所陳述的參數(shù)。
callout Id提供注冊呼出模塊的唯一的識別。
callout提供任何呼出指定的信息,例如驅(qū)動(dòng)器服務(wù)名稱、設(shè)備名稱以及指向呼出分類和告知功能的指針。
sd提供用于呼出的安全性描述器(descriptor)。安全性描述器識別哪一個(gè)進(jìn)程可讀并刪除呼出。
下列是呼出去注冊方法362的一個(gè)示例NTSTATUS WfpDeregisterCallout(IN cost GUID* calloutId);其中下列特征是所陳述的參數(shù)。
callout Id是將要?jiǎng)h除的呼出的唯一Id。
過濾器引擎API 266便于用戶引擎260和核心策略256引擎之間的數(shù)據(jù)交換。如圖所示,過濾器引擎API 266包括一增加過濾器方法364、一刪除過濾器方法366以及一Enum層方法368。
增加過濾器364和刪除過濾器366方法被分別用于增加一新的過濾器至安裝的過濾器組282組中并從安裝的過濾器組282中刪除一現(xiàn)存的過濾器。下列是增加過濾器方法364的一個(gè)示例形式NTSTAUTUSAddFilterTOLayer(ULONG LayerId,WFP_FILTER*pFilter);其中下列特征是所陳述的參數(shù)。
LayerId識別分配給過濾器的層。
pFilter是將要被增加至安裝的過濾器組282的過濾器310。
下列是刪除過濾器方法366的一個(gè)示例形式NTSTATUSDeleteFilterFromLayer(ULONG LayerId,ULONG FilterId
);其中下列特征是所陳述的參數(shù)。
LayerId識別過濾器分配給的層。
pFilter是將要從安裝的過濾器組中刪除的過濾器。
Enum層方法368提供用于用戶策略引擎260的機(jī)制以識別所有匹配一組標(biāo)準(zhǔn)的過濾器。這允許管理API來識別向沖突的過濾器用于過濾器仲裁(arbitration)和沖突解決。下列是Enum層方法368的一個(gè)示例形式。
IndexStartEnum(PWFP_ENUM_TEMPLATE pEnumTemplate,OUT PULONG pMatchCount,OUT PWFP_ENUM_HANDLE pEnumHandle)其中下列特征是所陳述的參數(shù)。
pEnumTemplate包括定義將要返回的數(shù)據(jù)結(jié)構(gòu)。例如,其包括用于將要返回的過濾器的必須匹配的過濾器條件的參數(shù)。
pMatchCount包括基于指定的pEum模板(template)的過濾器的數(shù)量。
pEnumHandle包括匹配的過濾器入口的參數(shù)。
鍵控模塊API 288提供用戶模式鍵控模塊層282和用戶策略引擎260之間的接口。鍵控模塊API 288包括一IPSec SA獲得方法370、一終止告知方法372以及一IPSec SA獲得完成方法374、一鍵控模塊注冊方法376、一鍵控模塊去注冊方法378、一IPSec界內(nèi)(inbound)獲得SPI方法380、一增加界內(nèi)SA方法382、一增加界外(Outbound)SA方法384、一界內(nèi)SA終止方法386以及一鍵控模塊初始方法388。鍵控模塊API 288也可包括先前描述的用于層API的方法。
鍵控模塊API被用于便于公知的安全性協(xié)議的使用。例如由IPSec定義的,由一初始化計(jì)算機(jī)、用戶或者服務(wù)以及一回應(yīng)計(jì)算機(jī)、用戶或者服務(wù)使用的。IPSec包括諸如AH和ESP的協(xié)議。ESP協(xié)議使用密碼機(jī)制的認(rèn)證和加密協(xié)議,提供數(shù)據(jù)的完整性、源認(rèn)證和保密性。AH協(xié)議是使用分組頭部中的哈希(hash)署名的認(rèn)證協(xié)議,確認(rèn)分組數(shù)據(jù)的完整性和發(fā)送者的認(rèn)證。
IKE協(xié)議提供一用于一初始計(jì)算機(jī)和一回應(yīng)計(jì)算機(jī)協(xié)商使用AH和ESP協(xié)議的安全性設(shè)置的方法。經(jīng)協(xié)商的安全性設(shè)置形成一稱為安全性結(jié)合(SA)的的數(shù)據(jù)結(jié)構(gòu)。SA定義了下列參數(shù)認(rèn)證算法、加密算法、密鑰以及密鑰的生存時(shí)間,這些參數(shù)被ESP或者AH用于保護(hù)IP分組的環(huán)境。由于ESP和AH要求一SA,一示例性的方法是在ESP或者AH協(xié)議被初始和回應(yīng)計(jì)算機(jī)使用之前使用IKE協(xié)商?;蛘?,SA可人工地創(chuàng)建。一給出的SA由一被稱為安全性參數(shù)索引(SPI)的值識別。
初始和回應(yīng)計(jì)算機(jī)都包括一IPSec驅(qū)動(dòng)器和分類模塊,它們基于IPSec策略確定在初始和回應(yīng)計(jì)算機(jī)之間發(fā)送的數(shù)據(jù)是否要求加密或者認(rèn)證。IPSec策略是一組過濾器,定義網(wǎng)絡(luò)設(shè)備怎樣使用IPSec并且包括過濾器列表、認(rèn)證方法和其他信息。在本發(fā)明的一個(gè)實(shí)施例中,IPSec策略由包括在核心策略引擎或者過濾器模塊294中的一組安裝的過濾器定義。應(yīng)用于一分組的策略是由喚醒鍵控模塊層定義,該層使用分類方法以識別匹配濾波器。
IPSec SA獲取方法370由用戶策略引擎260(通過一客戶代理)調(diào)用以傳輸一驅(qū)動(dòng)器請求或一外部初始請求至鍵控模塊層。鍵控模塊層返回該調(diào)用并異步進(jìn)行該協(xié)商。當(dāng)鍵控模塊層完成該協(xié)商時(shí),鍵控模塊層調(diào)用IPSec SA獲取完成方法374以告知用戶引擎協(xié)商已完成。下列是IPSec SA獲取方法的一個(gè)示例形式。
typedef WIN32_ERR(*PROCESS_IPSEC_SA_ACQUIRE0)(IN FWP_IPSEC_ACQUIRE_CONTEXT0ipsecContext,IN const FWP_IPSEC_SA_ACQUIRE0* acquire,IN FWP_IPSEC_SI inboundSAspi);其中下例特征是所陳述的參數(shù)。
ipsecContext是使用被增加的SA的對于鏈路請求的操作。
acquire包括按照諸如IKE的公知的協(xié)議中用于協(xié)商SA所需要的信息。
inboundSAapi包括一用于一界內(nèi)SA的SPI。
終止告知方法372被調(diào)用用于傳輸一終止告知至增加界內(nèi)SA的鍵控模塊層。下列是終止告知方法的一個(gè)示例形式typedefVOID(*PROCESS_IPSEC_SA_EXPIRE0)(IN const FWP_IPSEC_SA_EXIRE_NOTIFY0* expireNotify);其中下列特征是所陳述的參數(shù)。
expireNotify包括識別終止SA的信息。例如,在界外SA的情況中,SPI被提供。
IPSec SA獲取完成方法374被鍵控模塊層調(diào)用以在其完成協(xié)商并增加所有的SA或者在其出現(xiàn)一錯(cuò)誤之后關(guān)閉用戶策略引擎的環(huán)境。在該方法被執(zhí)行后,鍵控模塊層不將ipsecContext重新用于任何其他的API方法。下列是IPSec SA獲取完成方法的一個(gè)示例形式。
WIN32 ERRFwpIPSecSAAcruireComplete0(IN FWPM_ENGINE_HANDLE engineHandleIN FWP_IPSEC_ACQUIRE_CONTEXT0 ipsecContextIN const FWP_IPSEC_NEGOTIATION_STATUS0*status);其中下列特征是所陳述的參數(shù)。
engingHandle提供對于用戶策略引擎260的操作。
ipsenContext是由用戶策略引擎與IPSec請求方法一起傳輸?shù)沫h(huán)境。
status提供SA協(xié)商的狀態(tài)和其他細(xì)節(jié)。如果請求是通過FwpKeyingModuleInitiate0在外部初始化的,狀態(tài)由用戶引擎260返回。
鍵控模塊注冊方法376被鍵控模塊層調(diào)用以使用用戶策略引擎260注冊并傳輸其功能指針。下列是鍵控模塊注冊方法的一個(gè)示例形式。
WIN32_ERRFwKeyingModuleRegister0(IN FWPM_ENGINE_HANDLEengineHandle,IN const GUID* keyingModuleID,IN const FWP_KEYING_MODULE_INFO0*keymodInfo);其中下列特征是所陳述的參數(shù)。
engineHandle提供對于用于防火墻引擎260的操作。
keyingModuleID適用于鍵控模塊層的唯一的ID。
keymodInfo包括關(guān)于鍵控模塊層的注冊信息,例如處理IPSec SA獲取和處理IPSec SA終止功能的指針。
鍵控模塊去注冊方法378被鍵控模塊層調(diào)用以從用戶策略引擎260中去注冊鍵控模塊。下列是鍵控模塊去注冊方法的一個(gè)示例。
WIN32_ERRFwpKeyingModuleDeregister0(IN FWPM_ENGINE_HANDLE engineHandle,IN const GUID*keyingModuleID);其中下列特征是所陳述的參數(shù)。
engingHandle是對于用于策略引擎260的操作。
keyingModuleID是鍵控模塊層的唯一的ID。
IPSec Inbound Get SPI方法380被鍵控模塊層調(diào)用以獲得SPI用于一新的界內(nèi)SA。IPSec Inbound Get SPI方法380一般在鍵控模塊層在一回應(yīng)網(wǎng)絡(luò)設(shè)備中執(zhí)行時(shí)被使用。下列是IPSec Inbound Get SPI方法的一個(gè)示例形式。
WIN32_ERRFwpIPSecSAInboundGetSi0(
IN FWPM_ENGINE_HANDLE engineHandle,IN const FW_IPSEC_TRAFFIC0*ipsecTrafficDescriptionIN const FW_IPSEC_UDP_ENCAP0* udpEncapInfoOUT FWP_IPSEC_SI* inboundSpi);其中下列特征是所陳述的參數(shù)。
engineHandle是對于用于防火墻引擎260的操作。
ipsecTrafficDescription是一個(gè)用于創(chuàng)建一界內(nèi)初期(larval)SA的5tuple的描述。5個(gè)tuple包括源和目的地IP地址、源和目的地端口以及傳輸層協(xié)議類型。
udpEncapInfo是用于創(chuàng)建初期(larval)SA的UDP壓縮數(shù)據(jù)。UDP壓縮是公知的用于將按照安全性協(xié)議格式化的數(shù)據(jù)遷入一未加密的UDP分組中的方法。
inboundSpi是用于界內(nèi)SA的SPI。
增加界內(nèi)SA方法382被鍵控模塊層調(diào)用以增加一界內(nèi)SA,即更新初期SA。用戶策略引擎260使用在SA中的SPI以映射該調(diào)用至內(nèi)部狀態(tài),并輸入輸出控制(input and output control,ioctl)SA向下至IPSec驅(qū)動(dòng)器。下列是增加界內(nèi)SA方法的一示例形式。
WIN32_ERRFwpIPSecSAInboundAdd0(IN FWPM_ENGINE_HANDLE engineHandle,IN const FW_IPSEC_SA_SRUCT0* inboundSA);其中下列特征是所陳述的參數(shù)。
engineHandle是對于用戶策略引擎的操作。
inboundSA包括界內(nèi)的SA。
增加界外SA方法384被鍵控模塊層調(diào)用以增加一界外SA。用戶策略引擎使用一界內(nèi)SPI參數(shù)以映射該調(diào)用至其內(nèi)部狀態(tài),并輸入輸出控制(ioctl)SA向下至IPSec驅(qū)動(dòng)器。下列是增加界外SA方法的一個(gè)示例形式WIN32_ERRFwpIPSecSAOutboundAdd0(IN FWPM_ENGINE_HANDLE engineHandle,IN FW_IPSEC_SPIinboundSpiIN const FW_IPSEC_SA_STRUCT0* outboundSA);其中下列特征是所陳述的參數(shù)。
engineHandle是對于用于防火墻引擎260的操作。
onboundSpi是用于界內(nèi)SA的SPI,具有以配對的(paired)的界外SA。
outboundSA包括界外SA。
界內(nèi)SA終止方法386被鍵控模塊層調(diào)用以終止先前增加的界內(nèi)SA。下列是界內(nèi)SA終止方法386的一示例形式。
WIN32_ERRFwpIPSecSAInboundExpire0(IN FWPM_ENGINE_HANDLEengineHandle,IN const FW_IPSEC_SA_EXPIRE0*exire);其中下列特征是所陳述的參數(shù)。
engineHandle是對于用戶防火墻引擎260的操作。
expire包括用于將要終止的SA的數(shù)據(jù)。
鍵控模塊初始方法388被類似于RAS、Winsock API等等公知的外部應(yīng)用調(diào)用以初始化鍵控模塊層并在應(yīng)用該是設(shè)置其網(wǎng)絡(luò)話務(wù)之前設(shè)置SA。用戶引擎260異步判決(pend)PRC調(diào)用,從IPSec驅(qū)動(dòng)器獲得SPI并傳輸該獲得(acquire)至合適的鍵控模塊。當(dāng)鍵控模塊層調(diào)用FwpIPSecSAAcquireComplete0時(shí),用戶防火墻引擎完成異步RPC和協(xié)商狀態(tài)。下列是鍵控模塊初始方法的一個(gè)示例形式。
WIN32_ERRFwpKeyingModuleInitiate0(IN FWPM_ENGINE_HANDLE engineHandle,IN const FW_IPSEC_SA_ACQUIRE0*acquire,IN HANDLE waitEvent,OUT FWP_IPSEC_NEGOTIATIN_STATUS0* negotiationStatus);其中下列特征是所陳述的參數(shù)。
engineHandle是對于用戶策略引擎260的操作。
acquire包括協(xié)商SA所需要的數(shù)據(jù)。
waitEvent是對于一事件的操作,該事件在協(xié)商狀態(tài)存在是被觸發(fā)。如果一客戶,即調(diào)用的外部應(yīng)用程序沒有興趣等待協(xié)商結(jié)束,其可設(shè)置該參數(shù)為空。在內(nèi)部,客戶代理選擇性地傳輸該事件至RPC并請求它在異步RPC調(diào)用完成時(shí)設(shè)置該事件。
negotiationStatus包括協(xié)商的結(jié)果。如果waitEvent為空,則negotiationStatus也為空。此外,negotiationStatus保持有效直至waitEvent被觸發(fā)。
圖8說明了用于尋找一分組的匹配濾波器并返回該動(dòng)作和/或策略環(huán)境至一請求層的方法。如圖示,第一請求層404通過發(fā)布一請求至策略引擎400來獲得網(wǎng)絡(luò)策略。策略引擎400是核心策略引擎256或者具有過濾器模塊294的用戶策略引擎260。策略引擎400包括安裝的過濾器402,定義多個(gè)網(wǎng)絡(luò)策略,例如安全性、QoS以及防火墻策略。
第一請求層404可以是例如鍵控模塊層的用戶策略模式層282或者例如網(wǎng)絡(luò)棧中的一個(gè)層的核心層254。第一請求層404通過層API與策略引擎400進(jìn)行通信。
請求408,例如一使用分類方法的分類請求,包括層參數(shù)410、分組環(huán)境412和由請求層404接收的全部的分組414。策略引擎400使用層參數(shù)410和分組環(huán)境412以從安裝的過濾器402中識別任何匹配的濾波器。一般,策略引擎400按照由匹配過濾器指定的權(quán)重按順序應(yīng)用過濾器。策略引擎400接下來返回值416,其包括一動(dòng)作418和策略引擎420。策略418被用于返回諸如允許或者阻止的防火墻策略。策略環(huán)境420被用于返回諸如安全性或者QoS策略的其他策略。在過濾器不包括對應(yīng)的策略時(shí),返回的動(dòng)作418和策略環(huán)境420被指示為無(none)或者是空(null)。
第一請求層404可與第二請求層406互動(dòng)(interact)。這在請求層是網(wǎng)絡(luò)棧中的一核心層254時(shí)發(fā)生。第一請求層404可使用由請求層處理的層參數(shù)更新分組環(huán)境422。第一請求層404還可以按照一層協(xié)議處理分組。請求層傳輸經(jīng)修改的分組環(huán)境422至第二請求層406。請求層還在分組424被按照層協(xié)議處理之后傳輸分組424。例如,如果第一請求層404實(shí)施IP協(xié)議,就按照IP協(xié)議處理。第一請求層然后傳輸分組至第二請求層406,該層對于界內(nèi)的分組是一傳輸層而對于界外的分組是一鏈路層。第二請求層406接下來可以通過發(fā)送一分類請求并接收返回的動(dòng)作和策略環(huán)境值來重復(fù)該處理。
圖9說明了一方法,其被標(biāo)記為500,該方法由請求層使用以獲得可用的網(wǎng)絡(luò)策略,例如用于一分組的動(dòng)作和策略環(huán)境。在步驟502,請求層從一先前的層或者另一個(gè)進(jìn)程或者程序模塊接收全部的分組和對應(yīng)的分組。
在步驟504請求層識別層參數(shù)。層參數(shù)是和分組環(huán)境一是使用的,用于識別匹配的過濾器的參數(shù)。默認(rèn)的層參數(shù)在前面的表A中被描述,且被包括在分類方法350的pInFixedValues中。
在步驟506,請求層向核心層或者用戶策略引擎發(fā)布分類請求。發(fā)布分類請求的一示例方法參考層API 280中的分類方法350被描述。
作為對分類請求的回應(yīng),一動(dòng)作以及策略環(huán)境被返回請求層,如步驟508所示。請求層基于返回的動(dòng)作確定是否在步驟508丟棄分組。如果策略引擎返回阻止作為動(dòng)作,則請求層丟棄分組。如果策略引擎返回的動(dòng)作是沒有匹配的過濾器被找到,則請求層同樣丟棄分組。如前面所描述的,動(dòng)作還被用于實(shí)施防火墻策略。如果匹配過濾器不包括防火墻策略,返回的動(dòng)作可能是無或者空。
步驟510、512、514通常僅僅在請求層是網(wǎng)絡(luò)棧中的一層是發(fā)生,但是會(huì)在用戶模式層選擇性地出現(xiàn)。如果返回的動(dòng)作是允許,進(jìn)一步的分組處理會(huì)出現(xiàn)。在步驟510,請求層修改分組環(huán)境以包括層信息,一般是與包括在分類請求中作為層參數(shù)的信息是相同的數(shù)據(jù)類型。因此,表A(上述)不僅識別層參數(shù)還是被由每一個(gè)層增加值分組環(huán)境的默認(rèn)信息。分組環(huán)境被維持在一諸如參考圖5描述的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。
在步驟512,請求層按照實(shí)施用于該層的協(xié)議處理分組。這樣的處理是熟知的,且不需要在此詳細(xì)地說明。示例性的協(xié)議實(shí)施包括用于應(yīng)用層的HTTP、FTP、SMTP以及RPC,用于傳輸層的TCP和UDP,用于網(wǎng)絡(luò)層的IP層以及用于鏈路層的NDIS。
在步驟514,請求層傳輸按照層協(xié)議處理的分組和經(jīng)修改的分組環(huán)境至下一層。處理500由每一層重復(fù)并在分組在一系列層,例如在網(wǎng)絡(luò)棧中的層中的所有層傳輸完成之前,或者在分組被層中的一個(gè)丟棄前繼續(xù)。
參考圖10,現(xiàn)在將描述一方法520,由核心或者用戶策略層使用以識別匹配過濾器并返回動(dòng)作和策略環(huán)境至請求層。在步驟522,策略引擎通過合適的API從請求層接收分組、層參數(shù)以及分組環(huán)境。
在步驟524,策略引擎識別一個(gè)或多個(gè)匹配過濾器。在本發(fā)明的一個(gè)實(shí)施例中,過濾器被分配給一特定的請求層。如果過濾器被分配給請求層并且分組參數(shù)匹配所有的過濾器條件318(圖5),策略請求層僅僅是試圖識別該過濾器為匹配的。如先前所描述的,分組參數(shù)包括來自請求層和分組環(huán)境的層參數(shù)。在識別了所有的匹配過濾器后,策略引擎基于在每一個(gè)匹配過濾器中的權(quán)重字段來為過濾器排序?;蛘?,過濾器沒有被分配給特定的請求層且所有的過濾器都可能是匹配過濾器。
在步驟526中,策略引擎應(yīng)用還沒有被應(yīng)用的過濾器中具有最高權(quán)重字段314的過濾器。特別的,策略引擎識別在過濾器和策略環(huán)境中指定的動(dòng)作316。如果動(dòng)作316指定一呼出模塊,策略引擎256執(zhí)行該呼出。呼出可返回一動(dòng)作至策略引擎。
如果動(dòng)作沒有呼出(callout),或者在呼出被執(zhí)行之后,策略引擎從匹配的或者由呼出識別的過濾器返回一相關(guān)的動(dòng)作和策略環(huán)境至請求層,如步驟536所示?;蛘撸呗砸娴却龍?zhí)行步驟536,即返回動(dòng)作直至所有的匹配過濾器被應(yīng)用。
在步驟534,策略引擎確定如果存在任何額外的匹配過濾器。如果沒有,進(jìn)程終止。如果額外的匹配過濾器存在,進(jìn)程返回步驟526應(yīng)用次高優(yōu)先權(quán)的過濾器。進(jìn)程持續(xù)進(jìn)行直至所有的匹配過濾器被應(yīng)用?;蛘?,在一終止動(dòng)作被識別用于一分組時(shí),進(jìn)程終止。動(dòng)作類型可被定義為終止動(dòng)作。默認(rèn)的,允許和阻止都是終止動(dòng)作。如果沒有匹配的過濾器被識別用于分組,策略引擎告知請求層沒有匹配的過濾器被發(fā)現(xiàn)。
圖11說明了由用戶策略260使用的進(jìn)程,用以增加新的過濾器至安裝的過濾器組中。過濾器可被安裝進(jìn)入核心策略引擎256或者過濾器模塊294在步驟542,用戶策略引擎接收來自策略提供者262中的一個(gè)的策略。策略提供者包括已知的進(jìn)程,例如LIPS,GUIs等等。如果需要,用戶策略引擎通過以過濾器條件、動(dòng)作合策略環(huán)境的形式來定義策略從而以過濾器的形式安置(place)策略。
在步驟544,過濾器由用戶策略引擎分配一權(quán)重值。權(quán)重值是由策略提供者分配的,例如,通過策略提供者GUI由用戶人工地分配?;蛘?,用戶策略引擎自動(dòng)計(jì)算權(quán)重值。核心策略引擎256使用任何合適的方法來計(jì)算權(quán)重。例如,具有比較特定過濾期條件的過濾器被賦予比較少特定的過濾器更高的權(quán)重值。具有比較特定的過濾器具有匹配較少數(shù)量的潛在分組的過濾條件。例如,包括一單獨(dú)IP地址作為其過濾器條件的過濾器比包括一IP地址范圍作為其過濾器條件的過濾器更為特定。
在步驟548,用戶策略引擎260將新的過濾器和分配給同一層的每一個(gè)安裝的過濾器進(jìn)行比較以識別任何沖突。對于沖突,過濾器必須共享將要作用于相同的分組上并識別出不同的動(dòng)作的同一組過濾器條件。例如,如果用于安裝的過濾器條件是在范圍123.4.0.0至123.4.0.100之間的IP地址相關(guān)于允許的動(dòng)作,而新的過濾器條件是具有范圍123.4.0.50至123.4.0.150之間的源IP地址相關(guān)于一阻止動(dòng)作,則在IP地址范圍123.4.0.50至123.4.0.100之間新的和已安裝的過濾器有重復(fù)的過濾器條件。
如果過濾器沖突,用戶策略引擎260使用任何合適的技術(shù)來解決該沖突,如步驟552所示。一種用于計(jì)算過濾器權(quán)重且識別并解決過濾器沖突的方法在題為“Method for Managing Network Filter Based Policy”,代理人案卷號221037的未決的美國專利申請中描述。新的過濾器可被增加至已安裝的過濾器組作為沖突解決進(jìn)程的一部分。如果新的過濾器不與已安裝的過濾器組沖突,新的過濾器被增加至已安裝的過濾器組,或者用戶策略引擎或核心策略引擎中,如步驟550所示。
如果新的過濾器被載入已安裝的過濾器組中,任何由該過濾器執(zhí)行的呼出,即,包括在過濾器中作為相關(guān)動(dòng)作的標(biāo)記被告知,如步驟554所示。告知該呼出的一示例方法結(jié)合作為呼出API 284(圖6)的一部分描述的告知方法412而被描述。
這里所陳述的所有的參考,包括通過引用而將它們的整體結(jié)合于此。
本發(fā)明的原理可被應(yīng)用于很多可能的實(shí)施例,應(yīng)該認(rèn)識到這里參考附圖所描述的實(shí)施例僅僅是為了說明而不應(yīng)該限制本發(fā)明的范圍。例如,熟悉本領(lǐng)域的技術(shù)人員將認(rèn)識到在實(shí)施例中以軟件形式示出的元件也可以以硬件的形式實(shí)現(xiàn),反之亦然,或者說明的實(shí)施例可進(jìn)行安排和細(xì)節(jié)上的修改而不脫離本發(fā)明的原理之外。本發(fā)明可被用于管理和執(zhí)行這些以及額外的處理的過濾器和基于過濾器的策略。因此,此處描述的本發(fā)明預(yù)期了所有的符合所附的權(quán)利要求及其等價(jià)說明的實(shí)施例。
權(quán)利要求
1.一種用于集成多個(gè)基于過濾器的策略的框架,所述策略將被應(yīng)用于至少包括防火墻策略和安全性策略的數(shù)據(jù)分組,該框架包括一組用于識別至少一個(gè)和分組相關(guān)的參數(shù)的層進(jìn)程;與所述層進(jìn)程組通信的一策略引擎;以及保存在所述策略引擎中的一組過濾器,所述過濾器組中的每一個(gè)具有過濾器條件、識別所述防火墻策略的動(dòng)作以及識別所述安全性策略的策略環(huán)境。
2.如權(quán)利要求1所述的框架,其特征在于,所述多個(gè)基于過濾器的策略還包括一服務(wù)質(zhì)量策略,其識別將要被應(yīng)用于分組的通信設(shè)置,所述服務(wù)質(zhì)量策略由所述過濾器組中的策略環(huán)境定義。
3.如權(quán)利要求1所述的框架,還包括在所述層進(jìn)程組中的一請求層進(jìn)程,發(fā)送至少一個(gè)參數(shù)至所述策略引擎且所述策略引擎從具有與至少一個(gè)參數(shù)相匹配的過濾器條件的過濾器組中識別匹配的過濾器,所述策略引擎把所述防火墻策略和安全性策略返回至所述請求層。
4.如權(quán)利要求3所述的框架,其特征在于,所述請求層是一個(gè)鍵控模塊層,而在所述匹配過濾器中的安全性策略識別一用于按照密鑰協(xié)商協(xié)議協(xié)商安全性關(guān)聯(lián)的策略。
5.如權(quán)利要求4所述的框架,其特征在于,所述至少一個(gè)參數(shù)是多個(gè)參數(shù)且所述多個(gè)參數(shù)包括源和目的地IP地址、源和目的地端口以及一協(xié)議類型。
6.如權(quán)利要求4所述的框架,其特征在于,所述密鑰協(xié)商協(xié)議是IKE協(xié)議。
7.如權(quán)利要求3所述的框架,其特征在于,所述請求層還發(fā)送分組環(huán)境而所述策略引擎還從所述分組環(huán)境中識別所述匹配過濾器。
8.一種用于確定將要被應(yīng)用于一層進(jìn)程中的分組的多個(gè)網(wǎng)絡(luò)策略的方法,包括由所述層進(jìn)程識別與所述分組相關(guān)的一組參數(shù);由所述層進(jìn)程發(fā)送一請求以識別將要被應(yīng)用于所述分組的所述網(wǎng)絡(luò)策略;所述請求包括與所述分組相關(guān)的所述參數(shù);以及在所述層進(jìn)程處接收一響應(yīng),其包括識別第一網(wǎng)絡(luò)策略的第一策略值和識別第二網(wǎng)絡(luò)策略的第二策略值。
9.如權(quán)利要求8所述的方法,其特征在于,所述層進(jìn)程是一用戶層。
10.如權(quán)利要求8所述的方法,其特征在于,所述層進(jìn)程是一核心層。
11.如權(quán)利要求8所述的方法,其特征在于,所述第一網(wǎng)絡(luò)策略是一防火墻策略而所述第一策略值是一動(dòng)作值。
12.如權(quán)利要求11所述的方法,其特征在于,所述動(dòng)作值是允許或阻止中的一個(gè)。
13.如權(quán)利要求8所述的方法,其特征在于,所述第二網(wǎng)絡(luò)策略是定義密鑰協(xié)商協(xié)議參數(shù)的安全性策略。
14.一種用于在一網(wǎng)絡(luò)設(shè)備中維持多個(gè)網(wǎng)絡(luò)策略的方法,包括把一組過濾器安裝至一策略引擎中,所述過濾器中的每一個(gè)包括一組過濾器條件;識別第一網(wǎng)絡(luò)策略的第一策略值和識別第二網(wǎng)絡(luò)策略的第二策略值。
15.如權(quán)利要求14所述的方法,其特征在于,所述第一網(wǎng)絡(luò)策略是防火墻策略而所述第二網(wǎng)絡(luò)策略是安全性策略。
16.如權(quán)利要求15所述的方法,其特征在于,所述安全性策略是IPSec策略。
17.如權(quán)利要求15所述的方法,其特征在于,所述第一策略值是一動(dòng)作而所示第二策略值是一策略環(huán)境。
18.如權(quán)利要求14所述的方法,還包括由策略引擎從過濾器組中識別一匹配過濾器,所述過濾器組包括與所述多個(gè)網(wǎng)絡(luò)策略將要應(yīng)用的分組相匹配的過濾器條件;以及在所述分組上至少執(zhí)行所述第一網(wǎng)絡(luò)策略。
19.如權(quán)利要求14所述的方法,其特征在于,所述安裝所述過濾器組的步驟在一操作系統(tǒng)用戶模式中被執(zhí)行。
20.如權(quán)利要求14所述的方法,其特征在于,所述安裝所述過濾器組的步驟在一操作系統(tǒng)核心模式中被執(zhí)行。
21.如權(quán)利要求14所述的方法,其特征在于,所述多個(gè)策略包括防火墻策略、安全性策略和多個(gè)服務(wù)質(zhì)量策略。
22.如權(quán)利要求14所述的方法,其特征在于,所述過濾器條件組可動(dòng)態(tài)地配置,使得過濾器條件按照期望的策略被增加或者刪除。
23.一種其上保存了定義過濾器的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),包括第一組數(shù)據(jù),包括定義匹配分組的一組過濾器條件;第二組數(shù)據(jù),包括第一網(wǎng)絡(luò)策略;以及第三組數(shù)據(jù),包括第二網(wǎng)絡(luò)策略,其中所述第一網(wǎng)絡(luò)策略和所述第二網(wǎng)絡(luò)策略不同。
24.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述過濾器條件組適用于于包括多個(gè)可動(dòng)態(tài)配置的過濾器條件。
25.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述過濾器條件組包括一數(shù)據(jù)類型和與所述數(shù)據(jù)類型匹配的相應(yīng)數(shù)據(jù)。
26.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述第一網(wǎng)絡(luò)策略是防火墻策略。
27.如權(quán)利要求26所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述第二網(wǎng)絡(luò)策略是服務(wù)質(zhì)量策略。
28.如權(quán)利要求26所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述第二網(wǎng)絡(luò)策略是安全性策略。
29.如權(quán)利要求26所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)還包括識別所述過濾器的優(yōu)先權(quán)的過濾器權(quán)重。
30.一種用于執(zhí)行計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒體,所述指令便于一用于集成多個(gè)基于過濾器的策略的框架,所述策略將被應(yīng)用于至少包括防火墻策略和安全性策略的數(shù)據(jù)分組,該框架包括一組用于識別和分組相關(guān)的至少一個(gè)參數(shù)的層進(jìn)程;與所述層進(jìn)程組通信的一策略引擎;以及保存在所述策略引擎中的一組過濾器,所述過濾器組中的每一個(gè)過濾器都具有過濾器條件、識別所述防火墻策略的動(dòng)作以及識別所述安全性策略的策略環(huán)境。
31.如權(quán)利要求30所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述多個(gè)基于過濾器的策略還包括一服務(wù)質(zhì)量策略,其識別將要被應(yīng)用于分組的通信設(shè)置,所述服務(wù)質(zhì)量策略由所述過濾器組中的策略環(huán)境定義。
32.如權(quán)利要求30所述的計(jì)算機(jī)可讀媒質(zhì),還包括在所述層進(jìn)程組中的一請求層進(jìn)程,發(fā)送至少一個(gè)參數(shù)至所述策略引擎且所述策略引擎從具有與所述至少一個(gè)參數(shù)相匹配的過濾器條件的過濾器組中識別匹配的過濾器,所述策略引擎把所述防火墻策略和安全性策略返回至所述請求層。
33.如權(quán)利要求32所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述請求層是一個(gè)鍵控模塊層,而在所述匹配過濾器中的安全性策略識別一用于按照密鑰協(xié)商協(xié)議協(xié)商一安全性關(guān)聯(lián)的策略。
34.一種用于執(zhí)行計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),所述指令用于確定將要被應(yīng)用于一層進(jìn)程中的一分組多個(gè)網(wǎng)絡(luò)策略,包括由所述層進(jìn)程識別與所述分組相關(guān)的一組參數(shù);由所述層進(jìn)程發(fā)送一請求以識別將要被應(yīng)用于所述分組的所述網(wǎng)絡(luò)策略;所述請求包括相關(guān)于所述分組的所述參數(shù);以及在所述層進(jìn)程處接收一響應(yīng),其包括識別第一網(wǎng)絡(luò)策略的第一策略值和識別第二網(wǎng)絡(luò)策略的第二策略值。
35.一種用于執(zhí)行計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),所述指令用于在一網(wǎng)絡(luò)設(shè)備中維持多個(gè)網(wǎng)絡(luò)策略,包括把一組過濾器安裝至一策略引擎中,所述過濾器中的每一個(gè)包括一組過濾器條件;識別第一網(wǎng)絡(luò)策略的第一策略值和識別第二網(wǎng)絡(luò)策略的第二策略值。
36.如權(quán)利要求35所述的計(jì)算機(jī)可讀媒質(zhì),還包括由一策略引擎從過濾器組中識別一匹配過濾器,所述過濾器組包括與所述多個(gè)網(wǎng)絡(luò)策略將要應(yīng)用的分組相匹配的過濾器條件;以及在所述分組上至少執(zhí)行所述第一網(wǎng)絡(luò)策略。
37.如權(quán)利要求35所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述過濾器條件組可動(dòng)態(tài)配置,使得過濾器條件按照期望的策略被增加或者刪除。
全文摘要
公開了一種用于在網(wǎng)絡(luò)設(shè)備中管理和實(shí)施多個(gè)網(wǎng)絡(luò)策略的方法和系統(tǒng)。多個(gè)策略中的每一個(gè)由一個(gè)或多個(gè)過濾器定義。過濾器被安裝在一策略引擎中。一層通過發(fā)送一請求至策略引擎來識別將要被用于一分組的網(wǎng)絡(luò)策略。策略引擎接下來把策略返回至請求層。該方法和系統(tǒng)可用于實(shí)施一可編程的、基于主機(jī)的、分布式的認(rèn)證防火墻,它能在幾個(gè)協(xié)議層應(yīng)用安全性和其他策略。
文檔編號G06F21/20GK1574791SQ20041004884
公開日2005年2月2日 申請日期2004年6月7日 優(yōu)先權(quán)日2003年6月6日
發(fā)明者B·D·斯旺德, W·H·迪克松 申請人:微軟公司