首页 资讯 招标 项目 展会 更多

位置:首页 > 新闻频道 > 技术动态


成果介绍:软件定义网络下状态防火墙的设计与实现

2015-12-14 09:50:09 安装信息网

相关链接: 中国安全网 中国质量网 中国论文网 中国资讯网

作者:田英

    2008年,斯坦福大学的Nick Meowm教授等人提出了OpenFlow这一概念,这是由Clean Slate计划资助的一个开放式协议标准,后来成为了GENI的子项目。随着对OpenFlow技术的深入研究,又进一步提出了软件定义网络( software defined networking, SDN)。基于Openflow协议下的SDN技术是一种新型的网络架构,中央控制器以软件的形式存在于网络构架中的控制层,对原本数据转发层各个设备上的控制部分以网络全局集中管理的形式加以替换,实现对整个网络运行的集中化管控与策略下发。在传统的因特网中控制功能负责对转发数据的决策,而数据转发功能是负责数据的转发,它们紧耦合在同一层网络基础设备上,正是因为这种控制与转发高度耦合的网络构架机制导致其网络控制平面管理变得相当复杂,当有新的网络技术出现时,很难及时地部署在原有的网络上。这种形式的网络架构在其扩展性和灵活性上很难跟上当今网络高速发展的步伐。在OpenFlow协议标准化的SDN网络架构下,网络的控制转发分离架构使得控制转发的策略存在于控制器中,策略的下发也是通过控制器下发到数据转发层,从而引导着网络底层设备(如交换机)进行数据的转发。这样一来转发层的功能将变得单一而高效,新的网络技术和协议在原有网络中的融合将变得更加容易,这种网络架构下其灵活性和可操作性方面相比于传统的网络有大幅提升。逻辑控制和数据转发分离的这种管控思想是SDN技术的研究基础。

    在0pen flow协议SDN环境下的防火墙部署方面,相比于传统防火墙的部署特点,SDN防火墙不是直接部署在被保护网络的边界,而是通过在控制层的中央控制器这一软件管控形式将策略下发到转发层的设备上,因此防火墙的升级、修改、配置等无需在转发层中处于安全状态的硬件设备上逐一进行,这种网络运行机制加快了防火墙开发和部署。在SDN架构下,防火墙策略的部署与下发也具有其特有的特性:1)弹性化,通过SDN控制器提供的可编程接口,灵活制定具有差异化的防火墙策略,构建一个可灵活应对不同安全需求的防火墙应用;2)高效性,由于处在控制层中的SDN控制器能够全局化实时监控网络基础设施的运行状态,从而能够更加及时而准确地监控和管理防火墙策略运行的状态,及时反馈给管理员,便于管理人员高效管理整个网络环境;3)细粒度,SDN环境中OpenFlow协议标准化的流表结构扁平化了对数据包在网络中转发的处理层次,使得网络中的数据在OpenFlow协议标准下对数据转发的处理能满足细粒度要求。SDN的防火墙策略不仅能满足传统防火墙访问控制和隔离的功能,还可以进一步根据Open Flow流表项中字段和网络资源进行抽象和处理,从而使防火墙在应对事件处理中能有粗粒度到细粒度的选择性空间。本文通过构建虚拟网络环境,调用控制器的REST API端口,编写了一个基于IP地址的状态防火墙策略,并基于此防火墙进行一个实例的验证与分析。

