基于软件定义网络的安全攻防虚拟仿真实战平台
2018-12-05叶福玲林为伟
叶福玲, 张 栋, 林为伟
(1. 福州大学 数学与计算机科学学院, 福建 福州 350116;2. 福州大学 网络信息安全与计算机技术国家级实验教学示范中心, 福建 福州 350116)
随着互联网飞速发展,网络安全问题日益凸显。作为信息安全及相关专业的核心课程,计算机网络安全类课程具有较强的实践性,特别是网络安全攻防实战课程,只有通过系统实验、实训,才能让学生掌握网络安全攻防的能力。然而,由于网络安全攻防实验的特殊性和破坏性,网络安全攻防的实验教学主要依赖于虚拟仿真环境。构建网络安全攻防虚拟仿真平台对于网络安全实验教学具有重要意义[1-4]。
近年来,虚拟仿真实验教学产品在一定程度上满足了网络安全攻防实战教学的需要,但却存在一些共性问题,主要是:(1)产品网络拓扑相对固化,实现拓扑的灵活变化困难;(2)产品提供的攻防环境模式相对单一,攻防环境设置和切换困难;(3)产品的技术细节被屏蔽,较难实现与其他开源软件融合。随着软件定义网络(software defined networking,SDN)的发展,上述问题有望得到解决。
作为新型网络架构,SDN将转发与控制相分离。控制平面负责数据转发策略的制定和下发;数据平面由交换机等网络元素组成,负责数据包的转发操作。控制平面与数据平面间通过南向OpenFlow协议实现通信[5-7]。SDN通过集中式管理、网络可编程、网络虚拟化等方式,使网络能被灵活控制,支持各类应用场景的定制,为解决网络安全攻防虚拟仿真产品的共性问题提供了可行的方案。
1 网络安全攻防虚拟仿真实战平台的设计
1.1 总体思路
网络安全攻防虚拟仿真实战平台基于SDN架构,具有数据平面与控制平面分离、控制器集中控制网络,并可用全局视野对网内资源进行集中调度等特点。平台引入OpenStack开源云服务,在网络拓扑构建中按需、可度量、快速、弹性地对资源池中的计算、网络、存储等资源进行管理和分配[8-10]。在实体控制器和数据存储的基础上,平台虚拟化部署交换机、防火墙、应用服务器等,通过SDN控制器集中配置虚拟网拓扑,并保证虚拟网的有效隔离。平台的设计基于SDN和虚拟化,支持包括网络拓扑和攻防模式等实战环境的多样化和灵活变更,以适应不同的实验场景。平台基于开源技术,相对容易与其他开源软件实现融合扩展,无需产品许可,建设成本较低。
1.2 关键技术
(1) 软件定义网络SDN。SDN将控制功能从网络设备分离,数据平面仅维护流表结构,而流表管理归控制器负责,实现逻辑控制和数据转发相分离的网络架构。在这种架构下,控制器管理和配置网络的逻辑控制策略,交换机根据控制器下发的流表完成数据包的转发。随着SDN概念的提出,OpenFlow 成为SDN网络可编程思想的载体,代表了SDN的实现原型和部署实例,也是目前SDN控制平面和数据平面相互通信最常用的协议标准[7,11]。攻防实战平台使用OpenFlow 1.3实现控制平面和数据平面的通信。
(2) Open vSwitch。Open vSwitch是一种虚拟交换机,通过编程扩展,使大规模的网络自动化成为现实,并支持标准管理接口和协议。OpenvSwitch支持多种Linux虚拟化技术,是云计算平台中虚拟交换机的首选[12]。攻防实战平台使用Open vSwitch作为虚拟交换机。
(3) OpenStack。OpenStack既是云计算平台项目,也是开源的云计算操作系统,它包含计算节点、控制节点、存储节点和网络节点。OpenStack的核心服务组件包括Nova(计算)、Neutron(网络)、Swift(对象存储)、Cinder (块存储)、Glance (镜像)、Keystone(认证)等。OpenStack通过一个Dashboard控制面板为服务提供可视化的UI接口[13-15]。攻防实战平台使用OpenStack构建操作平台,实现SDN控制设备和转发设备等网络资源的虚拟化。
1.3 网络拓扑
平台的实体设备包括控制服务器和数据服务器。平台引入虚拟化技术,虚拟出SDN控制器、交换机、防火墙、实战靶机服务器、渗透主机等设备,构建SDN攻防实战网络拓扑。用户登录攻防平台,连接渗透主机,按照事先划分的网络拓扑渗透相应的靶机服务器,展开攻击。平台网络拓扑如图1所示。
图1 基于SDN的网络安全攻防虚拟仿真实战平台网络拓扑图
(1) 控制服务器:攻防平台的控制节点,同时部署攻防实战管理系统和答题系统。首先,控制服务器作为OpenStack的控制节点,安装Nova、Neutron、Swift等组件,分别负责计算、网络和存储,其中Neutron的L2 Agent代理选用Open vSwitch实现虚拟交换,也是SDN交换机。控制节点的所有管理在Dashboard提供的Web界面进行。其次,控制服务器部署实战管理系统和答题系统,分别由教师(管理员)和学生使用。
(2) 数据服务器:平台的数据存储,保证数据的保密性、完整性和可用性,负责对系统各类信息的统一存储和控制。
(3) SDN控制器:OpenStack创建的虚拟部件。下发流表,数据平面各转发设备根据流表规则完成数据包转发,使各个虚拟部件配置形成网络拓扑,并保证各组网络的相互隔离,用户只能连接相对应的靶机。
(4) 交换机:OpenStack创建的虚拟部件。控制器下发流表到虚拟交换机,由交换机连接各种攻防设备。
(5) 实战靶机:OpenStack创建的虚拟部件。根据攻防实战难度的不同,提供不同安全漏洞的系统镜像,渗透难度越大,靶机等级越高。实验时,先创建不同等级的镜像实例,再分配给相应团队。在单向攻击的模式下,每个团队渗透自己的靶机,在对战互攻模式下,两个团队可互相攻击对方的靶机,并且可以给自己的靶机设置防御措施。
(6) 防火墙:OpenStack创建的虚拟部件,主要用于隔离实战靶机,保证虚拟实战环境的隔离性。
(7) 渗透主机:OpenStack创建的虚拟部件,可连接靶机,实现渗透攻击和安装防御工具。
2 网络安全攻防虚拟仿真实战环境的设置
在开始虚拟攻防实战之前,教师或管理员需根据实验要求,提前设置实战的网络环境,学生在实战环境中开始实验。传统攻防实战平台和SDN的攻防实战平台在实战环境设置上有明显区别。
2.1 传统攻防实战环境设置
传统攻防实战平台采用实体设备,这些设备在部署时已人为划分好各子网,并在设备上设置了对应端口。平台在安装部署时,只需将对应的主机连接至相应的设备端口即可。这样的设计虽然简化了安装配置过程,但攻防实战的网络环境固化,扩展困难,因而不支持实战环境的多样化和灵活变更,难以适应多样化的实验场景。
现在有部分攻防实战平台采用虚拟化技术,在一定程度上解决了实体设备固化、网络扩展困难等问题。通过虚拟化技术可以方便地添加和删除网络设备。但在传统网络环境中,网络数据转发机制缺少集中控制和全局视野,一旦平台网络拓扑发生变化,就需要更改所有转发设备,同样难以支持实战环境的多样化和灵活变更,较难适应不同的实验场景。
2.2 SDN攻防实战环境设置
引入SDN后的平台系统架构如图2所示,可以看出攻防实战平台的实战环境变得灵活,可从攻防实战环境设置的3个步骤体现。
图2 基于SDN的网络安全攻防虚拟仿真实战平台系统架构图
2.2.1 构建网络部件
平台利用OpenStack的Neutron组件提供虚拟网络功能,全过程通过Nova组件实现资源调度。OpenStack由NeutronServer提供API给Plugin插件调用,实现攻防实战所需控制器、交换机、防火墙、靶机等各种部件。Plugin访问数据库获取逻辑网络的配置信息以及同物理网络的对应关系。Plugin Agent对Neutron Server端的各类Plugin提供代理,和各类Plugin完成信息交互。
在SDN网络下,Plugin的选择具有多样性。以交换机为例,当Neutron的Plugin配置成Open vSwitch时,控制平面通过OpenFlow流表进行转发控制,数据平面使用VXLAN技术进行隧道封装,这样构建出来的网络将支持灵活的API调用。
此外,攻防实战平台支持在现有网络下,根据实战用户数量变化,在硬件配置允许的范围内新增或删除网络部件,实现实战环境的灵活配置。
2.2.2 构建SDN网络拓扑
在构建网络部件时,平台选择装有OpenDayLight(ODL)开源控制器的虚拟机,通过北向接口连接攻防实战平台的控制软件,使用OpenFlow 1.3作为和交换机通信的南向接口,连接各个Open vSwitch交换机。
在数据包发送前,控制器需提前向交换机下发流表。流表包含所有OpenFlow预设或用户自定义的规则。当数据包到达交换机时,交换机根据规则匹配和处理实现转发或丢弃数据包。交换机内包含一张或多张流表,从0开始编号和匹配。每张流表包含了多条规则,按规则优先级先后匹配。当数据包在流表匹配到某一条规则时,交换机将更新计数器,执行Flow Entry设置的指令,再跳转至其他流表或直接执行匹配动作。当数据包在该流表内没有任何匹配,就进入优先级最小Table-miss规则,数据包默认被丢弃、发给控制器或另一张流表。
基于SDN的攻防实战平台能灵活定制网络拓扑。数据包匹配的内容可以是报文的任意字段,并且由ODL集中控制流表的下发,设置流表规则,实现任意网络部件的连通或隔离。当需要修改时,只需集中修改规则,下发新的流表。例如,在单向攻击模式中,控制器设置每台客户端虚拟机和分配靶机的连接,实现单向渗透攻击。改成互攻模式后,控制器设置客户端虚拟机可以连接防护自己的靶机,同时也可连接至对手团队的靶机进行渗透攻击。另一方面,当实战队伍数量变化时,平台支持在硬件配置能力范围内灵活新增或删减网络部件,再通过控制器向新增交换机下发流表,制定数据包的处理机制。
2.2.3 实现网络隔离
在SDN网络下,可用基于隧道封装模式的Overlay技术实现数据平面上不同用户在同一物理网络的相互隔离。攻防实战平台基于SDN网络,使用VXLAN这一典型的Overlay技术。如图3所示,虚拟机VM1和VM2经qbr、br-int、br-tun等3个虚拟网元实现VXLAN隧道通信。
平台的虚拟交换机Open vSwitch对应于VXLAN的VTEP(VXLAN tunnel end point)类型的网络设备,在Open vSwitch上搭建VXLAN网络。以图3为例,在VM1上设置VXLAN,远端IP设置为VM2能对外通信的IP,命令格式为:
# ovs-vsctl add-port [VM1的网桥] vx1 -- set interface vx1 type=vxlanoptions:remote_ip=[VM2能对外通信的ip]。
VM2设置过程同VM1,只需将IP改成VM1能对外通信的IP。设置完毕后,VM1和VM2之间就能实现VXLAN隧道通信。以上设置可实现对实战链路的有效隔离,保证控制链路不受实战环境的破坏。
图3 VTEP类型的VXLAN示意
引入SDN后,实战环境设置更加便捷灵活。图4展示了攻防实战环境设置的流程。实战环境设置完毕,用户登录实战系统,平台分配相应的虚拟主机。用户可以连接实战环境设置时配置的靶机,进行渗透攻击和防御实验,实现单向攻击或互相攻防。整个配置过程灵活多变,并且支持在硬件配置许可的范围内随时新增或删减实战团队。表1总结了各种攻防实战平台的组网方案,可以看出基于SDN的组网方案带来的便捷。此外,整个平台设计均使用开源软件,提高了可扩展性并降低建设成本。
表1 各种攻防实战平台组网方案比较
图4 设置攻防实战环境流程
3 结语
本文提出的基于SDN和虚拟化的网络攻防实战虚拟仿真实验平台,实战环境的设置能够支持网络拓扑和攻防模式等实战环境的多样化和灵活变更,以适应不同的实验场景。除此之外,平台使用开源软件,提高了可扩展性,并且节省了购买产品技术许可的成本,有利于平台的推广和使用,并促进网络攻防虚拟仿真实验教学水平的提高。