用于集成多个网络策略的方法和框架的制作方法

文档序号:6407208阅读:141来源:国知局
专利名称:用于集成多个网络策略的方法和框架的制作方法
技术领域
本发明一般涉及计算机系统和网络安全。更具体地说,本发明涉及一种将多个网络策略集成到一网络设备中的一单独框架中的方法。
背景技术
网络协议被设计为帮助网络设备之间通过一数据的开放交换的通信。数据的开放交换大大增强了利用网络设备来完成任务的应用,但它也造成了问题,因为网络协议不是被设计用于,且一般不提供网络安全。连接(couple)至公共和私有网络,诸如局域网(LAN)、广域网(WAN)、内联网(intranet)和互联网(internet)的计算机对于来自直接或间接连接到网络的其他网络设备的恶意攻击显得脆弱。这些恶意攻击包括偷窃数据、拒绝服务(DOS)攻击、繁殖计算机病毒,等等。
许多方法已被开发以保护网络设备免受恶意攻击,其通常是通过实施一个或多个网络策略来实现。一种网络策略是一安全策略,例如由互联网协议安全(IPSec)组提供的安全策略。IPSec组提供了诸如封装安全协议(ESP)、认证头部(AH)以及互联网密钥交换和管理(IKE)协议。ESP协议记载在互联网工程特别任务(IETF)请求注解(RFC)2046中,其是一个使用密码(cryptographic),机制的认证以及加密协议,用于提供数据的完整性、源认证以及保密性。AH协议记载在IETF RFC 2402中,其是一个在分组头部中使用哈希(hash)签名的认证协议,用于验证分组数据的完整性并认证发送者。
IKE协议记载在IETF RFC 2409中,其提供了一种使网络设备协商AH和ESP格式所使用的安全设定的方法。经协商的安全设定形成一数据结构称为安全性联合(SA)。SA定义了诸如认证算法、加密算法、密钥、以及密钥的生存时间等参数,这些参数被ESP或AH用来保护IP分组的内容。由于ESP和AH要求一已建立的SA,因此IKE协商在ESP和AH被用于发射数据之前被执行。
一网络设备识别属于(subject to)IPSec,例如IKE、AH或者ESP处理的分组,以及这些分组应该被基于一在安全性策略数据库(SPD)中维持的安全性策略而被IPSec处理的情况。安全性策略是一组分配给网络设备的规则,其定义了如何使用IPSec。安全性策略包括过滤器列表,认证方法和其他信息。确定应用于一分组的合适的安全性策略通常是基于分组的源和目的IP地址、源和目的端口以及协议类型。
另一种用于保护免受恶意攻击的网络策略是防火墙策略。防火墙策略由一个或多个过滤器实施。每一个过滤器包括过滤器参数和应用于分组的和过滤器参数相匹配的相关策略。过滤器参数包括下列信息硬件地址,比如媒质介入控制(MAC)地址、网络地址,例如IP地址、协议类型,例如传输控制协议(TCP)、端口数量等等。过滤器中的防火墙策略识别了应该怎样对待具有与过滤器参数相匹配的参数的分组。在一个具体的例子中,过滤器包括作为其参数的统一的源位置(URL),例如“http//www.foo.com”。过滤器策略指示具有那个URL地址的分组应该被丢弃。当网络设备检查一分组并通过该检查识别URL地址“http//www.foo.com”包含在分组中时,网络设备丢弃该分组并由此防止其通过网络。
网络设备也使用非安全性相关的策略来控制网络话务的流动。作为一个例子,网络设备实施基于服务质量(QoS)的策略。QoS表明实际的传输速率、错误率以及其他的可被测量、改进以及有时能提前确保的特性。分组基于策略和保留标准被发出。QoS用于,例如,为了网络设备间改进的通信而分配网络带宽。
在一个网络设备上实施多个策略,例如安全性策略、防火墙策略、QoS策略等等很常见。这些策略可能冲突,即识别矛盾的动作以采用同一个分组。在一个网络设备上实施多个网络策略使诊断分组传输问题也变得困难。例如,如果分组没有被正确地发射或接收,则难以识别是哪一个网络策略妨碍了该分组。

发明内容
本发明是指一种用于在一个网络设备中实施多个网络策略的方法和框架。多个网络协议由安装在一个策略引擎内的一组过滤器定义。每一个过滤器包括一组过滤条件、一动作以及一策略环境。过滤器条件包括使策略引擎能识别与一分组相匹配的一个或多个过滤器的参数。动作和策略环境识别应用于匹配过滤器条件的分组的网络策略。
一请求层发送一请求以及和分组相关的一组参数至策略引擎。策略引擎通过将和分组相关的参数和过滤器条件相比较以识别分组的一个或多个匹配的过滤器。接下来从相匹配的过滤器的策略环境和动作来识别网络策略。在网络策略被识别后,其由网络设备执行。
在本发明的一个实施例中,多个网络策略中的一个是防火墙策略,其通过包含作为过滤器中的动作组而实施,允许或阻止,从而识别出与过滤器条件相匹配的分组是否应被允许遍历网络栈中的层或者被相反地阻止进一步的网络遍历。
在本发明的一个实施例中,多个网络策略中的一个是安全性策略,包含作为策略环境数据,用于识别将要被应用于匹配过滤器条件的安全性策略。
在本发明的一个实施例中,多个网络策略中的一个是服务质量策略,包含作为策略环境数据,用于识别要被用于匹配过滤器条件的分组的通信设置。
本发明的方法和框架可用于实施一可编程的、基于主机的、分布式认证的防火墙,其使安全性和其他策略被应用于几个协议层中。本发明的其他特征和优势将在下述结合附图的说明性的实施例的详细描述之后变得明显。