1 SDN网络架构及其防火墙构成

    1) SDN网络架构

    SDN作为一种新兴的可编程的网络架构,将传统的网络设备紧耦合的网络架构解耦成应用、控制、转发3层,完成基于OpenFlow标准化协议下SDN控制器对网络状态运行的实时集中管控以及网络应用的可编程化,如图1所示。

    在SDN网络体系架构中,完成对各层面之间的接口的开放和标准化是关键:(1)控制平面与数据平面的接口(又称为南向接口),该接口屏蔽网络基础设施资源在类型、支持的协议等方面的异构性,使得数据平面的网络设备(如交换机)能够通过标准化的OpenFlow协议接收控制平面的指令。SDN控制器通过南向协议进行链路发现、拓扑管理、策略制定、表项下发,其中链路发现和拓扑管理主要是控制器利用南向接口的上行通道对底层交换设备的上报信息进行统一监控和统计;(2)控制层和直用层的接口(又称为北向接口),北向接口能为网络用白或网管人员提供足够的开放性,从而使得管理人员能够通过应用层的软件在控制平面中央控制器对数据转发层下发指令与策略,完成对整个被管理网络的控制与服务。

    基于OpenFlow的SDN技术带给运营商和用户带来了更加灵活的网络管控、更高效的资源利用率、更弹性的资源调度。我们将其分为三个部分并加以阐述:(1)更加灵活的网络管控,其标准化的南向接口屏蔽了底层设备的异构性,管理者只需在控制层通过控制器就能够实现对整个网络的统一管控,即通过SDN中央控制器对转发层下发指令和策略,无需手动地对网络硬件设备进行配置;(2)更高效的资源利用率,由于SDN控制器监控着整个网络基础设施的状态,对网络状态实时信息有全局的管控,从而能够更加智能和实时地调配网络资源,有效提高了网络资源的利用率;(3)更弹性的资源调度,处于应用层的各种业务需求和应用可以通过北向接口得以实现,再由处于控制层的SDN控制器通过南向接口将网络策略下发到数据转发层,从而实现了更加弹性化的资源调度。

    正如SDN的名字所言,它具有灵活的软件编程能力,使得网络自动化管理和控制能力获得了空前的提升,能够有效解决当前网络系统所面临的资源规模扩展受限、组网灵活性差、难以快速满足业务需求等问题。

    2)基于SDN网络的防火墙构成

    基于OpenFlow的SDN环境下的软件防火墙主要由五大功能模块组成,如图2所示。

  (1)防火墙模块:该模块相当于是应用层的一个应用程序,定期通过控制层获取底层网络运行状态信息。例如,底层交换机接到大量恶意数据包或者网络拓扑中的某些链路失效,实时评估当前网络的安全状态,从而调整对网络状况查询频率,能及时地通过控制器向数据转发层下发相应的包过滤规则等一系列有效措施,为网络提供有效的安全屏障。

    (2) REST API服务模块:在控制平面中REST API服务模块实际上是完成了与上一层应用层的对接,也就是之前提到的南向接口,而包过滤模块就是通过这一标准化开放的可编程接口完成与上层防火墙模块的交互。该模块中向应用层提供的开放的可编程接的接口,即REST API形式,同时也遵循了网络中HTTP等相关协议。

    (3)包过滤模块:该模块内含一套过滤规则,规则定义了包过滤模块对于数据包的具体操作,对接收到的数据完成通过或丢弃决策。包头涵盖多个域,如源IP地址、目标IP地址、源MAC地址、目的MAC地址、通信协议号等,包过滤模块中的过滤规则主要是对数据包头中多域的参数值进行匹配。包过滤的过程即在控制平面中通过对接收到数据包进行解析,检查数据包的头部匹配域的参数值,从而决定是否让数据包通过或者直接进行丢弃。

    (4)二层转发模块:该模块主要是通过OpenFlow协议与数据转发层进行信息的交互,对于数据包的控制信息即通过此模块传递到数据转发层。二层转发模块主要是对数据转发层中的网络拓扑或者是流表项等信息定期进行统计,并将所获得的信息传递给控制器,相当于整个网络中指挥中心与数据转发层的枢纽。

    (5)数据转发模块:该模块运行在一些支持OpenFlow协议的设备(主要指支持OpenFlow协议的交换机)上,只是简单地完成对数据包的转发工作。存在于交换机中的流表同样按照OpenFlow协议制定,流表项由匹配域、计数器和动作三项组成。数据的转发是对交换机中的流表项进行优先级的匹配,对于匹配成功的数据包会直接执行流表项中的动作和计数器功能,如转发到交换机的某个端口,并在计数器中记录转发包的数量等。对于没有匹配成功的数据包将以PACKET_IN的形式发送到控制器进行处理。

2虚拟环境构建

    1)网络拓扑建立与功能描述

    ( 1)网络拓扑中共有两个网段,10.1.1.0/24代表内网,包括两个主机(hostl与host2)和一个HTTP服务器(host3);10.1.2.0/24代表外网,由一个主机(host4)作为代表,对于每个网段的lP网关设置为10.1.X.0/24,X=l,2分别代表内网与外网,两个网络是通过一个OpenFlow交换机连接起来;整个网络的控制层则由Pyretic模式下的控制器架构来代替。

    (2)对于OpenFlow的交换机,整个网络拓扑都为2L-learning交换机,即网络拓扑中任意交换机都有学习认识网络拓扑中其他交换机端口的功能;IP网关负责连接两个网络(内网与外网)。其中状态防火墙是用来实现内网与外网的隔离,为了简单起见,我们仅设定为基于IP地址的主机识别,在状态防火墙的作用下它能让内网的主机随时访问外网,外网被访问的IP仅能短时间(如3秒内)与访问主机进行通信。当然,处于外网的主机能够随时访问HTTP服务器,HTTP服务器能够随时与内网的主机进行通信。

    2) Pyretic模式下的虚拟环境实现

    在虚拟环境的搭建中,所有主机与交换机由mininet来提供,为了完成mininet与Pyretic模式的融合,我们将对mininet下的网络拓扑组件进行虚拟化,从而在接下来防火墙策略的建立中能使用Pyretic所特有的语法与规则。上文中的物理OpenFlow交换机,在Pyretic模式将其分解为多个虚拟组件,这样一来,错综复杂的一个组件将转换成许多个小的组件。实际上是把一个大交换机虚拟化为许多小的虚拟MAC感知交换机。这些小的组件每一个都有一个虚拟标签,包括防火墙、虚拟网关等。在Pyretic模式下,数据包的转发、流表字段的设定以及在试验中防火墙策略的设计将变得更灵活简便。整个虚拟网络如图3所示。

3 Pyretic与状态防火墙机制

    1) Pyretic

    在这里有必要介绍—下网络编程语言Pyretic,对于网络管理员来说,Pyretic能够提供一种高层次的北向SDN AIP,即与SDN的控制器关联。我们选取Pyretic来完成网络虚拟环境和状态防火墙的建立,是因为Pyretic具有其独特的优势。

    Pyretic是一种程序友好且领域特定的Python内嵌的语言,Pyretic隐藏了SDN编程的复杂性,简化了策略创建的过程;Pyretic提出了并联操作符和顺序操作符,将由不同模块生成的策略通过一种简单却功能强大的方式结合起来;Pyretic提出了网络对象的概念,它允许程序员抽象化物理拓扑结构的细节并且依据网络的抽象特点编写策略;