虽然所附的权利要求具体说明本发明的特征,而本发明及目的和优势将从下列结合附图的详细描述中得到最好的理解,其中图1是一般说明应用本发明的示例计算机系统的框图;图2是可使用本发明的示例网络环境的框图;图3是用于实施并管理多个网络策略的系统结构的框图;图4是说明一策略过滤器的示例数据结构;图5是说明分组环境的示例数据结构;
图6是说明了本发明所使用的示例应用编程接口;图7是说明了本发明所使用的一示例应用编程接口;图8是说明获得用于数据的策略的请求层的框图;图9是说明由一请求层实施网络策略所使用的方法的流程图;图10是说明由一策略引擎识别用于数据的网络策略所使用的方法的流程图;以及图11是说明了用于把新的策略过滤器增加至一策略引擎中的方法的流程图。
具体实施例方式
描述了一种在一个网络设备中实施并管理多个基于过滤器的网络策略的方法和框架。典型的基于过滤器的网络策略包括安全性策略、防火墙策略以及QoS策略。多个基于过滤器的网络策略被保存在一个过滤器策略引擎中。
基于过滤器的策略在一个框架中被实施,所述框架包括一用户策略引擎和一个核心(kernel)策略引擎。框架还包括核心层和用户层。核心策略引擎、核心层以及一次或多次呼出(callout)在一操作系统的核心模式中执行。核心层包括一应用层、一传输层、一网络层以及一链路层以形成一网络栈。与一个或多个策略提供者一起,用户策略引擎和用户模式在一操作系统用户模式中执行。一示例性的用户层是用于识别安全性策略的键控(keying)模块层。或者,本发明的方法和框架在一单独的操作系统模式中执行,或者在操作系统外执行的一个或多个程序模块或应用程序中执行。
用户层和核心层各自形成一请求层,用于从一前面的层或系统进程接收一分组和相应的分组环境数据。请求层通过已应用编程接口(AIP)发送一请求至核心策略引擎或者用户策略引擎。所述请求包括下列信息由请求层接收的分组、分组环境以及和请求层相关的一组层参数。策略引擎处理请求并返回一动作和策略环境。该层然后按照所述动作和策略环境实施网络策略。
多个网络策略由一组已安装的过滤器所定义。该组已安装的过滤器中的每一个包括一组过滤器条件、一动作以及策略环境。动作用于返回防火墙策略,例如允许或是阻止。策略环境包括其他策略,诸如安全性或QoS策略。核心或用户策略引擎通过识别一个或多个匹配的过滤器来处理从请求层发送的请求。匹配的过滤器具有与层参数和分组环境相匹配的过滤器条件。
策略提供者用于创建网络策略并且从任何合适的信源,例如易失性或非易失性存储器,或者通过图形用户接口而得到所述策略。策略是用于提供新的过滤器的信息源,包括过滤器条件组、动作以及策略环境。用户策略引擎把新的过滤器增加至用户策略引擎或核心策略引擎中已安装的过滤器组中。
参考附图,其中相同的附图标记指相同的元件,本发明以在一合适的计算环境中实施来说明。尽管并不要求,本发明将以计算机可执行指令的一般环境来描述,例如由个人计算机执行的程序模块。通常,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或者实施特定的抽象数据类型。本发明也可在分布式计算环境中实施,其中任务是由通过一通信网络链接的远程处理设备执行。在一分布式计算环境中,程序模块可位于本地和远程存储器储存设备中。
图1说明了可实施本发明的合适的计算系统环境100的一个范例。计算系统环境100仅仅是合适的计算环境的一个范例且其并不是作为本发明的使用或功能的范围的限制。计算环境100也不应该被解释为有任何依靠或要求相关于任何一个在示例运行环境100中的说明的组件或其组合。
本发明也可在多种其他通用或专用计算系统环境或配置中运行。熟知的可适用于本发明的计算系统、环境和/或配置的范例包括但不限于个人计算机、服务器计算机、掌上或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子元件、网络PC、迷你计算机、主机计算机、包括任何上述系统或设备的分布式计算机环境等等。
本发明可在计算机可执行指令的一般形式中被描述,诸如程序模块,其被一计算机执行。通常,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实施特定的抽象数据类型。本发明也可在分布式计算环境中实施,其中任务是由通过通信网络链接的远程处理设备执行。在一个分布式计算环境中,程序模块可位于本地和远程的包括存储储存设备的计算机存储媒质中。
参考图1,实施本发明的一个示例性系统包括一以计算机110的形式出现的通用计算设备。计算机110的组件可包括,但不限于一处理单元120、一系统存储器130以及一系统总线121,系统总线121把包括系统存储器在内的多种系统组件耦合至处理单元120。系统总线121可以是几种类型的总线结构中的任何一种,包括一存储器总线或存储器控制器、一外围设备总线以及一使用任何种类的总线结构的本地总线。为了示范而不是为了限制,这种结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子元件标准联盟(VESA)本地总线以及外围组件互连(PCI)总线,也称为Mezzanine总线。
计算机110一般包括多种计算机可读媒质。计算机可读媒质可以是任何现存的可由计算机110访问的媒质,包括易失性和非易失性媒质、可移动和不可移动媒质。为了说明而不是为了限制,计算机可读媒质可包括计算机存储媒质和通信媒质。计算机存储媒质包括易失性和非易失性媒质、可移动和不可移动媒质,其可用任何用于保存信息的方法或技术实施,所述信息包括计算机可读指令、数据结构、程序模块或其他数据。计算机存储媒质包括,但不限于RAM、ROM、EEPROM、闪存存储器或其他存储技术、CD-ROM、数字通用光盘(DVD)或者其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁性存储设备,或任何其他可用于保存期望的信息且能被计算机110访问的媒质。通信媒质一般记载计算机可读指令、数据结构、程序模块或其他在经调制的数据信号中的数据,诸如一载波或其他传输机制并包括任何信息发送(delivery)数据。术语“经调制的数据”表示一个信号,它的一个或多个特征以一种形式被设置或改变以编码该信号中的信息。为了示范而不是限制,通信媒质包括有线媒质,诸如一有线网络或直接的有线连接,以及无线媒质,诸如声波(acoustic)、射频(RF)、红外线以及其他无线媒质。任何上述媒质的组合也应该包括在计算机可读媒质的范围之内。
系统存储器130包括以易失性和非易失性媒质出现的计算机存储媒质,诸如只读存储器(ROM)131和随机存储存储器(RAM)132。一基本输入/输出系统133(BIOS),包含帮助在计算机110的元件之间传输信息的基本例程,例如在启动期间,基本例程一般保存在ROM 131中。RAM 132一般包含由处理单元120即时可存取的或者当前正在被处理器120操作的数据和/或程序模块。为了说明而不是限制,图1说明了操作系统134、应用程序135、其他程序模块136以及程序数据137。
计算机110还可包括其他的可移动/不可移动、易失性/非易失性计算机存储媒质。仅是为了说明的目的,图1说明了一硬盘驱动器141,其向不可移动的、非易失性的磁性媒质读出或写入,一磁盘驱动器151,其向可移动的、非易失性的磁盘152读出或写入,以及一光盘驱动器155,其向可移动的、非易失性的光盘156,例如CD ROM或者其他光媒质读出或写入。其他可在示例性的操作系统中使用的可移动的/不可移动、易失性/非易失性计算机存储媒质包括,但不限于磁带盒、闪存卡、数字通用光盘、数字视频磁带、固态RAM、固态ROM等等。硬盘驱动器141一般通过一诸如接口140的不可移动存储器接口连接至系统总线121,而磁盘驱动器151和光盘驱动器155一般通过一诸如接口150的可移动的存储器接口连结至系统总线121。
上面讨论的并在图1中说明的驱动器和它们相关的计算机存储媒质保存用于计算机110的计算机可读指令、数据结构、程序模块和其他数据。例如,在图1中,硬盘驱动器141被示为保存操作系统141、应用程序145、其他程序模块146以及程序数据147。需要注意这些组件可以与操作系统134、应用程序135、其他程序模块136以及程序数据137相同或不同。操作系统144、应用程序145、其他程序模块146和程序数据147在此被给予了不同的号码以说明至少它们是不同的拷贝。用户可通过诸如键盘162和指向(pointing)设备161向计算机110输入命令和信息,指向设备161一般是指鼠标、轨迹球或者触摸板。其他输入设备(没有图示)可包括麦克风、游戏杆、游戏板、圆盘卫星天线、扫描仪等等。这些和其他的输入设备通常通过连接至系统总线的用户输入接口160连结到处理单元120,但是也可以通过其他接口以及总线结构相连接,例如并行接口、游戏接口或通用串行接口(USB)。监视器191或者其他类型的显示设备也通过一诸如视频接口190的接口连接至系统总线121。除了显示器之外,计算机还可以包括其他外围输入设备,例如扬声器197和打印机196,它们可以通过输出外围接口195相连。
计算机110可运行于使用逻辑连接至一个或多个诸如远程计算机180的远程计算机的网络环境中。远程计算机180可以是另一个个人计算机、服务器、路由器、网络PC、层(deer)设备或者其他的公共网络节点,且一般包括上面描述的与个人计算机110相关的许多或者是全部的元件,但是在图1中仅示出了存储储存设备181。在图1中说明的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络。这种网络环境经常出现在办公室、企业范围计算机网络、内联网和互联网中。
当在LAN网络环境中使用时,个人计算机110通过网络接口或适配器170连接到LAN 170。当在WAN网络环境中使用时,个人计算机110一般包括调制解调器172或者其他用于在诸如互联网的WAN 173上建立通信的装置。调制解调器172,可以是内置的或是外置的,可通过用户输入接口160或其他适当的机制连接到系统总线121。在网络环境中,相关于个人计算机110或其中的部分而说明的程序模块可保存在远程存储设备中。为了说明而不是限制,图1说明了位于存储设备181上的远程应用程序185。需要理解的是,该网络连接是示例性的且其他的在计算机之间建立通信链路的装置也是可以使用的。
在下面的描述中,本发明将结合由一个或多个计算机执行的动作和操作的象征性的表示来描述,除了另外指明。因此,需要理解这样的动作和操作,即某些时候是指被计算机所执行的,包括由计算机的处理单元操作表示具有结构形式的数据的电信号。该操作变换数据或将其维持在计算机存储系统中的位置上,其以一种为本领域内的技术人员所熟知得方式来重新配置或改变计算机的操作。维持数据的数据结构是具有由数据格式所定义的特定属性的存储器的物理位置。然而,虽然在上述环境中描述了本发明,然而并不意味着其受到限制,熟悉本领域的技术人员应该理解此后将要描述的多种动作和操作也可以在硬件中实施。
现在将结合图2描述一网络环境,其中将实现按照本发明实施并管理多个基于过滤器的网络策略的方法。网络将以其本质作为示例,因为本发明的方法可以在耦合至任何网络配置的任何网络设备中实施。网络环境包括一专用网络200和一公共网络202。专用网络200和公共网络202是任何合适的类型,例如局域网(LAN)、广域网(WAN)、内联网、互联网或者任何它们的组合。
网络环境包括多个网络设备204、206、208、210和212。网络设备204、206耦合至专用网络200。网络设备210、212耦合至公共网络202。网络设备208耦合至专用网络200和公共网络202两者,并在它们之间提供一个接口。网络设备使用任何合适的技术耦合至公共和专用网络,所述技术例如以太网、1394或者802.11(b)。网络设备进一步实施为任何合适的计算设备,例如个人计算机、服务器、手持式设备、打印机、交换机、路由器、网桥(bridge)、中继器(repeater)等等。
网络设备208包括一过滤器管理模块214和一个或多个过滤器216。管理模块214是按照本发明实施的一个程序模块或一组程序模块。管理模块214检查在耦合至专用网络200的网络设备204、206、208和耦合至公共网络202的网络设备210、212之间交换的网络分组。在本发明的一个实施例中,管理模块214还检查从专用网络200中的网络设备发送的,且目的地也为专用网络200中的网络设备的本地目的网络分组。
管理模块214控制在专用网络200和公共网络202之间交换的网络话务。或者,管理模块214在一诸如在网络设备210中说明的单独网络设备中实施并控制用于该网络设备的网络话务。管理模块还能够被实施为一组中央管理的主机和/或边缘网络设备。
过滤器实施为管理模块214的一部分。或者,过滤器216实施为可由管理模块214访问的单独数据结构的一部分。每一个过滤器216包括一组过滤器条件、动作以及策略环境。过滤器条件用于识别服从网络策略的数据并包括下列信息接口数量、硬件地址、网络地址、协议类型、端口数量以及负载(payload)数据。动作用于实施防火墙策略并指示实施管理模块的网络设备应该如何处理匹配过滤器条件的分组。典型的动作包括允许、即允许分组继续网络遍历,还包括阻止,即通过丢弃分组来阻止进一步的网络遍历。策略环境用于保存识别其他网络策略的信息,其它策略例如安全性和QoS策略,它们将同样被应用于匹配过滤器条件的分组。
如这里使用的,术语网络分组或分组是指数据。数据可按照一网络协议(例如IP、TCP、HTTP)被格式化,或者可以包括一基本数据流。通过把分组信息(这里指分组参数)和过滤器条件相比较,管理模块识别一个或多个匹配的过滤器。当过滤器条件匹配分组参数时会产生一匹配的过滤器。分组参数包括从分组得到的信息,还包括分组环境信息和层参数。当管理模块识别一匹配过滤器时,就执行与该过滤条件相关的一个或多个工作和/或策略环境。
图3示出了管理模块214的一示例性的结构。管理模块214的结构允许分组服从核心和用户层处的过滤器。该结构提供了中央管理能力,其允许增加和删除过滤器且识别并解决过滤器冲突。管理模块214是可扩展的,因为核心或用户模式层可根据需要增加和删除,并可通过呼出(callout)模块来扩展以包括特殊的功能。本发明特别适合用于实施并管理多个网络策略所使用的过滤器,所述策略例如防火墙、服务质量(QoS)、互联网协议安全性(IPSec)组以及其他的加密、认证和密钥管理安全性协议。
管理模块214包括一用户模式进程250和一核心模式进程252。用户模式进程和核心模式进程252作为网络设备中操作系统的一部分执行。熟悉本领域的技术人员将会理解操作系统的用户模式进程250和核心模式进程252包括其他的组件,但是为了简明起见,此处未示出。或者,管理模块214的全部或者部分在操作系统之外作为一个或多个程序模块或者应用程序被执行。
核心模式进程252包括核心层254、核心策略引擎256和任选呼出258。核心模式进程252通过识别用于网络分组的匹配过滤器来实施一经建立的网络策略,按照已知的协议处理分组并按照匹配过滤器所设计的对分组执行其他动作。
在本发明的一个实施例中,核心层254形成一网络栈。网络栈包含多个层,包括一数据流层268、一传输层270、一网络层272以及一链路层274。管理模块是可扩展的且可根据需要动态地增加或者删除额外的层。增加的层的一个示例包括文件访问层276,其按照服务器消息块(SMB)协议实施。核心模式进程252较佳地被配置成实施将要应用于在核心层254传输的分组的防火墙策略。
核心策略引擎256包括一层API 280,一组安装的过滤器282和一呼出API 284。核心层引擎256按照本发明的方法执行多种功能,包括(1)维持定义网络策略,例如安全性、QoS、防火墙策略等等的已安装的过滤器组282,(2)接收来自核心层254的请求,(3)基于该请求识别一个或多个匹配过滤器,以及(4)基于匹配过滤器和其中定义的网络策略来指示该层作用于分组上的任何动作。
用户策略引擎260包括一过滤器模块294。过滤器模块294是用户模式250中的核心策略引擎256的一个实例。用户策略引擎260中的过滤器模块294的实例允许用户策略引擎260为一个或多个用户层282复制核心策略引擎256的服务。用户层282以与创建核心模式层的方式相同的方式被增加。由于过滤器294是核心策略引擎256的用户模式实例,因此可以理解此处所描述的任何用于核心策略引擎的功能都将被应用于过滤器模块294。例如,额外的用户模式层从系统结构被增加或者删除,而呼出(callout)可被创建以向用户模式层提供额外的功能。过滤器278定义的网络策略被增加至过滤器模块294,而用户模式层282可通过发送一请求至用户策略引擎260来识别用于匹配指定参数的分组或数据的策略。虽然用户层282被示为在操作系统用户模式中执行,然而用户层也可分布在其他的系统进程中。
已安装的该组过滤器278、282组被用于实施一个或多个网络策略。每一个过滤器包括一组过滤器条件、动作和策略环境。如结合图2所描述的,过滤器条件识别了服从由动作和策略环境所定义的过滤器策略的分组。在安装的过滤器组282中指定的动作包括允许和阻止。策略环境是用于保存诸如安全性和QoS这样的策略的已知策略参数的任何适当的数据结构。一个过滤器的示例形式结合图4描述。
层API 280提供了核心层和核心策略引擎之间的接口。通过层API 280,请求层请求核心策略引擎识别将要应用于一分组的网络策略。
呼出258被用于实施附加的功能,例如上级(parental)控制,侵入(intrusion)检测等等。当核心或用户策略引擎256识别一用于分组的匹配过滤器时,一呼出被执行,上述的匹配过滤器包括对呼出模块中一个的呼出作为关联动作。额外的呼出,例如层,在需要时被增加从而提供一扩展的结构。呼出API 284的一特定的实施参考图6进行描述。
用户模式进程250包括用户策略引擎260和一个或多个策略提供者262,被标识为“PP1”、“PP2”和“PP3”。策略提供者262是增加网络策略至管理模块214的进程,所述网络策略即安装的过滤器278、282。任何进程被用于完成此任务。一个示例是一传统IPSec策略服务(LIPS)。传统IPSec策略服务增加定义网络话务的过滤器,该网络话务被假设(suppose)使用互联网协议安全(IPSec),例如封装安全性协议(ESP)和认证头部协议(AH)。作为一个指定的示例,传统IPSec策略服务增加一防火墙策略,指示所有未经要求(unsolicited)的界内(inbound)分组必须按照ESP协议进行加密。该策略进一步提供以明文形式的任何未经要求的界内分组,即一未加密的分组应被阻止。策略提供者262从任何合适的信源获得策略,例如易失性的或非易失性存储器中的数据,或者一图形用户界面(GUI),该图形用户界面允许一管理员或者系统用户直接输入策略。用户策略引擎260将策略转进一新的过滤器,即以过滤器条件和相关的动作来定义策略,并把新的过滤器增加到已安装的过滤器组278、282。
管理模块214进一步包括过滤器引擎API 266,其形成一在用户策略引擎260和核心策略引擎256之间的接口。引擎API 266提供用于用户策略引擎260的机制以增加新的过滤器至安装的过滤器组282,并检查安装的匹配选择的标准的过滤器282以进行诊断。管理API 290,可由策略提供者262访问,也提供一机制以从该机制中增加并删除过滤器。
每一个用户和核心层能够从先前的层中接受分组、模块或系统进程。每一个用户或核心层也维持分组环境,将分组环境传送至下一层或系统进程,发布易分类请求至核心或用户策略引擎,并按照一个或多个网络策略在分组上采取动作。
分组环境是按照分组的数据结构。每一个层通过增加一组参数至环境数据结构中来维持环境数据,该组参数是该层被设计为进行处理的或者是可从分组中获取的。一用于分组环境的示例性的数据结构结合图5进行描述。
分类请求是由一层发出的调用(call),请求识别与分组匹配的任何过滤器以及请求例如允许或阻止,和/或相关的策略环境这样的任何动作被返回至该层。发布分类请求的层此处称为一请求层。每一个层还对由核心或用户策略引擎返回的分组采取动作。
管理模块214还包括一键控模块层296。该键控模块层被用于查找和键控协议一起使用的网络策略,例如作为诸如IPSec这样的安全性协议的一部分实现的互联网密钥交换及管理(IKE)协议。键控模块API 288提供用户策略引擎260和键控模块层之间的接口。过滤器可通过用户策略引擎260被增加至过滤器模块294,所述策略引擎260定义了哪些分组服从于一给定的安全性参数的组。键控模块API提供了一种使其他进程调用键控模块层的服务以识别匹配的已安装的过滤器的机制,所述过滤器包括识别将要应用的策略环境。
参考图4,现在将描述已安装的过滤器组282,其可被安装至过滤器模块294或者核心策略提供者256。每一个过滤器310具有多个字段,包括过滤器Id 321、权重314、一个或多个动作316、策略环境317和一组过滤器条件318。过滤器Id 312为过滤器提供一唯一的标示。
权重字段314包括识别过滤器310的优先权的值。在权重字段314内的值越高,过滤器的优先权越高。过滤器优先权确定由核心策略引擎256或用户策略引擎将匹配过滤器应用于分组的顺序。或者,过滤器310被人为地排序且权重字段314可选择地被排斥。
过滤器条件318的组确定一分组是否匹配过滤器310。每一个过滤器条件318包括类型320、数据322以及层Id字段Id 324。过滤器条件318的数量是动态配置的,且过滤器条件318能根据需要增加或者删除。
类型320定义了包括在相应的数据322重的变量的长度和数量。该结构提供用于预定义已知变量类型,例如字节、短、长、8字节、串、互联网协议版本4(IPv4)地址、互联网协议版本6(IPv6)地址、IPv4地址加掩码(mask)、IPv6地址加掩码以及地址范围。
数据字段322包括数据匹配类型。例如,如果类型是IPv4地址,数据字段322的一可接受的值是一个32位的数,其范围表示为带点的十进制数为00.00.00.00至255.255.255.255。在一些情况下,类型32提供数据字段322中的多个值。地址范围、IPv4地址加掩码、IPv6地址加掩码类型允许两个IP地址值,定义IP地址的一开始和一结尾。为了最大的灵活性,该结构同样允许用户定义类型。或者,额外的类型可人为添加至系统结构中。
层Id字段Id字段332被用于分别识别一始发(originating)层和一来自始发层的参数。始发层和来自始发层的参数定义分组参数,即层参数和数据322用来比较的分组环境。始发层识别一特定的核心或用户层。来自始发层的参数识别一和始发层相关的特定参数。一个特定的示例由过滤器条件326说明。类型是IPv4表示数据322是一个32位的IP地址。层Id是“IP”表示32位的数是一个IP,即网络、层参数。示例中的字段Id是“Src IP Addr”表示一个IP层参数,特别是一个源IP地址。在数据字段中提供的IP地址是“123.3.2.1”,表示任何具有该源IP地址的分组符合该过滤器条件并匹配过滤器。
过滤器310中指定的动作326是允许、阻止、呼出或者空(null)。如果过滤器310中的动作324是允许或者是阻止且分组匹配过滤器310,允许或者阻止动作会返回请求层。允许和阻止动作一般用于实施防火墙策略。如果动作316是呼出,策略引擎向指定的呼出模块258发布其自身的分类请求,包括全部的分组、层参数、环境和对于匹配的过滤器的识别。呼出模块258在分组上执行其程序功能,例如侵入(intrusion)检测。呼出可返回一动作(或者是允许、或者是阻止)至策略引擎,策略引擎返回对于动作的回应(relay)至请求层。呼出还能够维持分组环境,其通过策略引擎256返回请求层。
核心策略引擎或用户策略引擎也返回一策略环境317。策略环境317被用于保存除了防火墙策略以外的策略,例如安全性或者QoS策略。策略环境可以是任何合适的数据结构。例如,策略环境是一个64位的数字,由一被增加到策略环境317的进程解释。过滤器中的策略环境可包括实际的策略或者由系统使用的映射至真正的策略的真正的值。
图5说明了用于由核心和用户层以及呼出模块258维持的分组环境的数据结构的示例。每一个入口包括一层Id字段Id 332和相应的值334。层Id字段Id 332具有和作为过滤器310(图4)中的过滤器条件318的一部分被提供的层Id字段Id 324一样的含义。Namely,层Id字段Id 332识别始发层和来自始发层的层参数用于值字段334中的数据。值字段334包括一特定的层参数。
在一个特定示例中,入口336包括层Id字段Id 332“NDISSrc.MAC Addr”。“NDIS”表示链路层274(图1)的网络驱动器接口规范实施。“Src.MAC Addr”表示源MAC地址。因此,层Id字段Id 332表示在值字段334中的数据是由NDIS(链路)层处理的源MAC地址。值字段334包括真正的源MAC地址,一个实例是以十六进制表示的“00.08.74.4F.22.E5”。
第二个示例,入口338具有层Id字段Id 332“NDISIF No”。再次识别层为NDIS,但是在这种情况下参数“IF NO”表示一接口数量作为特定的NDIS参数。值字段334包括真正的接口数量,在这种情况下为2。
第三个示例,入口340具有层Id字段Id 332“IPDst IP Addr”。“IP”表示使用IP协议的网络层而“Dst IP Addr”表示一目的地IP地址作为IP层参数。值字段334包括真正的目的地IP地址“123.3.2.1”。
在描述了基础(underlying)的防火墙结构后,注意力集中到系统的功能性接口和使用此处描述的基础防火墙结构执行的方法的示例。功能性接口被实施作为多个应用程序接口(API)。API包括在图6和图7中说明的层API 280、过滤器引擎API 266和键控模块API 288。
层API 280帮助核心层和核心策略引擎256之间的数据交换。通过扩展,用于层API 280的方法也帮助了用户层282和过滤器模块294之间的数据交换,且被包括作为下面将要描述的键控模块API 288的一部分。如图示,层API 288包括一分类(classify)方法350、一增加层方法352和一删除层方法354。
分类方法350被请求层用于向核心策略引擎256或者过滤器模块288发送层参数、有请求层接收的分组以及分组环境。核心策略引擎256或者过滤器模块288比较(1)来自请求层的层参数和(2)在每一个被分配给请求层的过滤器310中至过滤器条件318的分组环境入口,以识别匹配的过滤器。下面是分类方法的一个示例性的实施。需要理解下列方法被描述为接收或者返回数据值。按照公知的编程技术,该方法可以使用数据值的指针来代替真正的数据值。
<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)的参数。
LayerId识别了发布分类(classification)请求的核心或用户层,即请求层。参考图3,LayerId识别层为数据流层268、传输层270、链路层274或者诸如键控模块层的用户层。如果被增加至系统,其他层也是有效的。
pInFixedValues包括由请求层处理的层参数的子集。pInFixedValues和分组环境入口一起与过滤器条件相比较以确定分组是否匹配过滤器。包括在pInFixedValues中的用于核心层的默认层参数在下列的表A中被标识。没有用于用户层的默认参数。需要理解下列的值仅仅是本结构的优势的一个示例,既其允许层使用任何该层可访问的数据。
表A层默认层参数链路层源和目的地MAC地址;接口数量网络层源和目的地IP地址;协议类型;本地地质类型传输层源和目的地端口数量应用 解密的应用层协议负载pInContext包括由请求层接收的环境数据结构330(图5)。分组环境被和层参数结合使用以识别匹配的分组。
pPacket包括由请求层接收的整个分组。
pActionType包括返回请求层的动作316。返回的动作316是在匹配的过滤器中识别的允许、阻止、继续或者空,或者是由匹配的过滤器执行的呼出模块。如前面所描述的,动作316被用于实施并识别网络防火墙策略。
pOutContext包括策略环境数据。如前面所描述的,策略环境被用于实施和IPSec、Qos以及任何其他非基于防火墙的策略相关的网络策略。
增加层352和删除层354方法被分别用于从管理模块214增加和删除一用户或者核心层。下面是增加层352方法的一个示例形式。
NTSTATUSAddExtensionLayer(OUT PULONG pLayerId);其中下列特征是所陈述(recited)的参数。
pLayerId是唯一的返回被增加的层,即执行增加层方法的层的层识别值。
在本发明的一个是示例中,当操作系统初始化时某些层就被包括在结构中。这些层的示例包括链路、网络和传输层。因此,不要求AddExtensionLayer方法在框架中包括这些层。一LayerSerProperties方法被提供,为策略引擎识别哪些字段是用于该层的有效过滤器条件,怎样计算过滤器权重等等。下列是LayerSerProperties方法的一个示例形式。
WIN32_ERR WINAPI FwpmLayerSetProperty0(IN FWPM_ENGINE_HANDLE engineHandle,IN const GUID*layerId,IN const FWPM_LAYER_PROPERTY0*layerProperty);其中下列特征是所陈述的参数。
enginehandle是对于策略引擎的句柄。
layerId识别层。
layerProperty识别包括层字段的层属性和过滤器权重的计算。
下列是删除层406方法的一个示例形式。
NTSTATUSRemoveExtensionLayer(ULONG LayerId);LayerId识别将要被删除的层;即执行删除层方法的层。
呼出API 284便于核心或用户策略引擎和呼出之间的数据交换。类似于层API 280,呼出API 280具有一分来方法。呼出API 284的分类方法356类似于层API 280的分类方法402,除了它还包括匹配过滤器数据。下列是用于执行呼出的分类方法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);其中下列特征是所陈述的参数。
fixedValues包括从请求层发送的层参数。fixedValues和由请求层提供的,在pInFixedValues中作为层API 280中的分类方法350的一部分发送的数据是相同的。
wfpContext包括环境数据结构330(图5)。该数据和由请求层发送的,在pInContext中发送作为层API 280中的分类方法350的一部分的数据相同。
packet包括由请求层接收的整个分组。该数据和由请求层提供的,在pPacket中发送作为层API 280中的分类方法350的一部分的数据相同。
matchedFilter识别请求呼出的过滤器。一般的,匹配过滤器由初始化呼出API 284的分类方法350的匹配过滤器310的过滤器Id 312识别。
pActionType包括从呼出258返回至核心或用户策略引擎的动作。如果pActionType是允许或阻止,其以由层API 280返回的pAction返回请求层。
pOutContext包括策略环境数据,例如安全性或者Qos策略数据。
呼出API 408也包括告知(notify)方法358。告知方法358被用于在一过滤器310被增加到安装的过滤器组282中时告知一呼出,识别作为其动作316中的一个,呼出模块258。告知向呼出提供一机会来获取任何请求的动作,例如分配(allocating)或者去除分配(de-allocating)缓冲,该缓冲将在其被策略引擎256执行时被呼出258使用。下列时告知方法358的一个示例形式。
typedef NYSTATUS(*WFP_CALLOUT_NOTIFY_FN)(IN WFP_NOTIFY_ENUM notify(告知)IN WFP_FILTER filter(过滤器));其中下列特征时所陈述的参数。
notify包括一表示过滤器是否被增加或删除的数字值。例如,值1表示过滤器被增加而值2表示过滤器被删除。
filter通过唯一的值识别被增加或者是删除的过滤器。这可通过提供被包括作为过滤器310的一部分的过滤器Id 312而完成。
呼出API还包括一呼出注册方法360和呼出去注册方法362以分别增加或者删除呼出模块。下列是呼出其注册方法360的一个示例形式NTSTATUS WfpRegisterCallout(IN const GUID* calloutId,IN const WFP_CALLOUT*calloutIN const SECURITY_DESCRITOR* sd);其中下列特征是所陈述的参数。
callout Id提供注册呼出模块的唯一的识别。
callout提供任何呼出指定的信息,例如驱动器服务名称、设备名称以及指向呼出分类和告知功能的指针。
sd提供用于呼出的安全性描述器(descriptor)。安全性描述器识别哪一个进程可读并删除呼出。
下列是呼出去注册方法362的一个示例NTSTATUS WfpDeregisterCallout(IN cost GUID* calloutId);其中下列特征是所陈述的参数。
callout Id是将要删除的呼出的唯一Id。
过滤器引擎API 266便于用户引擎260和核心策略256引擎之间的数据交换。如图所示,过滤器引擎API 266包括一增加过滤器方法364、一删除过滤器方法366以及一Enum层方法368。
增加过滤器364和删除过滤器366方法被分别用于增加一新的过滤器至安装的过滤器组282组中并从安装的过滤器组282中删除一现存的过滤器。下列是增加过滤器方法364的一个示例形式NTSTAUTUSAddFilterTOLayer(ULONG LayerId,WFP_FILTER*pFilter);其中下列特征是所陈述的参数。
LayerId识别分配给过滤器的层。
pFilter是将要被增加至安装的过滤器组282的过滤器310。
下列是删除过滤器方法366的一个示例形式NTSTATUSDeleteFilterFromLayer(ULONG LayerId,ULONG FilterId
);其中下列特征是所陈述的参数。
LayerId识别过滤器分配给的层。
pFilter是将要从安装的过滤器组中删除的过滤器。
Enum层方法368提供用于用户策略引擎260的机制以识别所有匹配一组标准的过滤器。这允许管理API来识别向冲突的过滤器用于过滤器仲裁(arbitration)和冲突解决。下列是Enum层方法368的一个示例形式。
IndexStartEnum(PWFP_ENUM_TEMPLATE pEnumTemplate,OUT PULONG pMatchCount,OUT PWFP_ENUM_HANDLE pEnumHandle)其中下列特征是所陈述的参数。
pEnumTemplate包括定义将要返回的数据结构。例如,其包括用于将要返回的过滤器的必须匹配的过滤器条件的参数。
pMatchCount包括基于指定的pEum模板(template)的过滤器的数量。
pEnumHandle包括匹配的过滤器入口的参数。
键控模块API 288提供用户模式键控模块层282和用户策略引擎260之间的接口。键控模块API 288包括一IPSec SA获得方法370、一终止告知方法372以及一IPSec SA获得完成方法374、一键控模块注册方法376、一键控模块去注册方法378、一IPSec界内(inbound)获得SPI方法380、一增加界内SA方法382、一增加界外(Outbound)SA方法384、一界内SA终止方法386以及一键控模块初始方法388。键控模块API 288也可包括先前描述的用于层API的方法。
键控模块API被用于便于公知的安全性协议的使用。例如由IPSec定义的,由一初始化计算机、用户或者服务以及一回应计算机、用户或者服务使用的。IPSec包括诸如AH和ESP的协议。ESP协议使用密码机制的认证和加密协议,提供数据的完整性、源认证和保密性。AH协议是使用分组头部中的哈希(hash)署名的认证协议,确认分组数据的完整性和发送者的认证。
IKE协议提供一用于一初始计算机和一回应计算机协商使用AH和ESP协议的安全性设置的方法。经协商的安全性设置形成一称为安全性结合(SA)的的数据结构。SA定义了下列参数认证算法、加密算法、密钥以及密钥的生存时间,这些参数被ESP或者AH用于保护IP分组的环境。由于ESP和AH要求一SA,一示例性的方法是在ESP或者AH协议被初始和回应计算机使用之前使用IKE协商。或者,SA可人工地创建。一给出的SA由一被称为安全性参数索引(SPI)的值识别。
初始和回应计算机都包括一IPSec驱动器和分类模块,它们基于IPSec策略确定在初始和回应计算机之间发送的数据是否要求加密或者认证。IPSec策略是一组过滤器,定义网络设备怎样使用IPSec并且包括过滤器列表、认证方法和其他信息。在本发明的一个实施例中,IPSec策略由包括在核心策略引擎或者过滤器模块294中的一组安装的过滤器定义。应用于一分组的策略是由唤醒键控模块层定义,该层使用分类方法以识别匹配滤波器。
IPSec SA获取方法370由用户策略引擎260(通过一客户代理)调用以传输一驱动器请求或一外部初始请求至键控模块层。键控模块层返回该调用并异步进行该协商。当键控模块层完成该协商时,键控模块层调用IPSec SA获取完成方法374以告知用户引擎协商已完成。下列是IPSec SA获取方法的一个示例形式。
typedef WIN32_ERR(*PROCESS_IPSEC_SA_ACQUIRE0)(IN FWP_IPSEC_ACQUIRE_CONTEXT0ipsecContext,IN const FWP_IPSEC_SA_ACQUIRE0* acquire,IN FWP_IPSEC_SI inboundSAspi);其中下例特征是所陈述的参数。
ipsecContext是使用被增加的SA的对于链路请求的操作。
acquire包括按照诸如IKE的公知的协议中用于协商SA所需要的信息。
inboundSAapi包括一用于一界内SA的SPI。
终止告知方法372被调用用于传输一终止告知至增加界内SA的键控模块层。下列是终止告知方法的一个示例形式typedefVOID(*PROCESS_IPSEC_SA_EXPIRE0)(IN const FWP_IPSEC_SA_EXIRE_NOTIFY0* expireNotify);其中下列特征是所陈述的参数。
expireNotify包括识别终止SA的信息。例如,在界外SA的情况中,SPI被提供。
IPSec SA获取完成方法374被键控模块层调用以在其完成协商并增加所有的SA或者在其出现一错误之后关闭用户策略引擎的环境。在该方法被执行后,键控模块层不将ipsecContext重新用于任何其他的API方法。下列是IPSec SA获取完成方法的一个示例形式。
WIN32 ERRFwpIPSecSAAcruireComplete0(IN FWPM_ENGINE_HANDLE engineHandleIN FWP_IPSEC_ACQUIRE_CONTEXT0 ipsecContextIN const FWP_IPSEC_NEGOTIATION_STATUS0*status);其中下列特征是所陈述的参数。
engingHandle提供对于用户策略引擎260的操作。
ipsenContext是由用户策略引擎与IPSec请求方法一起传输的环境。
status提供SA协商的状态和其他细节。如果请求是通过FwpKeyingModuleInitiate0在外部初始化的,状态由用户引擎260返回。
键控模块注册方法376被键控模块层调用以使用用户策略引擎260注册并传输其功能指针。下列是键控模块注册方法的一个示例形式。
WIN32_ERRFwKeyingModuleRegister0(IN FWPM_ENGINE_HANDLEengineHandle,IN const GUID* keyingModuleID,IN const FWP_KEYING_MODULE_INFO0*keymodInfo);其中下列特征是所陈述的参数。
engineHandle提供对于用于防火墙引擎260的操作。
keyingModuleID适用于键控模块层的唯一的ID。
keymodInfo包括关于键控模块层的注册信息,例如处理IPSec SA获取和处理IPSec SA终止功能的指针。
键控模块去注册方法378被键控模块层调用以从用户策略引擎260中去注册键控模块。下列是键控模块去注册方法的一个示例。
WIN32_ERRFwpKeyingModuleDeregister0(IN FWPM_ENGINE_HANDLE engineHandle,IN const GUID*keyingModuleID);其中下列特征是所陈述的参数。
engingHandle是对于用于策略引擎260的操作。
keyingModuleID是键控模块层的唯一的ID。
IPSec Inbound Get SPI方法380被键控模块层调用以获得SPI用于一新的界内SA。IPSec Inbound Get SPI方法380一般在键控模块层在一回应网络设备中执行时被使用。下列是IPSec Inbound Get SPI方法的一个示例形式。
WIN32_ERRFwpIPSecSAInboundGetSi0(
IN FWPM_ENGINE_HANDLE engineHandle,IN const FW_IPSEC_TRAFFIC0*ipsecTrafficDescriptionIN const FW_IPSEC_UDP_ENCAP0* udpEncapInfoOUT FWP_IPSEC_SI* inboundSpi);其中下列特征是所陈述的参数。
engineHandle是对于用于防火墙引擎260的操作。
ipsecTrafficDescription是一个用于创建一界内初期(larval)SA的5tuple的描述。5个tuple包括源和目的地IP地址、源和目的地端口以及传输层协议类型。
udpEncapInfo是用于创建初期(larval)SA的UDP压缩数据。UDP压缩是公知的用于将按照安全性协议格式化的数据迁入一未加密的UDP分组中的方法。
inboundSpi是用于界内SA的SPI。
增加界内SA方法382被键控模块层调用以增加一界内SA,即更新初期SA。用户策略引擎260使用在SA中的SPI以映射该调用至内部状态,并输入输出控制(input and output control,ioctl)SA向下至IPSec驱动器。下列是增加界内SA方法的一示例形式。
WIN32_ERRFwpIPSecSAInboundAdd0(IN FWPM_ENGINE_HANDLE engineHandle,IN const FW_IPSEC_SA_SRUCT0* inboundSA);其中下列特征是所陈述的参数。
engineHandle是对于用户策略引擎的操作。
inboundSA包括界内的SA。
增加界外SA方法384被键控模块层调用以增加一界外SA。用户策略引擎使用一界内SPI参数以映射该调用至其内部状态,并输入输出控制(ioctl)SA向下至IPSec驱动器。下列是增加界外SA方法的一个示例形式WIN32_ERRFwpIPSecSAOutboundAdd0(IN FWPM_ENGINE_HANDLE engineHandle,IN FW_IPSEC_SPIinboundSpiIN const FW_IPSEC_SA_STRUCT0* outboundSA);其中下列特征是所陈述的参数。
engineHandle是对于用于防火墙引擎260的操作。
onboundSpi是用于界内SA的SPI,具有以配对的(paired)的界外SA。
outboundSA包括界外SA。
界内SA终止方法386被键控模块层调用以终止先前增加的界内SA。下列是界内SA终止方法386的一示例形式。
WIN32_ERRFwpIPSecSAInboundExpire0(IN FWPM_ENGINE_HANDLEengineHandle,IN const FW_IPSEC_SA_EXPIRE0*exire);其中下列特征是所陈述的参数。
engineHandle是对于用户防火墙引擎260的操作。
expire包括用于将要终止的SA的数据。
键控模块初始方法388被类似于RAS、Winsock API等等公知的外部应用调用以初始化键控模块层并在应用该是设置其网络话务之前设置SA。用户引擎260异步判决(pend)PRC调用,从IPSec驱动器获得SPI并传输该获得(acquire)至合适的键控模块。当键控模块层调用FwpIPSecSAAcquireComplete0时,用户防火墙引擎完成异步RPC和协商状态。下列是键控模块初始方法的一个示例形式。
WIN32_ERRFwpKeyingModuleInitiate0(IN FWPM_ENGINE_HANDLE engineHandle,IN const FW_IPSEC_SA_ACQUIRE0*acquire,IN HANDLE waitEvent,OUT FWP_IPSEC_NEGOTIATIN_STATUS0* negotiationStatus);其中下列特征是所陈述的参数。
engineHandle是对于用户策略引擎260的操作。
acquire包括协商SA所需要的数据。
waitEvent是对于一事件的操作,该事件在协商状态存在是被触发。如果一客户,即调用的外部应用程序没有兴趣等待协商结束,其可设置该参数为空。在内部,客户代理选择性地传输该事件至RPC并请求它在异步RPC调用完成时设置该事件。
negotiationStatus包括协商的结果。如果waitEvent为空,则negotiationStatus也为空。此外,negotiationStatus保持有效直至waitEvent被触发。
图8说明了用于寻找一分组的匹配滤波器并返回该动作和/或策略环境至一请求层的方法。如图示,第一请求层404通过发布一请求至策略引擎400来获得网络策略。策略引擎400是核心策略引擎256或者具有过滤器模块294的用户策略引擎260。策略引擎400包括安装的过滤器402,定义多个网络策略,例如安全性、QoS以及防火墙策略。
第一请求层404可以是例如键控模块层的用户策略模式层282或者例如网络栈中的一个层的核心层254。第一请求层404通过层API与策略引擎400进行通信。
请求408,例如一使用分类方法的分类请求,包括层参数410、分组环境412和由请求层404接收的全部的分组414。策略引擎400使用层参数410和分组环境412以从安装的过滤器402中识别任何匹配的滤波器。一般,策略引擎400按照由匹配过滤器指定的权重按顺序应用过滤器。策略引擎400接下来返回值416,其包括一动作418和策略引擎420。策略418被用于返回诸如允许或者阻止的防火墙策略。策略环境420被用于返回诸如安全性或者QoS策略的其他策略。在过滤器不包括对应的策略时,返回的动作418和策略环境420被指示为无(none)或者是空(null)。
第一请求层404可与第二请求层406互动(interact)。这在请求层是网络栈中的一核心层254时发生。第一请求层404可使用由请求层处理的层参数更新分组环境422。第一请求层404还可以按照一层协议处理分组。请求层传输经修改的分组环境422至第二请求层406。请求层还在分组424被按照层协议处理之后传输分组424。例如,如果第一请求层404实施IP协议,就按照IP协议处理。第一请求层然后传输分组至第二请求层406,该层对于界内的分组是一传输层而对于界外的分组是一链路层。第二请求层406接下来可以通过发送一分类请求并接收返回的动作和策略环境值来重复该处理。
图9说明了一方法,其被标记为500,该方法由请求层使用以获得可用的网络策略,例如用于一分组的动作和策略环境。在步骤502,请求层从一先前的层或者另一个进程或者程序模块接收全部的分组和对应的分组。
在步骤504请求层识别层参数。层参数是和分组环境一是使用的,用于识别匹配的过滤器的参数。默认的层参数在前面的表A中被描述,且被包括在分类方法350的pInFixedValues中。
在步骤506,请求层向核心层或者用户策略引擎发布分类请求。发布分类请求的一示例方法参考层API 280中的分类方法350被描述。
作为对分类请求的回应,一动作以及策略环境被返回请求层,如步骤508所示。请求层基于返回的动作确定是否在步骤508丢弃分组。如果策略引擎返回阻止作为动作,则请求层丢弃分组。如果策略引擎返回的动作是没有匹配的过滤器被找到,则请求层同样丢弃分组。如前面所描述的,动作还被用于实施防火墙策略。如果匹配过滤器不包括防火墙策略,返回的动作可能是无或者空。
步骤510、512、514通常仅仅在请求层是网络栈中的一层是发生,但是会在用户模式层选择性地出现。如果返回的动作是允许,进一步的分组处理会出现。在步骤510,请求层修改分组环境以包括层信息,一般是与包括在分类请求中作为层参数的信息是相同的数据类型。因此,表A(上述)不仅识别层参数还是被由每一个层增加值分组环境的默认信息。分组环境被维持在一诸如参考图5描述的数据结构的数据结构。
在步骤512,请求层按照实施用于该层的协议处理分组。这样的处理是熟知的,且不需要在此详细地说明。示例性的协议实施包括用于应用层的HTTP、FTP、SMTP以及RPC,用于传输层的TCP和UDP,用于网络层的IP层以及用于链路层的NDIS。
在步骤514,请求层传输按照层协议处理的分组和经修改的分组环境至下一层。处理500由每一层重复并在分组在一系列层,例如在网络栈中的层中的所有层传输完成之前,或者在分组被层中的一个丢弃前继续。
参考图10,现在将描述一方法520,由核心或者用户策略层使用以识别匹配过滤器并返回动作和策略环境至请求层。在步骤522,策略引擎通过合适的API从请求层接收分组、层参数以及分组环境。
在步骤524,策略引擎识别一个或多个匹配过滤器。在本发明的一个实施例中,过滤器被分配给一特定的请求层。如果过滤器被分配给请求层并且分组参数匹配所有的过滤器条件318(图5),策略请求层仅仅是试图识别该过滤器为匹配的。如先前所描述的,分组参数包括来自请求层和分组环境的层参数。在识别了所有的匹配过滤器后,策略引擎基于在每一个匹配过滤器中的权重字段来为过滤器排序。或者,过滤器没有被分配给特定的请求层且所有的过滤器都可能是匹配过滤器。
在步骤526中,策略引擎应用还没有被应用的过滤器中具有最高权重字段314的过滤器。特别的,策略引擎识别在过滤器和策略环境中指定的动作316。如果动作316指定一呼出模块,策略引擎256执行该呼出。呼出可返回一动作至策略引擎。
如果动作没有呼出(callout),或者在呼出被执行之后,策略引擎从匹配的或者由呼出识别的过滤器返回一相关的动作和策略环境至请求层,如步骤536所示。或者,策略引擎等待执行步骤536,即返回动作直至所有的匹配过滤器被应用。
在步骤534,策略引擎确定如果存在任何额外的匹配过滤器。如果没有,进程终止。如果额外的匹配过滤器存在,进程返回步骤526应用次高优先权的过滤器。进程持续进行直至所有的匹配过滤器被应用。或者,在一终止动作被识别用于一分组时,进程终止。动作类型可被定义为终止动作。默认的,允许和阻止都是终止动作。如果没有匹配的过滤器被识别用于分组,策略引擎告知请求层没有匹配的过滤器被发现。
图11说明了由用户策略260使用的进程,用以增加新的过滤器至安装的过滤器组中。过滤器可被安装进入核心策略引擎256或者过滤器模块294在步骤542,用户策略引擎接收来自策略提供者262中的一个的策略。策略提供者包括已知的进程,例如LIPS,GUIs等等。如果需要,用户策略引擎通过以过滤器条件、动作合策略环境的形式来定义策略从而以过滤器的形式安置(place)策略。
在步骤544,过滤器由用户策略引擎分配一权重值。权重值是由策略提供者分配的,例如,通过策略提供者GUI由用户人工地分配。或者,用户策略引擎自动计算权重值。核心策略引擎256使用任何合适的方法来计算权重。例如,具有比较特定过滤期条件的过滤器被赋予比较少特定的过滤器更高的权重值。具有比较特定的过滤器具有匹配较少数量的潜在分组的过滤条件。例如,包括一单独IP地址作为其过滤器条件的过滤器比包括一IP地址范围作为其过滤器条件的过滤器更为特定。
在步骤548,用户策略引擎260将新的过滤器和分配给同一层的每一个安装的过滤器进行比较以识别任何冲突。对于冲突,过滤器必须共享将要作用于相同的分组上并识别出不同的动作的同一组过滤器条件。例如,如果用于安装的过滤器条件是在范围123.4.0.0至123.4.0.100之间的IP地址相关于允许的动作,而新的过滤器条件是具有范围123.4.0.50至123.4.0.150之间的源IP地址相关于一阻止动作,则在IP地址范围123.4.0.50至123.4.0.100之间新的和已安装的过滤器有重复的过滤器条件。
如果过滤器冲突,用户策略引擎260使用任何合适的技术来解决该冲突,如步骤552所示。一种用于计算过滤器权重且识别并解决过滤器冲突的方法在题为“Method for Managing Network Filter Based Policy”,代理人案卷号221037的未决的美国专利申请中描述。新的过滤器可被增加至已安装的过滤器组作为冲突解决进程的一部分。如果新的过滤器不与已安装的过滤器组冲突,新的过滤器被增加至已安装的过滤器组,或者用户策略引擎或核心策略引擎中,如步骤550所示。
如果新的过滤器被载入已安装的过滤器组中,任何由该过滤器执行的呼出,即,包括在过滤器中作为相关动作的标记被告知,如步骤554所示。告知该呼出的一示例方法结合作为呼出API 284(图6)的一部分描述的告知方法412而被描述。
这里所陈述的所有的参考,包括通过引用而将它们的整体结合于此。
本发明的原理可被应用于很多可能的实施例,应该认识到这里参考附图所描述的实施例仅仅是为了说明而不应该限制本发明的范围。例如,熟悉本领域的技术人员将认识到在实施例中以软件形式示出的元件也可以以硬件的形式实现,反之亦然,或者说明的实施例可进行安排和细节上的修改而不脱离本发明的原理之外。本发明可被用于管理和执行这些以及额外的处理的过滤器和基于过滤器的策略。因此,此处描述的本发明预期了所有的符合所附的权利要求及其等价说明的实施例。
权利要求
1.一种用于集成多个基于过滤器的策略的框架,所述策略将被应用于至少包括防火墙策略和安全性策略的数据分组,该框架包括一组用于识别至少一个和分组相关的参数的层进程;与所述层进程组通信的一策略引擎;以及保存在所述策略引擎中的一组过滤器,所述过滤器组中的每一个具有过滤器条件、识别所述防火墙策略的动作以及识别所述安全性策略的策略环境。
2.如权利要求1所述的框架,其特征在于,所述多个基于过滤器的策略还包括一服务质量策略,其识别将要被应用于分组的通信设置,所述服务质量策略由所述过滤器组中的策略环境定义。
3.如权利要求1所述的框架,还包括在所述层进程组中的一请求层进程,发送至少一个参数至所述策略引擎且所述策略引擎从具有与至少一个参数相匹配的过滤器条件的过滤器组中识别匹配的过滤器,所述策略引擎把所述防火墙策略和安全性策略返回至所述请求层。
4.如权利要求3所述的框架,其特征在于,所述请求层是一个键控模块层,而在所述匹配过滤器中的安全性策略识别一用于按照密钥协商协议协商安全性关联的策略。
5.如权利要求4所述的框架,其特征在于,所述至少一个参数是多个参数且所述多个参数包括源和目的地IP地址、源和目的地端口以及一协议类型。
6.如权利要求4所述的框架,其特征在于,所述密钥协商协议是IKE协议。
7.如权利要求3所述的框架,其特征在于,所述请求层还发送分组环境而所述策略引擎还从所述分组环境中识别所述匹配过滤器。
8.一种用于确定将要被应用于一层进程中的分组的多个网络策略的方法,包括由所述层进程识别与所述分组相关的一组参数;由所述层进程发送一请求以识别将要被应用于所述分组的所述网络策略;所述请求包括与所述分组相关的所述参数;以及在所述层进程处接收一响应,其包括识别第一网络策略的第一策略值和识别第二网络策略的第二策略值。
9.如权利要求8所述的方法,其特征在于,所述层进程是一用户层。
10.如权利要求8所述的方法,其特征在于,所述层进程是一核心层。
11.如权利要求8所述的方法,其特征在于,所述第一网络策略是一防火墙策略而所述第一策略值是一动作值。
12.如权利要求11所述的方法,其特征在于,所述动作值是允许或阻止中的一个。
13.如权利要求8所述的方法,其特征在于,所述第二网络策略是定义密钥协商协议参数的安全性策略。
14.一种用于在一网络设备中维持多个网络策略的方法,包括把一组过滤器安装至一策略引擎中,所述过滤器中的每一个包括一组过滤器条件;识别第一网络策略的第一策略值和识别第二网络策略的第二策略值。
15.如权利要求14所述的方法,其特征在于,所述第一网络策略是防火墙策略而所述第二网络策略是安全性策略。
16.如权利要求15所述的方法,其特征在于,所述安全性策略是IPSec策略。
17.如权利要求15所述的方法,其特征在于,所述第一策略值是一动作而所示第二策略值是一策略环境。
18.如权利要求14所述的方法,还包括由策略引擎从过滤器组中识别一匹配过滤器,所述过滤器组包括与所述多个网络策略将要应用的分组相匹配的过滤器条件;以及在所述分组上至少执行所述第一网络策略。
19.如权利要求14所述的方法,其特征在于,所述安装所述过滤器组的步骤在一操作系统用户模式中被执行。
20.如权利要求14所述的方法,其特征在于,所述安装所述过滤器组的步骤在一操作系统核心模式中被执行。
21.如权利要求14所述的方法,其特征在于,所述多个策略包括防火墙策略、安全性策略和多个服务质量策略。
22.如权利要求14所述的方法,其特征在于,所述过滤器条件组可动态地配置,使得过滤器条件按照期望的策略被增加或者删除。
23.一种其上保存了定义过滤器的数据结构的计算机可读媒质,包括第一组数据,包括定义匹配分组的一组过滤器条件;第二组数据,包括第一网络策略;以及第三组数据,包括第二网络策略,其中所述第一网络策略和所述第二网络策略不同。
24.如权利要求23所述的计算机可读媒质,其特征在于,所述过滤器条件组适用于于包括多个可动态配置的过滤器条件。
25.如权利要求23所述的计算机可读媒质,其特征在于,所述过滤器条件组包括一数据类型和与所述数据类型匹配的相应数据。
26.如权利要求23所述的计算机可读媒质,其特征在于,所述第一网络策略是防火墙策略。
27.如权利要求26所述的计算机可读媒质,其特征在于,所述第二网络策略是服务质量策略。
28.如权利要求26所述的计算机可读媒质,其特征在于,所述第二网络策略是安全性策略。
29.如权利要求26所述的计算机可读媒质,其特征在于,所述数据结构还包括识别所述过滤器的优先权的过滤器权重。
30.一种用于执行计算机可执行指令的计算机可读媒体,所述指令便于一用于集成多个基于过滤器的策略的框架,所述策略将被应用于至少包括防火墙策略和安全性策略的数据分组,该框架包括一组用于识别和分组相关的至少一个参数的层进程;与所述层进程组通信的一策略引擎;以及保存在所述策略引擎中的一组过滤器,所述过滤器组中的每一个过滤器都具有过滤器条件、识别所述防火墙策略的动作以及识别所述安全性策略的策略环境。
31.如权利要求30所述的计算机可读媒质,其特征在于,所述多个基于过滤器的策略还包括一服务质量策略,其识别将要被应用于分组的通信设置,所述服务质量策略由所述过滤器组中的策略环境定义。
32.如权利要求30所述的计算机可读媒质,还包括在所述层进程组中的一请求层进程,发送至少一个参数至所述策略引擎且所述策略引擎从具有与所述至少一个参数相匹配的过滤器条件的过滤器组中识别匹配的过滤器,所述策略引擎把所述防火墙策略和安全性策略返回至所述请求层。
33.如权利要求32所述的计算机可读媒质,其特征在于,所述请求层是一个键控模块层,而在所述匹配过滤器中的安全性策略识别一用于按照密钥协商协议协商一安全性关联的策略。
34.一种用于执行计算机可执行指令的计算机可读媒质,所述指令用于确定将要被应用于一层进程中的一分组多个网络策略,包括由所述层进程识别与所述分组相关的一组参数;由所述层进程发送一请求以识别将要被应用于所述分组的所述网络策略;所述请求包括相关于所述分组的所述参数;以及在所述层进程处接收一响应,其包括识别第一网络策略的第一策略值和识别第二网络策略的第二策略值。
35.一种用于执行计算机可执行指令的计算机可读媒质,所述指令用于在一网络设备中维持多个网络策略,包括把一组过滤器安装至一策略引擎中,所述过滤器中的每一个包括一组过滤器条件;识别第一网络策略的第一策略值和识别第二网络策略的第二策略值。
36.如权利要求35所述的计算机可读媒质,还包括由一策略引擎从过滤器组中识别一匹配过滤器,所述过滤器组包括与所述多个网络策略将要应用的分组相匹配的过滤器条件;以及在所述分组上至少执行所述第一网络策略。
37.如权利要求35所述的计算机可读媒质,其特征在于,所述过滤器条件组可动态配置,使得过滤器条件按照期望的策略被增加或者删除。
全文摘要
公开了一种用于在网络设备中管理和实施多个网络策略的方法和系统。多个策略中的每一个由一个或多个过滤器定义。过滤器被安装在一策略引擎中。一层通过发送一请求至策略引擎来识别将要被用于一分组的网络策略。策略引擎接下来把策略返回至请求层。该方法和系统可用于实施一可编程的、基于主机的、分布式的认证防火墙,它能在几个协议层应用安全性和其他策略。
文档编号G06F21/20GK1574791SQ20041004884
公开日2005年2月2日 申请日期2004年6月7日 优先权日2003年6月6日
发明者B·D·斯旺德, W·H·迪克松 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1