抽象数据包模型使得高层信息和数据包可以联系起来并且使得模块之间可以相互协调。

    接下来,我们将简单介绍常用的Pyretic策略与表达.值得注意的是‘+’为策略并联操作符,‘I’为匹配联合操作符。

    match(f=v):过滤报头域f值为v的数据包

    —A:    谓词取反

    A&B:  谓词A与B的逻辑交

    A l B:  谓词A与B的逻辑并

    fwd(a):  转发数据包输出端口a

    flood():  除了输入端口,在一个网络最小生成树中发送的所有数据包到所有端口

    drop:  产生空集(没有输出数据包)

    passthrough:产生输入数据包(标识功能)

    A>>B:  A的输出变为B的输入(顺序组合)

    A +B:  A的输出和B的输出被平行组合

    if_(p,A,B).如果数据包被P过滤,那么使用A,否则使用B

    Pyretic提供一种运行实时系统,该系统允许程序员高度抽象网络策略,再用多种方式将它们组合在一起,并执行它们抽象的网络拓扑。这些在第2部分的网络虚拟环境的建立中能够很好地体现。例如,(match(at=None. inport=l)>> push_vloc(lOOO,l》+(match(at=None. inport=2)>>push_vloc(1000,2》,表示在内网中,hostl和host2与虚拟化的Openflow交换机(在mlmnnet中为ovskLwitch)建立对接。而在状态防火墙中函数功能完成策略的合并与级联也是至关重要的。例如,self.policv= self.forward+ (self.wp>>self.query),表示状态防火墙策略更新是基于当前转发和查询策略的。

    2)状态防火墙机制

    实验中所使用的状态防火墙策略是通过上文中提到REST API开放网络编程接口使用POX控制器在虚拟网络中对OpenFlow交换机完成策略的部署与下发。在状态防火墙pyretic_firewall.py脚本中,主要由IPquery、Policy.Timequery等函数完成一种状态防火墙机制,IPquery函数主要是完成内网IP与外网IP的匹配识别功能,从而达到限制访问的效果;Policy函数相当于为IP匹配提供一种依据,即视为一种存放黑名单和白名单的IP地址库;Timequery函数完成通信的时间限制。在实验过程中Policy函数中的IP地址库是依据Timequery函数提供的时间限制访问而动态更新的,并且访问的发起是由内网主机发起的,整个防火墙体系即视为一种状态防火墙机制。

    从宏观层面上看,本实验中的状态防火墙属于应用平面中的一个应用,在SDN控制器的北向接口完成上层应用的调用再通过控制器的南向接口对底层虚拟化的交换机完成策略的下发。在上述虚拟网络环境建立完成的情况下,状态防火墙机制中简单逻辑流程为:当内网主机的IP访问外网主机( host4) IP时,在设定时限内(f=3s)两主机可以互相ping通,超过时限时外网被ping的IP将不能ping通内网的IP,整个状态防火墙策略的下发都是由控制器Controller完成。状态防火墙机制描述如图4所示。

4实验与结果

    1)实验环境准备

    本文网络虚拟环境的建立以及实验的测试都在一台装有XenCenter( version 6.2)的服务器上完成的,XenCenter是一个能提供虚拟机的平台。整个实验中我们仅需在XenCenter平台上创建一个虚拟机并取名为VM( Ubuntu13.10),在VM中装载有mininet,mininet是开源的,可以通过mininet镜像文件导入VM中。mininet可创建一个支持SDN的任意拓扑的网络结构,并可以灵活地进行相关测试,本实验中网络虚拟环境中所有主机和交换机由mininet产生;mininet自带实验中控制平面中的控制器POX,当mininet启动时POX控制器也会及时启动,而由Pyretic编写的状态防火墙策略是通过控制POX下发给数据平面的。接下来将更加详细地介绍整个实验过程。

    2)实验环境建立

    在这里我们将完成虚拟环境构建以及状态防火墙的下发:

  (1)对于在图1中的虚拟网络建立,我们是在装载有mininet的虚拟机VM中用Python编写一个网络拓扑脚本mininet_pyhsical_network.py来实现的。在mininet中本可以通过简单的指令就可以完成网络拓扑的建立,但因实验要求,我们要对其建立的网络拓扑进行Pyretic模式的融合。在VM中键人下面的指令即完成了网络虚拟环境的建立,如图5所示。

    sudo python mlnlnet_pyhsical_network.py

    (2)启动用Pyretic编写的状态防火墙策略脚本pyretic_firewall.py,该脚本放置于/root/pvretic/pyretic/examples目录下,与状态防火墙的主函数pyretic_main在同一目录下。执行主函数脚本后,虚拟网络将与Pyretic模式下的POX控制器进行连接,防火墙策略此时已开始生效。启动指令如下:

    Pyretic.py pyretic.examples.pyretic_main

    3)实验测试与结果分析

    在完成上面实验环境的搭建的基础上,我们将在mininet中用ping操作完成整个实验的测试与结果的说明。

    实验场景l:在mlnlnet中验证内网的连通性,即hostl对host2进行ping操作。指令:hl ping -cl h2。mlnlnet中可以直接观察到结果,如果成功则说明内网的L2-learning交换机工作正常,且内网络主机之间可以连通,同时我们也可以通过ping指令完成主机与服务器之间的连通性。

    实验场景2:在mlnlnet中验证内网与外网的连通性,即host4对host3进行ping操作。指令:h4 ping -cl h3。同上在mlnlnet中直接观察结果,在状态防火墙机制中,我们设定外网主机可以直接ping通内网服务器,即外网主机h4随时可ping通host3运行HTTP服务。

    实验场景3:在mininet中验证状态防火墙的主要功能,即hostl对host4进行ping操作。指令:hl ping -cl h4。在mlnlnet中直接观察结果,在设计状态防火墙机制时,内网主机能ping通外网主机,实验中t=3s,即h4在3s内能回ping主机hl,超过3s,则host4不能ping通hostl,对于所属内网的host2效果也是如此。

    实验场景4:在mlnlnet中验证内网与外网的隔离性,即host4对hostl进行ping操作,指令:h4 ping -cl hl。在mininet中直接观察结果,此项实验同时也能体现状态防火墙具备的普通防火墙的网络间访问控制特性,只有内网主机hl先行ping主机h4并且在f时间内才能成功,外网主机不能直接访问内网主机(hostl和host2)。

5结束语

    基于Openflow协议的SDN网络架构下的防火墙有着传统防火墙不具备的优势。SDN网络架构下的可编程管理方式具有高度的灵活性,在对防火墙进行功能的升级或应用进行增删改时无需过度依靠硬件与专业系统的开发,可以以模块或应用程序的方式加入SDN网络架构中。同时,SDN作为一种全新的未来网络管理架构,SDN防火墙具有的弹性化、高效性、细粒度等特性,使其在实际应用中能体现出巨大的实用价值,很好地实现了现有网络技术和未来网络的融合。

  本文在对SDN环境下防火墙特性分析的基础上,通过一个实例,利用SDN中数据传输面板与控制面板分离的特性,以及Pyretic提出的一种基于SDN的网络编程语言,将本文中的状态防火墙策略和流表策略融合到一起,再由控制层面通过控制器POX(Pyretic模式)下发到虚拟网络环境中的交换机中。实验表明了SDN网络构架环境下该防火墙下发的灵活性和细粒度。

6摘要:

软件定义网络(software defined networking,SDN)技术将传统网络构架解耦为控制平面和数据平面,为研发网络新应用和未来互联网技术提供了一种新的解决方案。但随着SDN相关网络设备的出现,安全问题成为制约其发展的一个重要因素。传统的防火墙被置于非信任的网络与被保护网络之间,当网络出现安全隐患时采用边界上的过滤封锁机制来应对。然而传统防火墙在面对不断更新的大量网络攻击时仍然漏洞百出,急需对防火墙应对危险的机制进行创新。SDN是一种新兴的控制与转发相分离并直接可编程的网络架构,其核心思想是将传统网络设备紧耦合的网络架构解耦成传输面与控制面,网络管理人员可以通过一个中央控制器向网络中的交换机下发防火墙策略。文章先介绍了SDN防火墙架构相关知识后,采用软件定义网络编程语言Pyretic编写一种基于IP地址识别的状态防火墙,并将其部署在控制面中。通过搭建虚拟网络完成状态防火墙策略部署与下发实验,充分表明该防火墙策略在软件定义网络环境中实现的灵活性与控制的细粒度。

关键字:

上一篇:理论与实践:木聚糖酶的发酵动力学研究与分批补料控制

下一篇:经验介绍:石家庄医院北水库报废除险处理工程设计

行业资讯月点击排行

展会信息月点击排行

招商信息月点击排行

首页 资讯 招标 项目 展会
关于我们 | 广告服务 | 友情连接 | 联系我们
触屏版 电脑版
安装信息网 www.36qyk.cn.