一种基于软件定义网络的安全防御系统及防御方法.pdf

上传人:111****11 文档编号:4882746 上传时间:2018-11-21 格式:PDF 页数:14 大小:808.21KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410287800.6

申请日:

2014.06.25

公开号:

CN104023034A

公开日:

2014.09.03

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/06申请日:20140625|||公开

IPC分类号:

H04L29/06

主分类号:

H04L29/06

申请人:

武汉大学

发明人:

崔竞松; 郭迟; 张萌; 田昌友

地址:

430072 湖北省武汉市武昌区珞珈山武汉大学

优先权:

专利代理机构:

武汉科皓知识产权代理事务所(特殊普通合伙) 42222

代理人:

鲁力

PDF下载: PDF下载
内容摘要

本发明涉及一种计算机安全技术领域,特别涉及一种基于软件定义网络的安全防御系统及防御方法,包括:网络控制模块、攻击分析模块、进程检测模块以及网络流量检测模块。网络控制模块拦截虚拟机之间的网络数据包并将获取的流量信息转发至攻击分析模块,攻击分析模块接收来自网络控制模块的虚拟机间的流量信息,并调用进程检测模块检测进程是否可疑,必要时调用网络流量检测模块对可疑流量进行更深层的检测。本发明针对当前虚拟机服务器中用于各虚拟机之间流量转发的虚拟交换机进行扩展,提出一个能够拦截、检测、重定向流量的纵深防御系统,能够达到预防并制止网络集群内虚拟机之间攻击行为的目的。

权利要求书

权利要求书1.  一种基于软件定义网络的安全防御系统,包括若干台虚拟机、虚拟机交换机、虚拟机接口模块、以及一台openflow交换机;其特征在于,还包括设置在受保护虚拟机外部的:一网络控制模块:某台虚拟机经过虚拟机交换机发起的网络连接请求数据包,会以openflow交换机为介质到达网络控制模块,网络控制模块记录下流量的信息,且虚拟机交换机中没有该网络连接请求相应的流表项;如果数据包的协议高于网络层,则查看目标物理地址是否在虚拟机交换机上有端口,如果有则广播该包,无则生成流表项并转发到目的地;如果数据包协议不高于网络层,则网络控制模块将发送网络连接请求的datapath id、源地址、源端口信息发送出;一攻击分析模块:接受在数据包协议不高于网络层,由网络控制模块发送的网络连接请求数据包的datapath id、源地址、源端口;并调用进程检测模块和虚拟机接口模块获取发起请求的虚拟机的信息,并将判定结果返回给网络控制模块并由网络控制模块做出对策:判定一:若判定为恶意流量,则生成流表项并丢包;若判定不是恶意流量则生成流表项并送往原目的地;判定二:若无法判断是否恶意,则生成流表项并将数据包重定向到网络流量检测模块处;一进程检测模块:进行进程检测并将进程检测结果发送给攻击分析模块,具体是:首先利用虚拟机接口模块寻找虚拟机内的活动进程链,在此之前,需要找到Windows加载的内核模块链表表头,然后遍历内核模块链表找出ntoskrnl.exe;找到操作系统内核文件ntoskrnl.exe以及其加载到内存中的基地址后,通过分析ntoskrnl.exe的PE文件,在其中的.edata节的导出地址表中得到PsInitialSystemProcess的相对虚拟地址;PsInitialSystemProcess是指向系统进程的EPROCESS结构的指针,其在内存中的虚拟地址VA由VA=RVA+BaseAddress得出;在Windows中,活动进程的EPROCESS结构会相互连接成一个双向循环链表,故得到PsInitialSystemProcess地址并寻找到system的EPROCESS后,即可确定活动进程链,从而分析隐藏进程以及检测网络状态,提供进程相关信息给攻击分析模块;一网络流量检测模块:接收攻击分析模块发送的数据包,并进行深层检查,若判断为正常流量,则直接正常转发到原目的地并生成对应的流表项,若判定为恶意流量则生成流表项并丢包;本框架的工作在于对网络流量的捕获以及路由控制,而不在于改良现有的流量检测算法,因此本模块直接利用了开源工具snort,将snort运行在in-line模式下,实行数据包检测。2.  一种基于软件定义网络的安全防御方法,其特征在于,包括以下步骤:步骤1,在主机外接网络控制模块,使攻击分析模块控制网络控制模块;步骤2,某台虚拟机发起网络连接请求经过虚拟交换机时,若有相应的流表项则按照流表项转发,若虚拟交换机中没有相应的流表项,则虚拟交换机会将流量发送给网络控制模块;步骤3,网络控制模块记录下流量的信息并转发给攻击分析模块,攻击分析模块调用进程检测模块来获取发起请求的虚拟机的信息,进程检测模块可以判断发起者虚拟机内所有进程的安全状态;网络控制模块基于开源网络控制器增加了一个自循环避免环节,防止广播包在网络流量检测模块和虚拟交换机之间循环;步骤4,若攻击分析模块的决策断定发起网络请求的进程是可疑的,则攻击分析模块将会向网络控制模块发起命令,对于该进程或该进程所属的虚拟机所发出的所有流量,都将在网络控制模块的控制下被虚拟交换机送至网络流量检测模块进行判断;若判断结果为安全,则转向原目的地;若攻击分析模块的决策断定发起请求的进程为有害,则直接丢包;在此若只针对该进程发出的流量进行重定向,可以控制整个系统的开销;若针对该进程所属的虚拟机发出的所有流量都进行重定向,将会增大开销来保证系统的安全性。3.  根据权利要求2所述的一种基于软件定义网络的安全防御方法,其特征在于,网络流量检测模块包括两个被添加到被监控网络所属的虚拟交换机上的虚拟网卡,并设置成混杂模式用来嗅探网络流量;同时,配置网络流量检测模块其中一个虚拟网卡仅作为接收流量的入口,另一个网卡仅作为正常流量的出口;在这种状态下,广播流量易引起自循环,因为广播流量会发送到每个虚拟机中,当此流量进入到网络流量检测模块入口,网络流量检测模块会判断是否正常,若为正常,便让其通过出口又重回到虚拟交换机上重新进行广播;网络流量检测模块包括一个自循环避免步骤,具体操作如下:如果数据包不是产生于虚拟交换机的端口,则认为该数据包不合法,丢弃;若数据包产生于虚拟交换机的端口且目标物理地址为空,则观察数据包的源地址和目标地址;如果源地址和目标地址同为网络流量监测模块,则认为该包为自循环包,遂丢弃;若不为自循环包,则执行广播操作;此处网络流量检测模块是使用的开源软件snort。4.  根据权利要求2所述的一种基于软件定义网络的安全防御方法,其特征在于,进程检测模块进行检测的具体方法是:首先利用虚拟机接口模块寻找虚拟机内的活动进程链;在此之前,需要找到Windows加载的内核模块链表表头,然后遍历内核模块链表找出ntoskrnl.exe;找到操作系统内核文件ntoskrnl.exe以及其加载到内存中的基地址后,通过分析ntoskrnl.exe的PE文件,在其中的.edata节的导出地址表中得到PsInitialSystemProcess的相对虚拟地址;PsInitialSystemProcess是指向系统进程的EPROCESS结构的指针,其在内存中的虚拟地址VA可由VA=RVA+BaseAddress计算得出;在Windows中,活动进程的EPROCESS结构会相互连接成一个双向循环链表,故得到PsInitialSystemProcess地址并寻找到system的EPROCESS后,即可确定活动进程链,从而分析隐藏进程以及检测网络状态,提供进程相关信息给给攻击分析模块;包括以下步骤步骤4.1, 当网络控制模块接收到来自虚拟交换机的流量时,会记录下该虚拟交换机的datapath ID以及发送数据包的虚拟机对应在虚拟交换机上的虚拟网卡号和具体发包的进程所使用的端口号;步骤4.2, OPENFLOW交换机根据datapath ID,确定虚拟交换机所属的虚拟机集群;步骤4.3,虚拟交换机根据数据包来源的ofport,确定该数据包来源于何虚拟机;步骤4.4,为了了解具体发送数据包的进程,则调用进程检测模块和虚拟机接口模块,列出该虚拟机内的所有进程,以及进程所使用的网络端口;步骤4.5,将步骤4.1记录的source port与步骤4.4中的所有进程的网络端口号一一比对,找到符合的进程号pid,再将虚拟机的ID和进程的pid返回给攻击分析器;步骤4.6,攻击分析模块通过进程检测模块获取该虚拟机以及该进程的安全信息并进行分析,进而在先验知识帮助下做出决策;可疑进程列表和恶意进程列表是可以动态更新的,因为攻击分析模块每次得到进程检测模块的反馈后,若确认某进程可疑或恶意,便会更新这两个列表;步骤4.7, 若判定为恶意进程,则攻击分析模块会终止该进程与其他虚拟机的进程的通讯行为;若可疑则重定向它发出的流量到网络流量检测系统处检查;若正常,则按正常程序进行转发。

说明书

说明书一种基于软件定义网络的安全防御系统及防御方法
 
技术领域
本发明涉及的是一种计算机安全领域的防御系统,具体是一种基于软件定义网络的安全防御系统及防御方法。
背景技术
现有很多着重于检测被感染虚拟机并保护云中其他虚拟机不受其攻击的技术,如防火墙和入侵检测系统(Intrusion Detection System, IDS)。在网络层,传统的网络防火墙和基于网络的入侵检测系统(Network-based Intrusion Detection System, NIDS)建立在“被监控网络内——防火墙外”模式下。此种模式不适用于被感染虚拟机和攻击目标处于同一云主机内部的情况,因为网络防火墙和NIDS搜集的必须是进出被监控网络的信息。在主机层,个人防火墙,HIDS,防病毒和防间谍软件系统等,运行在它们所保护的虚拟机内,使得这些工具很容易被窃取到系统特权的攻击者破坏。故这些传统网络安全技术并不能很好的解决本文所着重解决的问题:及时检测有害虚拟机,并在其试图与其他虚拟机进行连接时予以阻止,防止攻击的发生。
目前,部分研究在虚拟化技术的基础上,发展入侵检测技术来检测网络通讯过程中的恶意行为,保障虚拟机的安全。
Tal Garfinkel等人提出的Livewire系统是一个虚拟化环境下的入侵检测系统,它将系统放置在被监控虚拟机外。它构建出的入侵检测系统不仅保留了主机层技术具备的良好系统状态视图,也为IDS提供了强大的隔离性。然而,Livewire仅提供了对虚拟机硬件的访问控制,仍无法阻挡通过网络流量进行的攻击。
W. Yassin 等人提出的一种基于云计算的框架,称作“基于云的入侵检测服务”(Cloud-based Intrusion Detection Service, CBIDS)。CBIDS能够克服传统入侵检测技术的不足,例如传统IDS一般部署在虚拟机内部,易受攻击;或是部署在被监控虚拟机的同一网络内,对其他虚拟机可见,也会增加风险。同时,该框架可以嗅探到网络内任意地方的网络流量,感兴趣的数据包会传递到CBIDS中进行深度检测,然后检测是否存在恶意行为并产生相应的警告。然而,CBIDS仅能检测网络流量并提出警告,却无法对攻击行为作出干预,本身不能阻止攻击发生。
Marcos Laureano 等人提出的一种入侵检测方案,从被监控虚拟机外部监控,检测并阻塞来自虚拟机内运行服务的攻击。方案包括了入侵检测机制和响应机制,保证既能检测出攻击行为,也能阻止其发生。此方案中,检测的是主机内虚拟机与外界(主机以外)进行网络通讯过程中的流量,这些网络通讯行为由安装在主机内的防火墙软件进行管理。因此,响应机制中是通过该防火墙软件阻塞虚拟机的端口并断开其与外界的通讯,而不能对同主机内虚拟机与虚拟机间的通讯进行控制。
而Flavio Lombardi 等人提出了另一个安全框架——KvmSec,它是内核为Linux的虚拟机的拓展,旨在增加被监控虚拟机的安全性。KvmSec具有以下几个特征:1. 对虚拟机透明,从虚拟机很难访问KvmSec;2. 能收集虚拟机信息并分析,然后做出相应反应;3. 能提供虚拟机与主机之间的安全通信。该框架是部署在Linux的主机上的,而且目前仅支持Linux虚拟机。同时,它所能提供的安全通信是Qemu与虚拟机间,即主机与虚拟机间的安全通信,而不提供主机与主机之间、主机内虚拟机与虚拟机之间的安全通信。
虚拟机监控方面,如高性能轻量级虚拟机监控器Trochilidae可检测虚拟机运行状态,然而侧重点不在于对网络流量的监控上。VMI技术即虚拟机自省技术,是从虚拟机外部分析虚拟机内部状态的一种方法。基于VMI的虚拟机保护方案将安全保护工具和被监控虚拟机予以隔离,因此无需在被监控虚拟机中安装任何代理。这一特点使得该方案抵抗攻击的能力大大增强,不受虚拟机的影响。现有部分研究也采用了此种方法。VMwatcher是另一个利用了VMI技术的系统,可重建虚拟机内部的语义视图,从而检测虚拟机内隐藏的恶意软件。其缺点是,首先它仅能检测出恶意软件的存在,但无法做出反馈;再者,它不能检测使用直接内核对象操作(Direct Kernel Object Manipulation, DKOM)方式的rootkit。Antfarm是一个基于虚拟机监视器实现的在虚拟机外部的监控系统,它通过监控客户机操作系统与其内存管理结构之间的低层次交互来追踪虚拟机内进程的活动。Lycosid是一个基于虚拟机监视器的隐藏进程检测识别的工具。它利用了Antfarm来获取虚拟机内进程的可信视图,然后利用交叉视图方式,与用户级程序列出的进程进行比较,得出隐藏进程。然而由于利用了用户级程序的结果,可能由于此结果被篡改而导致误判。
发明内容
本发明主要是解决现有技术所存在的技术问题;提供了一种通过对虚拟机网络集群内虚拟机之间的可疑流量进行拦截分析,能够达到预防并制止网络集群内虚拟机之间攻击行为的目的的一种基于软件定义网络的安全防御系统及防御方法。
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种基于软件定义网络的安全防御系统,包括若干台虚拟机、虚拟机交换机、虚拟机接口模块、以及一台openflow交换机;其特征在于,还包括设置在受保护虚拟机外部的:
一网络控制模块:某台虚拟机经过虚拟机交换机发起的网络连接请求数据包,会以openflow交换机为介质到达网络控制模块,网络控制模块记录下流量的信息,且虚拟机交换机中没有该网络连接请求相应的流表项;如果数据包的协议高于网络层,则查看目标物理地址是否在虚拟机交换机上有端口,如果有则广播该包,无则生成流表项并转发到目的地;如果数据包协议不高于网络层,则网络控制模块将发送网络连接请求的datapath id、源地址、源端口信息发送出;
一攻击分析模块:接受在数据包协议不高于网络层,由网络控制模块发送的网络连接请求数据包的datapath id、源地址、源端口;并调用进程检测模块和虚拟机接口模块获取发起请求的虚拟机的信息,并将判定结果返回给网络控制模块并由网络控制模块做出对策:
判定一:若判定为恶意流量,则生成流表项并丢包;若判定不是恶意流量则生成流表项并送往原目的地;
判定二:若无法判断是否恶意,则生成流表项并将数据包重定向到网络流量检测模块处;
一进程检测模块:进行进程检测并将进程检测结果发送给攻击分析模块,具体是:首先利用虚拟机接口模块寻找虚拟机内的活动进程链,在此之前,需要找到Windows加载的内核模块链表表头,然后遍历内核模块链表找出ntoskrnl.exe;找到操作系统内核文件ntoskrnl.exe以及其加载到内存中的基地址后,通过分析ntoskrnl.exe的PE文件,在其中的.edata节的导出地址表中得到PsInitialSystemProcess的相对虚拟地址;PsInitialSystemProcess是指向系统进程的EPROCESS结构的指针,其在内存中的虚拟地址VA由VA=RVA+BaseAddress得出;在Windows中,活动进程的EPROCESS结构会相互连接成一个双向循环链表,故得到PsInitialSystemProcess地址并寻找到system的EPROCESS后,即可确定活动进程链,从而分析隐藏进程以及检测网络状态,提供进程相关信息给攻击分析模块;
一网络流量检测模块:接收攻击分析模块发送的数据包,并进行深层检查,若判断为正常流量,则直接正常转发到原目的地并生成对应的流表项,若判定为恶意流量则生成流表项并丢包;本框架的工作在于对网络流量的捕获以及路由控制,而不在于改良现有的流量检测算法,因此本模块直接利用了开源工具snort,将snort运行在in-line模式下,实行数据包检测。
一种基于软件定义网络的安全防御方法,其特征在于,包括以下步骤:
步骤1,在主机外接网络控制模块,使攻击分析模块控制网络控制模块;
步骤2,某台虚拟机发起网络连接请求经过虚拟交换机时,若有相应的流表项则按照流表项转发,若虚拟交换机中没有相应的流表项,则虚拟交换机会将流量发送给网络控制模块;
步骤3,网络控制模块记录下流量的信息并转发给攻击分析模块,攻击分析模块调用进程检测模块来获取发起请求的虚拟机的信息,进程检测模块可以判断发起者虚拟机内所有进程的安全状态;网络控制模块基于开源网络控制器增加了一个自循环避免环节,防止广播包在网络流量检测模块和虚拟交换机之间循环;
步骤4,若攻击分析模块的决策断定发起网络请求的进程是可疑的,则攻击分析模块将会向网络控制模块发起命令,对于该进程或该进程所属的虚拟机所发出的所有流量,都将在网络控制模块的控制下被虚拟交换机送至网络流量检测模块进行判断;若判断结果为安全,则转向原目的地;若攻击分析模块的决策断定发起请求的进程为有害,则直接丢包;在此若只针对该进程发出的流量进行重定向,可以控制整个系统的开销;若针对该进程所属的虚拟机发出的所有流量都进行重定向,将会增大开销来保证系统的安全性。
在上述的一种基于软件定义网络的安全防御方法,网络流量检测模块包括两个被添加到被监控网络所属的虚拟交换机上的虚拟网卡,并设置成混杂模式用来嗅探网络流量;同时,配置网络流量检测模块其中一个虚拟网卡仅作为接收流量的入口,另一个网卡仅作为正常流量的出口;在这种状态下,广播流量易引起自循环,因为广播流量会发送到每个虚拟机中,当此流量进入到网络流量检测模块入口,网络流量检测模块会判断是否正常,若为正常,便让其通过出口又重回到虚拟交换机上重新进行广播;网络流量检测模块包括一个自循环避免步骤,具体操作如下:
如果数据包不是产生于虚拟交换机的端口,则认为该数据包不合法,丢弃;若数据包产生于虚拟交换机的端口且目标物理地址为空,则观察数据包的源地址和目标地址;如果源地址和目标地址同为网络流量监测模块,则认为该包为自循环包,遂丢弃;若不为自循环包,则执行广播操作;此处网络流量检测模块是使用的开源软件snort。
在上述的一种基于软件定义网络的安全防御方法,进程检测模块进行检测的具体方法是:首先利用虚拟机接口模块寻找虚拟机内的活动进程链;在此之前,需要找到Windows加载的内核模块链表表头,然后遍历内核模块链表找出ntoskrnl.exe;找到操作系统内核文件ntoskrnl.exe以及其加载到内存中的基地址后,通过分析ntoskrnl.exe的PE文件,在其中的.edata节的导出地址表中得到PsInitialSystemProcess的相对虚拟地址;PsInitialSystemProcess是指向系统进程的EPROCESS结构的指针,其在内存中的虚拟地址VA可由VA=RVA+BaseAddress计算得出;在Windows中,活动进程的EPROCESS结构会相互连接成一个双向循环链表,故得到PsInitialSystemProcess地址并寻找到system的EPROCESS后,即可确定活动进程链,从而分析隐藏进程以及检测网络状态,提供进程相关信息给给攻击分析模块;包括以下步骤
步骤4.1, 当网络控制模块接收到来自虚拟交换机的流量时,会记录下该虚拟交换机的datapath ID以及发送数据包的虚拟机对应在虚拟交换机上的虚拟网卡号和具体发包的进程所使用的端口号;
步骤4.2, OPENFLOW交换机根据datapath ID,确定虚拟交换机所属的虚拟机集群;
步骤4.3,虚拟交换机根据数据包来源的ofport,确定该数据包来源于何虚拟机;
步骤4.4,为了了解具体发送数据包的进程,则调用进程检测模块和虚拟机接口模块,列出该虚拟机内的所有进程,以及进程所使用的网络端口;
步骤4.5,将步骤4.1记录的source port与步骤4.4中的所有进程的网络端口号一一比对,找到符合的进程号pid,再将虚拟机的ID和进程的pid返回给攻击分析器;
步骤4.6,攻击分析模块通过进程检测模块获取该虚拟机以及该进程的安全信息并进行分析,进而在先验知识帮助下做出决策;可疑进程列表和恶意进程列表是可以动态更新的,因为攻击分析模块每次得到进程检测模块的反馈后,若确认某进程可疑或恶意,便会更新这两个列表;
步骤4.7, 若判定为恶意进程,则攻击分析模块会终止该进程与其他虚拟机的进程的通讯行为;若可疑则重定向它发出的流量到网络流量检测系统处检查;若正常,则按正常程序进行转发。
因此,本发明具有如下优点:1、利用了网络交换模型OpenFlow构建可编程网络,能够及时捕获可疑或恶意流量,反向定位发起流量的虚拟机和进程,利用隐藏进程检测和进程网络信息获取等安全技术确定流量的安全性,运用网络的可编程性对特定进程发起的流量进行控制,保证网络服务质量的同时,有效阻止了虚拟机网络集群中虚拟机间恶意行为的扩散,保护了系统安全;2、本系统涉及到两个方面的流量监控,一为进程级,一为虚拟机级。进程级别的流量监控相对于虚拟机级别的流量监控来说,可以减少对发送流量的虚拟机的干扰。而虚拟机级别的流量监控则会更广泛的监控整个虚拟机内的进程状况。
附图说明
附图1为本发明的系统架构图。
附图2为网络控制模块工作流程图。
附图3为攻击分析模块的工作流程图。
附图4为进程检测模块和虚拟机接口模块结构图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,本实施例包括:网络控制模块、攻击分析模块、进程检测模块以及网络流量检测系统,其中:网络控制模块拦截虚拟机之间的网络数据包并将获取的流量信息转发至攻击分析模块,攻击分析模块接收来自网络控制模块的虚拟机间的流量信息,并调用进程检测模块检测进程是否可疑,必要时(进程可疑时)调用网络流量检测模块对可疑流量进行更深层的检测。
网络控制模块基于开源流虚拟交换机(Open vSwitch,以下简称ovs),将数据转发功能和路由控制功能分离,增加了对虚拟机之间的数据包进行截获、修改和重定向的功能。网络控制模块基于开源网络控制器增加了一个自循环避免环节,防止广播包在网络流量检测系统和ovs之间循环。
攻击分析模块具有可编程性,攻击分析模块结合进程检测模块,实现调用虚拟机接口模块,检测隐藏进程以及分析进程的网络状态等功能。
网络流量检测模块(网络流量监测模块具体做法是开源软件snort的工作)被放在非特权域,这样做的好处是:1、部署动态化和自适应化:NIDS作为一个虚拟应用部署,重配置并动态迁移到任意网段中会变得相对容易,且无需复杂的网络配置过程。NIDS工作在in-line模式下,检测并过滤恶意流量,但无需将其配置成一个in-line的网关。2、减轻特权域PD的负载:由于特权域PD需要管理和配置内存和硬件资源的访问,如PD的负载过大,会严重影响VM访问内存和硬件资源,故应尽可能减轻PD的负载。NIDS的主要作用是对重定向到此处的流量进行深度数据包检测(Deep Packet Inspection, DPI),这一过程十分耗费资源,故不适合放在PD内。
另外,NIDS自身的安全也需要考虑在内。尽管NIDS处于UPD内,但是基于以下假设,仍然可以认为它是安全的:
1、假设每台云主机的管理器Hypervisor是受保护的,每个VM都能完全相互隔离。恶意的VM不能通过Hypervisor攻击NIDS。
2、尽管NIDS处于UPD中,能够从PD中被访问,但只有云管理员才能在其中维护软件的安装行为以及运行管理任务。假设云管理员是可信的,那么NIDS仅能由云管理员从PD安全的访问,未授权者无法访问。
NIDS对于网络内的其他VM是不可见的,仅有NC可以通过OVS和OFS的控制通道去控制和主导NIDS的行为。而控制通道是与OVS、OFS传输网络流量的数据通道相互分离的,故控制通道的安全性值得信任。
本实施例通过以下方式进行工作:
1、 当一个网络连接请求被虚拟机网络集群中的一台虚拟机创建,该请求的流量会到达ovs并等候处理。由于这是个新的连接,故ovs内不存在相应的流表项。此时,ovs会将流量发送给网络控制模块,向网络控制模块询问处理方式。由于网络控制模块在主机外部,与该主机以网络交换机(OpenFlow Switches,OFS)相连接,故这一过程需要经过OFS。这里的网络控制模块是基于开源软件floodlight0.9改编的,具有可编程性,可以根据使用者的选择对流量的去向进行操控。
2、网络控制模块的工作流程如图2所示。当流量被成功发送到网络控制模块后,网络控制模块记录下流量的信息。如果数据包的协议高于网络层,则查看目标物理地址是否在ovs上有端口,如果有则广播该包,无则生成流表项并转发到目的地。如果数据包协议不高于网络层,则网络控制模块将发送流量的datapath id、源地址、源端口发送给攻击分析模块,由攻击分析模块调用进程检测模块和虚拟机模块获取发起请求的虚拟机的信息,并做出决策,若判定为恶意流量,则生成流表项并丢包。若无法判断是否恶意,则生成流表项并重定向到网络流量检测系统处进行深层检查。若判断为正常流量,则直接正常转发到原目的地并生成对应的流表项。
3、攻击分析模块的流程如图3所示。攻击根系模块收到来自网络控制模块的如何转发流量的请求,会定位引起警报的虚拟机和具体进程并检测其安全状态,从而判断对于流量请求的具体处理命令。攻击分析模块将命令传递给网络控制模块,由网络控制模块控制ovs具体执行流量处理操作,同时将该操作写进流表。这种处理方式可以在恶意虚拟机试图与其他虚拟机建立连接的时候及时阻断连接,保证其他虚拟机不会受到威胁。由于可疑流量需要被重定向到网络流量检测系统中进行深层数据包检测,网络流量检测系统的两个虚拟网卡会被添加到被监控网络所属的ovs上,并设置成混杂模式用来嗅探网络流量。同时,配置网络流量检测系统其中一个虚拟网卡仅作为接收流量的入口,另一个网卡仅作为正常流量的出口。在这种状态下,广播流量易引起自循环,因为广播流量会发送到每个虚拟机中,当此流量进入到网络流量检测系统入口,网络流量检测系统会判断是否正常,若为正常,便让其通过出口又重回到ovs上重新进行广播。因此,需要特别处理这种情况,避免引起自循环,耗费网络资源。自循环避免算法具体操作如下:如果数据包不是产生于ovs的端口,则认为该数据包不合法,丢弃。若数据包产生于ovs的端口且目标物理地址为空(为广播数据包),则观察数据包的源地址和目标地址。如果源地址和目标地址同为网络流量监测模块,则认为该包为自循环包,遂丢弃。若不为自循环包,则执行广播操作。此处网络流量检测模块是使用的开源软件snort。
4、进程检测模块和虚拟机接口模块结构如图4。在进程检测过程中,进程检测模块首先利用虚拟机接口模块寻找虚拟机内的活动进程链。在此之前,需要找到Windows加载的内核模块链表表头,然后遍历内核模块链表找出ntoskrnl.exe。找到操作系统内核文件ntoskrnl.exe以及其加载到内存中的基地址后,通过分析ntoskrnl.exe的PE文件,在其中的.edata节的导出地址表中得到PsInitialSystemProcess的相对虚拟地址。PsInitialSystemProcess是指向系统进程的EPROCESS结构的指针,其在内存中的虚拟地址VA可由VA=RVA+BaseAddress计算得出。在Windows中,活动进程的EPROCESS结构会相互连接成一个双向循环链表,故得到PsInitialSystemProcess地址并寻找到system的EPROCESS后,即可确定活动进程链,从而分析隐藏进程以及检测网络状态,提供进程相关信息给给攻击分析模块。
以下是进程监控的具体操作步骤:
1,当网络控制模块接收到来自ovs的流量时,会记录下该ovs的datapath ID以及发送数据包的虚拟机对应在ovs上的虚拟网卡号(ofport)和具体发包的进程所使用的端口号(source port)。
2,OFS根据datapath ID,确定ovs所属的虚拟机集群。
3,ovs根据数据包来源的ofport,确定该数据包来源于何虚拟机。
4,为了了解具体发送数据包的进程,则调用进程检测模块和虚拟机接口模块,列出该虚拟机内的所有进程(包括隐藏进程),以及进程所使用的网络端口。
5,将1)记录的source port与4)中的所有进程的网络端口号一一比对,找到符合的进程号pid,再将虚拟机的ID和进程的pid返回给攻击分析器。
6,攻击分析模块通过进程检测模块获取该虚拟机以及该进程的安全信息并进行分析,进而在先验知识(可疑进程列表、恶意进程列表)帮助下做出决策。可疑进程列表和恶意进程列表是可以动态更新的,因为攻击分析模块每次得到进程检测模块的反馈后,若确认某进程可疑或恶意,便会更新这两个列表。
7,若判定为恶意进程,则攻击分析模块会终止该进程与其他虚拟机的进程的通讯行为;若可疑则重定向它发出的流量到网络流量检测系统处检查;若正常,则按正常程序进行转发。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

一种基于软件定义网络的安全防御系统及防御方法.pdf_第1页
第1页 / 共14页
一种基于软件定义网络的安全防御系统及防御方法.pdf_第2页
第2页 / 共14页
一种基于软件定义网络的安全防御系统及防御方法.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种基于软件定义网络的安全防御系统及防御方法.pdf》由会员分享,可在线阅读,更多相关《一种基于软件定义网络的安全防御系统及防御方法.pdf(14页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104023034 A (43)申请公布日 2014.09.03 CN 104023034 A (21)申请号 201410287800.6 (22)申请日 2014.06.25 H04L 29/06(2006.01) (71)申请人 武汉大学 地址 430072 湖北省武汉市武昌区珞珈山武 汉大学 (72)发明人 崔竞松 郭迟 张萌 田昌友 (74)专利代理机构 武汉科皓知识产权代理事务 所 ( 特殊普通合伙 ) 42222 代理人 鲁力 (54) 发明名称 一种基于软件定义网络的安全防御系统及防 御方法 (57) 摘要 本发明涉及一种计算机安全技术领域, 特别 涉。

2、及一种基于软件定义网络的安全防御系统及防 御方法, 包括 : 网络控制模块、 攻击分析模块、 进 程检测模块以及网络流量检测模块。网络控制模 块拦截虚拟机之间的网络数据包并将获取的流量 信息转发至攻击分析模块, 攻击分析模块接收来 自网络控制模块的虚拟机间的流量信息, 并调用 进程检测模块检测进程是否可疑, 必要时调用网 络流量检测模块对可疑流量进行更深层的检测。 本发明针对当前虚拟机服务器中用于各虚拟机之 间流量转发的虚拟交换机进行扩展, 提出一个能 够拦截、 检测、 重定向流量的纵深防御系统, 能够 达到预防并制止网络集群内虚拟机之间攻击行为 的目的。 (51)Int.Cl. 权利要求书 。

3、3 页 说明书 7 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书7页 附图3页 (10)申请公布号 CN 104023034 A CN 104023034 A 1/3 页 2 1. 一种基于软件定义网络的安全防御系统, 包括若干台虚拟机、 虚拟机交换机、 虚拟机 接口模块、 以及一台 openflow 交换机 ; 其特征在于, 还包括设置在受保护虚拟机外部的 : 一网络控制模块 : 某台虚拟机经过虚拟机交换机发起的网络连接请求数据包, 会以 openflow 交换机为介质到达网络控制模块, 网络控制模块记录下流量的信息, 且虚拟机交 换机。

4、中没有该网络连接请求相应的流表项 ; 如果数据包的协议高于网络层, 则查看目标物 理地址是否在虚拟机交换机上有端口, 如果有则广播该包, 无则生成流表项并转发到目的 地 ; 如果数据包协议不高于网络层, 则网络控制模块将发送网络连接请求的 datapath id、 源地址、 源端口信息发送出 ; 一攻击分析模块 : 接受在数据包协议不高于网络层, 由网络控制模块发送的网络连接 请求数据包的 datapath id、 源地址、 源端口 ; 并调用进程检测模块和虚拟机接口模块获取 发起请求的虚拟机的信息, 并将判定结果返回给网络控制模块并由网络控制模块做出对 策 : 判定一 : 若判定为恶意流量,。

5、 则生成流表项并丢包 ; 若判定不是恶意流量则生成流表 项并送往原目的地 ; 判定二 : 若无法判断是否恶意, 则生成流表项并将数据包重定向到网络流量检测模块 处 ; 一进程检测模块 : 进行进程检测并将进程检测结果发送给攻击分析模块, 具体是 : 首 先利用虚拟机接口模块寻找虚拟机内的活动进程链, 在此之前, 需要找到 Windows 加载 的内核模块链表表头, 然后遍历内核模块链表找出 ntoskrnl.exe ; 找到操作系统内核文 件 ntoskrnl.exe 以及其加载到内存中的基地址后, 通过分析 ntoskrnl.exe 的 PE 文件, 在其中的 .edata 节的导出地址表中。

6、得到 PsInitialSystemProcess 的相对虚拟地址 ; PsInitialSystemProcess 是指向系统进程的 EPROCESS 结构的指针, 其在内存中的虚拟地 址 VA 由 VA=RVA+BaseAddress 得出 ; 在 Windows 中, 活动进程的 EPROCESS 结构会相互连接 成一个双向循环链表, 故得到 PsInitialSystemProcess 地址并寻找到 system 的 EPROCESS 后, 即可确定活动进程链, 从而分析隐藏进程以及检测网络状态, 提供进程相关信息给攻击 分析模块 ; 一网络流量检测模块 : 接收攻击分析模块发送的数据。

7、包, 并进行深层检查, 若判断为正 常流量, 则直接正常转发到原目的地并生成对应的流表项, 若判定为恶意流量则生成流表 项并丢包 ; 本框架的工作在于对网络流量的捕获以及路由控制, 而不在于改良现有的流量 检测算法, 因此本模块直接利用了开源工具snort, 将snort运行在in-line模式下, 实行数 据包检测。 2. 一种基于软件定义网络的安全防御方法, 其特征在于, 包括以下步骤 : 步骤 1, 在主机外接网络控制模块, 使攻击分析模块控制网络控制模块 ; 步骤 2, 某台虚拟机发起网络连接请求经过虚拟交换机时, 若有相应的流表项则按照流 表项转发, 若虚拟交换机中没有相应的流表项,。

8、 则虚拟交换机会将流量发送给网络控制模 块 ; 步骤 3, 网络控制模块记录下流量的信息并转发给攻击分析模块, 攻击分析模块调用进 程检测模块来获取发起请求的虚拟机的信息, 进程检测模块可以判断发起者虚拟机内所有 进程的安全状态 ; 网络控制模块基于开源网络控制器增加了一个自循环避免环节, 防止广 权 利 要 求 书 CN 104023034 A 2 2/3 页 3 播包在网络流量检测模块和虚拟交换机之间循环 ; 步骤 4, 若攻击分析模块的决策断定发起网络请求的进程是可疑的, 则攻击分析模块将 会向网络控制模块发起命令, 对于该进程或该进程所属的虚拟机所发出的所有流量, 都将 在网络控制模块。

9、的控制下被虚拟交换机送至网络流量检测模块进行判断 ; 若判断结果为安 全, 则转向原目的地 ; 若攻击分析模块的决策断定发起请求的进程为有害, 则直接丢包 ; 在 此若只针对该进程发出的流量进行重定向, 可以控制整个系统的开销 ; 若针对该进程所属 的虚拟机发出的所有流量都进行重定向, 将会增大开销来保证系统的安全性。 3. 根据权利要求 2 所述的一种基于软件定义网络的安全防御方法, 其特征在于, 网络 流量检测模块包括两个被添加到被监控网络所属的虚拟交换机上的虚拟网卡, 并设置成混 杂模式用来嗅探网络流量 ; 同时, 配置网络流量检测模块其中一个虚拟网卡仅作为接收流 量的入口, 另一个网卡。

10、仅作为正常流量的出口 ; 在这种状态下, 广播流量易引起自循环, 因 为广播流量会发送到每个虚拟机中, 当此流量进入到网络流量检测模块入口, 网络流量检 测模块会判断是否正常, 若为正常, 便让其通过出口又重回到虚拟交换机上重新进行广播 ; 网络流量检测模块包括一个自循环避免步骤, 具体操作如下 : 如果数据包不是产生于虚拟交换机的端口, 则认为该数据包不合法, 丢弃 ; 若数据包 产生于虚拟交换机的端口且目标物理地址为空, 则观察数据包的源地址和目标地址 ; 如果 源地址和目标地址同为网络流量监测模块, 则认为该包为自循环包, 遂丢弃 ; 若不为自循环 包, 则执行广播操作 ; 此处网络流量。

11、检测模块是使用的开源软件 snort。 4. 根据权利要求 2 所述的一种基于软件定义网络的安全防御方法, 其特征在于, 进 程检测模块进行检测的具体方法是 : 首先利用虚拟机接口模块寻找虚拟机内的活动进 程链 ; 在此之前, 需要找到 Windows 加载的内核模块链表表头, 然后遍历内核模块链表 找出 ntoskrnl.exe ; 找到操作系统内核文件 ntoskrnl.exe 以及其加载到内存中的基 地址后, 通过分析 ntoskrnl.exe 的 PE 文件, 在其中的 .edata 节的导出地址表中得到 PsInitialSystemProcess 的相对虚拟地址 ; PsIniti。

12、alSystemProcess 是指向系统进程 的 EPROCESS 结构的指针, 其在内存中的虚拟地址 VA 可由 VA=RVA+BaseAddress 计算得 出 ; 在 Windows 中, 活动进程的 EPROCESS 结构会相互连接成一个双向循环链表, 故得到 PsInitialSystemProcess地址并寻找到system的EPROCESS后, 即可确定活动进程链, 从而 分析隐藏进程以及检测网络状态, 提供进程相关信息给给攻击分析模块 ; 包括以下步骤 步骤 4.1, 当网络控制模块接收到来自虚拟交换机的流量时, 会记录下该虚拟交换机 的 datapath ID 以及发送数据。

13、包的虚拟机对应在虚拟交换机上的虚拟网卡号和具体发包的 进程所使用的端口号 ; 步骤 4.2, OPENFLOW 交换机根据 datapath ID, 确定虚拟交换机所属的虚拟机集群 ; 步骤 4.3, 虚拟交换机根据数据包来源的 ofport, 确定该数据包来源于何虚拟机 ; 步骤 4.4, 为了了解具体发送数据包的进程, 则调用进程检测模块和虚拟机接口模块, 列出该虚拟机内的所有进程, 以及进程所使用的网络端口 ; 步骤 4.5, 将步骤 4.1 记录的 source port 与步骤 4.4 中的所有进程的网络端口号一一 比对, 找到符合的进程号 pid, 再将虚拟机的 ID 和进程的 p。

14、id 返回给攻击分析器 ; 步骤 4.6, 攻击分析模块通过进程检测模块获取该虚拟机以及该进程的安全信息并进 行分析, 进而在先验知识帮助下做出决策 ; 可疑进程列表和恶意进程列表是可以动态更新 权 利 要 求 书 CN 104023034 A 3 3/3 页 4 的, 因为攻击分析模块每次得到进程检测模块的反馈后, 若确认某进程可疑或恶意, 便会更 新这两个列表 ; 步骤 4.7, 若判定为恶意进程, 则攻击分析模块会终止该进程与其他虚拟机的进程的 通讯行为 ; 若可疑则重定向它发出的流量到网络流量检测系统处检查 ; 若正常, 则按正常 程序进行转发。 权 利 要 求 书 CN 104023。

15、034 A 4 1/7 页 5 一种基于软件定义网络的安全防御系统及防御方法 0001 技术领域 0002 本发明涉及的是一种计算机安全领域的防御系统, 具体是一种基于软件定义网络 的安全防御系统及防御方法。 背景技术 0003 现有很多着重于检测被感染虚拟机并保护云中其他虚拟机不受其攻击的技术, 如 防火墙和入侵检测系统 (Intrusion Detection System, IDS) 。在网络层, 传统的网络防火 墙和基于网络的入侵检测系统 (Network-based Intrusion Detection System, NIDS) 建立 在 “被监控网络内防火墙外” 模式下。此种模。

16、式不适用于被感染虚拟机和攻击目标处 于同一云主机内部的情况, 因为网络防火墙和 NIDS 搜集的必须是进出被监控网络的信息。 在主机层, 个人防火墙, HIDS, 防病毒和防间谍软件系统等, 运行在它们所保护的虚拟机内, 使得这些工具很容易被窃取到系统特权的攻击者破坏。 故这些传统网络安全技术并不能很 好的解决本文所着重解决的问题 : 及时检测有害虚拟机, 并在其试图与其他虚拟机进行连 接时予以阻止, 防止攻击的发生。 0004 目前, 部分研究在虚拟化技术的基础上, 发展入侵检测技术来检测网络通讯过程 中的恶意行为, 保障虚拟机的安全。 0005 Tal Garfi nkel等人提出的Liv。

17、ewire系统是一个虚拟化环境下的入侵检测系统, 它 将系统放置在被监控虚拟机外。 它构建出的入侵检测系统不仅保留了主机层技术具备的良 好系统状态视图, 也为 IDS 提供了强大的隔离性。然而, Livewire 仅提供了对虚拟机硬件 的访问控制, 仍无法阻挡通过网络流量进行的攻击。 0006 W. Yassin 等人提出的一种基于云计算的框架, 称作 “基于云的入侵检测服务” (Cloud-based Intrusion Detection Service, CBIDS) 。CBIDS 能够克服传统入侵检测技术 的不足, 例如传统 IDS 一般部署在虚拟机内部, 易受攻击 ; 或是部署在被监。

18、控虚拟机的同一 网络内, 对其他虚拟机可见, 也会增加风险。同时, 该框架可以嗅探到网络内任意地方的网 络流量, 感兴趣的数据包会传递到 CBIDS 中进行深度检测, 然后检测是否存在恶意行为并 产生相应的警告。 然而, CBIDS仅能检测网络流量并提出警告, 却无法对攻击行为作出干预, 本身不能阻止攻击发生。 0007 Marcos Laureano 等人提出的一种入侵检测方案, 从被监控虚拟机外部监控, 检测 并阻塞来自虚拟机内运行服务的攻击。方案包括了入侵检测机制和响应机制, 保证既能检 测出攻击行为, 也能阻止其发生。此方案中, 检测的是主机内虚拟机与外界 (主机以外) 进行 网络通讯。

19、过程中的流量, 这些网络通讯行为由安装在主机内的防火墙软件进行管理。 因此, 响应机制中是通过该防火墙软件阻塞虚拟机的端口并断开其与外界的通讯, 而不能对同主 机内虚拟机与虚拟机间的通讯进行控制。 0008 而 Flavio Lombardi 等人提出了另一个安全框架KvmSec, 它是内核为 Linux 说 明 书 CN 104023034 A 5 2/7 页 6 的虚拟机的拓展, 旨在增加被监控虚拟机的安全性。KvmSec 具有以下几个特征 : 1. 对虚拟 机透明, 从虚拟机很难访问 KvmSec ; 2. 能收集虚拟机信息并分析, 然后做出相应反应 ; 3. 能提供虚拟机与主机之间的安。

20、全通信。该框架是部署在 Linux 的主机上的, 而且目前仅支 持 Linux 虚拟机。同时, 它所能提供的安全通信是 Qemu 与虚拟机间, 即主机与虚拟机间的 安全通信, 而不提供主机与主机之间、 主机内虚拟机与虚拟机之间的安全通信。 0009 虚拟机监控方面, 如高性能轻量级虚拟机监控器 Trochilidae 可检测虚拟机运行 状态, 然而侧重点不在于对网络流量的监控上。VMI 技术即虚拟机自省技术, 是从虚拟机外 部分析虚拟机内部状态的一种方法。基于 VMI 的虚拟机保护方案将安全保护工具和被监控 虚拟机予以隔离, 因此无需在被监控虚拟机中安装任何代理。这一特点使得该方案抵抗攻 击的。

21、能力大大增强, 不受虚拟机的影响。现有部分研究也采用了此种方法。VMwatcher 是 另一个利用了 VMI 技术的系统, 可重建虚拟机内部的语义视图, 从而检测虚拟机内隐藏的 恶意软件。 其缺点是, 首先它仅能检测出恶意软件的存在, 但无法做出反馈 ; 再者, 它不能检 测使用直接内核对象操作 (Direct Kernel Object Manipulation, DKOM) 方式的 rootkit。 Antfarm 是一个基于虚拟机监视器实现的在虚拟机外部的监控系统, 它通过监控客户机操 作系统与其内存管理结构之间的低层次交互来追踪虚拟机内进程的活动。Lycosid 是一个 基于虚拟机监视。

22、器的隐藏进程检测识别的工具。它利用了 Antfarm 来获取虚拟机内进程的 可信视图, 然后利用交叉视图方式, 与用户级程序列出的进程进行比较, 得出隐藏进程。然 而由于利用了用户级程序的结果, 可能由于此结果被篡改而导致误判。 发明内容 0010 本发明主要是解决现有技术所存在的技术问题 ; 提供了一种通过对虚拟机网络集 群内虚拟机之间的可疑流量进行拦截分析, 能够达到预防并制止网络集群内虚拟机之间攻 击行为的目的的一种基于软件定义网络的安全防御系统及防御方法。 0011 本发明的上述技术问题主要是通过下述技术方案得以解决的 : 一种基于软件定义网络的安全防御系统, 包括若干台虚拟机、 虚拟。

23、机交换机、 虚拟机接 口模块、 以及一台 openflow 交换机 ; 其特征在于, 还包括设置在受保护虚拟机外部的 : 一网络控制模块 : 某台虚拟机经过虚拟机交换机发起的网络连接请求数据包, 会以 openflow 交换机为介质到达网络控制模块, 网络控制模块记录下流量的信息, 且虚拟机交 换机中没有该网络连接请求相应的流表项 ; 如果数据包的协议高于网络层, 则查看目标物 理地址是否在虚拟机交换机上有端口, 如果有则广播该包, 无则生成流表项并转发到目的 地 ; 如果数据包协议不高于网络层, 则网络控制模块将发送网络连接请求的 datapath id、 源地址、 源端口信息发送出 ; 一。

24、攻击分析模块 : 接受在数据包协议不高于网络层, 由网络控制模块发送的网络连接 请求数据包的 datapath id、 源地址、 源端口 ; 并调用进程检测模块和虚拟机接口模块获取 发起请求的虚拟机的信息, 并将判定结果返回给网络控制模块并由网络控制模块做出对 策 : 判定一 : 若判定为恶意流量, 则生成流表项并丢包 ; 若判定不是恶意流量则生成流表 项并送往原目的地 ; 判定二 : 若无法判断是否恶意, 则生成流表项并将数据包重定向到网络流量检测模块 说 明 书 CN 104023034 A 6 3/7 页 7 处 ; 一进程检测模块 : 进行进程检测并将进程检测结果发送给攻击分析模块, 。

25、具体是 : 首 先利用虚拟机接口模块寻找虚拟机内的活动进程链, 在此之前, 需要找到 Windows 加载 的内核模块链表表头, 然后遍历内核模块链表找出 ntoskrnl.exe ; 找到操作系统内核文 件 ntoskrnl.exe 以及其加载到内存中的基地址后, 通过分析 ntoskrnl.exe 的 PE 文件, 在其中的 .edata 节的导出地址表中得到 PsInitialSystemProcess 的相对虚拟地址 ; PsInitialSystemProcess 是指向系统进程的 EPROCESS 结构的指针, 其在内存中的虚拟地 址 VA 由 VA=RVA+BaseAddress。

26、 得出 ; 在 Windows 中, 活动进程的 EPROCESS 结构会相互连接 成一个双向循环链表, 故得到 PsInitialSystemProcess 地址并寻找到 system 的 EPROCESS 后, 即可确定活动进程链, 从而分析隐藏进程以及检测网络状态, 提供进程相关信息给攻击 分析模块 ; 一网络流量检测模块 : 接收攻击分析模块发送的数据包, 并进行深层检查, 若判断为正 常流量, 则直接正常转发到原目的地并生成对应的流表项, 若判定为恶意流量则生成流表 项并丢包 ; 本框架的工作在于对网络流量的捕获以及路由控制, 而不在于改良现有的流量 检测算法, 因此本模块直接利用了。

27、开源工具snort, 将snort运行在in-line模式下, 实行数 据包检测。 0012 一种基于软件定义网络的安全防御方法, 其特征在于, 包括以下步骤 : 步骤 1, 在主机外接网络控制模块, 使攻击分析模块控制网络控制模块 ; 步骤 2, 某台虚拟机发起网络连接请求经过虚拟交换机时, 若有相应的流表项则按照流 表项转发, 若虚拟交换机中没有相应的流表项, 则虚拟交换机会将流量发送给网络控制模 块 ; 步骤 3, 网络控制模块记录下流量的信息并转发给攻击分析模块, 攻击分析模块调用进 程检测模块来获取发起请求的虚拟机的信息, 进程检测模块可以判断发起者虚拟机内所有 进程的安全状态 ; 。

28、网络控制模块基于开源网络控制器增加了一个自循环避免环节, 防止广 播包在网络流量检测模块和虚拟交换机之间循环 ; 步骤 4, 若攻击分析模块的决策断定发起网络请求的进程是可疑的, 则攻击分析模块将 会向网络控制模块发起命令, 对于该进程或该进程所属的虚拟机所发出的所有流量, 都将 在网络控制模块的控制下被虚拟交换机送至网络流量检测模块进行判断 ; 若判断结果为安 全, 则转向原目的地 ; 若攻击分析模块的决策断定发起请求的进程为有害, 则直接丢包 ; 在 此若只针对该进程发出的流量进行重定向, 可以控制整个系统的开销 ; 若针对该进程所属 的虚拟机发出的所有流量都进行重定向, 将会增大开销来保。

29、证系统的安全性。 0013 在上述的一种基于软件定义网络的安全防御方法, 网络流量检测模块包括两个被 添加到被监控网络所属的虚拟交换机上的虚拟网卡, 并设置成混杂模式用来嗅探网络流 量 ; 同时, 配置网络流量检测模块其中一个虚拟网卡仅作为接收流量的入口, 另一个网卡仅 作为正常流量的出口 ; 在这种状态下, 广播流量易引起自循环, 因为广播流量会发送到每个 虚拟机中, 当此流量进入到网络流量检测模块入口, 网络流量检测模块会判断是否正常, 若 为正常, 便让其通过出口又重回到虚拟交换机上重新进行广播 ; 网络流量检测模块包括一 个自循环避免步骤, 具体操作如下 : 如果数据包不是产生于虚拟交。

30、换机的端口, 则认为该数据包不合法, 丢弃 ; 若数据包 说 明 书 CN 104023034 A 7 4/7 页 8 产生于虚拟交换机的端口且目标物理地址为空, 则观察数据包的源地址和目标地址 ; 如果 源地址和目标地址同为网络流量监测模块, 则认为该包为自循环包, 遂丢弃 ; 若不为自循环 包, 则执行广播操作 ; 此处网络流量检测模块是使用的开源软件 snort。 0014 在上述的一种基于软件定义网络的安全防御方法, 进程检测模块进行检测的具 体方法是 : 首先利用虚拟机接口模块寻找虚拟机内的活动进程链 ; 在此之前, 需要找到 Windows 加载的内核模块链表表头, 然后遍历内核模。

31、块链表找出 ntoskrnl.exe ; 找到操作 系统内核文件 ntoskrnl.exe 以及其加载到内存中的基地址后, 通过分析 ntoskrnl.exe 的 PE 文件, 在其中的 .edata 节的导出地址表中得到 PsInitialSystemProcess 的相对虚拟地 址 ; PsInitialSystemProcess 是指向系统进程的 EPROCESS 结构的指针, 其在内存中的虚拟 地址 VA 可由 VA=RVA+BaseAddress 计算得出 ; 在 Windows 中, 活动进程的 EPROCESS 结构会 相互连接成一个双向循环链表, 故得到 PsInitialSy。

32、stemProcess 地址并寻找到 system 的 EPROCESS 后, 即可确定活动进程链, 从而分析隐藏进程以及检测网络状态, 提供进程相关信 息给给攻击分析模块 ; 包括以下步骤 步骤 4.1, 当网络控制模块接收到来自虚拟交换机的流量时, 会记录下该虚拟交换机 的 datapath ID 以及发送数据包的虚拟机对应在虚拟交换机上的虚拟网卡号和具体发包的 进程所使用的端口号 ; 步骤 4.2, OPENFLOW 交换机根据 datapath ID, 确定虚拟交换机所属的虚拟机集群 ; 步骤 4.3, 虚拟交换机根据数据包来源的 ofport, 确定该数据包来源于何虚拟机 ; 步骤 。

33、4.4, 为了了解具体发送数据包的进程, 则调用进程检测模块和虚拟机接口模块, 列出该虚拟机内的所有进程, 以及进程所使用的网络端口 ; 步骤 4.5, 将步骤 4.1 记录的 source port 与步骤 4.4 中的所有进程的网络端口号一一 比对, 找到符合的进程号 pid, 再将虚拟机的 ID 和进程的 pid 返回给攻击分析器 ; 步骤 4.6, 攻击分析模块通过进程检测模块获取该虚拟机以及该进程的安全信息并进 行分析, 进而在先验知识帮助下做出决策 ; 可疑进程列表和恶意进程列表是可以动态更新 的, 因为攻击分析模块每次得到进程检测模块的反馈后, 若确认某进程可疑或恶意, 便会更 。

34、新这两个列表 ; 步骤 4.7, 若判定为恶意进程, 则攻击分析模块会终止该进程与其他虚拟机的进程的 通讯行为 ; 若可疑则重定向它发出的流量到网络流量检测系统处检查 ; 若正常, 则按正常 程序进行转发。 0015 因此, 本发明具有如下优点 : 1、 利用了网络交换模型 OpenFlow 构建可编程网络, 能够及时捕获可疑或恶意流量, 反向定位发起流量的虚拟机和进程, 利用隐藏进程检测和 进程网络信息获取等安全技术确定流量的安全性, 运用网络的可编程性对特定进程发起的 流量进行控制, 保证网络服务质量的同时, 有效阻止了虚拟机网络集群中虚拟机间恶意行 为的扩散, 保护了系统安全 ; 2、 。

35、本系统涉及到两个方面的流量监控, 一为进程级, 一为虚拟 机级。进程级别的流量监控相对于虚拟机级别的流量监控来说, 可以减少对发送流量的虚 拟机的干扰。而虚拟机级别的流量监控则会更广泛的监控整个虚拟机内的进程状况。 附图说明 0016 附图 1 为本发明的系统架构图。 说 明 书 CN 104023034 A 8 5/7 页 9 0017 附图 2 为网络控制模块工作流程图。 0018 附图 3 为攻击分析模块的工作流程图。 0019 附图 4 为进程检测模块和虚拟机接口模块结构图。 具体实施方式 0020 下面通过实施例, 并结合附图, 对本发明的技术方案作进一步具体的说明。 0021 实施。

36、例 : 下面对本发明的实施例作详细说明, 本实施例在以本发明技术方案为前提下进行实 施, 给出了详细的实施方式和具体的操作过程, 但本发明的保护范围不限于下述的实施例。 0022 如图 1 所示, 本实施例包括 : 网络控制模块、 攻击分析模块、 进程检测模块以及网 络流量检测系统, 其中 : 网络控制模块拦截虚拟机之间的网络数据包并将获取的流量信息 转发至攻击分析模块, 攻击分析模块接收来自网络控制模块的虚拟机间的流量信息, 并调 用进程检测模块检测进程是否可疑, 必要时 (进程可疑时) 调用网络流量检测模块对可疑流 量进行更深层的检测。 0023 网络控制模块基于开源流虚拟交换机 (Ope。

37、n vSwitch, 以下简称 ovs) , 将数据转发 功能和路由控制功能分离, 增加了对虚拟机之间的数据包进行截获、 修改和重定向的功能。 网络控制模块基于开源网络控制器增加了一个自循环避免环节, 防止广播包在网络流量检 测系统和 ovs 之间循环。 0024 攻击分析模块具有可编程性, 攻击分析模块结合进程检测模块, 实现调用虚拟机 接口模块, 检测隐藏进程以及分析进程的网络状态等功能。 0025 网络流量检测模块 (网络流量监测模块具体做法是开源软件 snort 的工作) 被放 在非特权域, 这样做的好处是 : 1、 部署动态化和自适应化 : NIDS 作为一个虚拟应用部署, 重 配置。

38、并动态迁移到任意网段中会变得相对容易, 且无需复杂的网络配置过程。NIDS 工作在 in-line 模式下, 检测并过滤恶意流量, 但无需将其配置成一个 in-line 的网关。2、 减轻特 权域PD的负载 : 由于特权域PD需要管理和配置内存和硬件资源的访问, 如PD的负载过大, 会严重影响 VM 访问内存和硬件资源, 故应尽可能减轻 PD 的负载。NIDS 的主要作用是对重 定向到此处的流量进行深度数据包检测 (Deep Packet Inspection, DPI) , 这一过程十分耗 费资源, 故不适合放在 PD 内。 0026 另外, NIDS 自身的安全也需要考虑在内。尽管 NID。

39、S 处于 UPD 内, 但是基于以下假 设, 仍然可以认为它是安全的 : 1、 假设每台云主机的管理器 Hypervisor 是受保护的, 每个 VM 都能完全相互隔离。恶 意的 VM 不能通过 Hypervisor 攻击 NIDS。 0027 2、 尽管 NIDS 处于 UPD 中, 能够从 PD 中被访问, 但只有云管理员才能在其中维护软 件的安装行为以及运行管理任务。 假设云管理员是可信的, 那么NIDS仅能由云管理员从PD 安全的访问, 未授权者无法访问。 0028 NIDS 对于网络内的其他 VM 是不可见的, 仅有 NC 可以通过 OVS 和 OFS 的控制通道 去控制和主导 NI。

40、DS 的行为。而控制通道是与 OVS、 OFS 传输网络流量的数据通道相互分离 的, 故控制通道的安全性值得信任。 0029 本实施例通过以下方式进行工作 : 说 明 书 CN 104023034 A 9 6/7 页 10 1、 当一个网络连接请求被虚拟机网络集群中的一台虚拟机创建, 该请求的流量会到 达 ovs 并等候处理。由于这是个新的连接, 故 ovs 内不存在相应的流表项。此时, ovs 会将 流量发送给网络控制模块, 向网络控制模块询问处理方式。 由于网络控制模块在主机外部, 与该主机以网络交换机 (OpenFlow Switches, OFS) 相连接, 故这一过程需要经过 OFS。

41、。这里 的网络控制模块是基于开源软件 floodlight0.9 改编的, 具有可编程性, 可以根据使用者 的选择对流量的去向进行操控。 0030 2、 网络控制模块的工作流程如图 2 所示。当流量被成功发送到网络控制模块后, 网络控制模块记录下流量的信息。如果数据包的协议高于网络层, 则查看目标物理地址是 否在 ovs 上有端口, 如果有则广播该包, 无则生成流表项并转发到目的地。如果数据包协议 不高于网络层, 则网络控制模块将发送流量的 datapath id、 源地址、 源端口发送给攻击分 析模块, 由攻击分析模块调用进程检测模块和虚拟机模块获取发起请求的虚拟机的信息, 并做出决策, 若。

42、判定为恶意流量, 则生成流表项并丢包。若无法判断是否恶意, 则生成流表 项并重定向到网络流量检测系统处进行深层检查。若判断为正常流量, 则直接正常转发到 原目的地并生成对应的流表项。 0031 3、 攻击分析模块的流程如图 3 所示。攻击根系模块收到来自网络控制模块的如何 转发流量的请求, 会定位引起警报的虚拟机和具体进程并检测其安全状态, 从而判断对于 流量请求的具体处理命令。攻击分析模块将命令传递给网络控制模块, 由网络控制模块控 制 ovs 具体执行流量处理操作, 同时将该操作写进流表。这种处理方式可以在恶意虚拟机 试图与其他虚拟机建立连接的时候及时阻断连接, 保证其他虚拟机不会受到威胁。

43、。由于可 疑流量需要被重定向到网络流量检测系统中进行深层数据包检测, 网络流量检测系统的两 个虚拟网卡会被添加到被监控网络所属的 ovs 上, 并设置成混杂模式用来嗅探网络流量。 同时, 配置网络流量检测系统其中一个虚拟网卡仅作为接收流量的入口, 另一个网卡仅作 为正常流量的出口。 在这种状态下, 广播流量易引起自循环, 因为广播流量会发送到每个虚 拟机中, 当此流量进入到网络流量检测系统入口, 网络流量检测系统会判断是否正常, 若为 正常, 便让其通过出口又重回到 ovs 上重新进行广播。因此, 需要特别处理这种情况, 避免 引起自循环, 耗费网络资源。 自循环避免算法具体操作如下 : 如果。

44、数据包不是产生于ovs的 端口, 则认为该数据包不合法, 丢弃。若数据包产生于 ovs 的端口且目标物理地址为空 (为 广播数据包) , 则观察数据包的源地址和目标地址。如果源地址和目标地址同为网络流量监 测模块, 则认为该包为自循环包, 遂丢弃。若不为自循环包, 则执行广播操作。此处网络流 量检测模块是使用的开源软件 snort。 0032 4、 进程检测模块和虚拟机接口模块结构如图 4。在进程检测过程中, 进程检测模 块首先利用虚拟机接口模块寻找虚拟机内的活动进程链。在此之前, 需要找到 Windows 加载的内核模块链表表头, 然后遍历内核模块链表找出 ntoskrnl.exe。找到操作。

45、系统内 核文件 ntoskrnl.exe 以及其加载到内存中的基地址后, 通过分析 ntoskrnl.exe 的 PE 文 件, 在其中的 .edata 节的导出地址表中得到 PsInitialSystemProcess 的相对虚拟地址。 PsInitialSystemProcess 是指向系统进程的 EPROCESS 结构的指针, 其在内存中的虚拟地 址 VA 可由 VA=RVA+BaseAddress 计算得出。在 Windows 中, 活动进程的 EPROCESS 结构会 相互连接成一个双向循环链表, 故得到 PsInitialSystemProcess 地址并寻找到 system 的 。

46、EPROCESS 后, 即可确定活动进程链, 从而分析隐藏进程以及检测网络状态, 提供进程相关信 说 明 书 CN 104023034 A 10 7/7 页 11 息给给攻击分析模块。 0033 以下是进程监控的具体操作步骤 : 1, 当网络控制模块接收到来自ovs的流量时, 会记录下该ovs的datapath ID以及发送 数据包的虚拟机对应在 ovs 上的虚拟网卡号 (ofport) 和具体发包的进程所使用的端口号 (source port) 。 0034 2, OFS 根据 datapath ID, 确定 ovs 所属的虚拟机集群。 0035 3, ovs 根据数据包来源的 ofport。

47、, 确定该数据包来源于何虚拟机。 0036 4, 为了了解具体发送数据包的进程, 则调用进程检测模块和虚拟机接口模块, 列 出该虚拟机内的所有进程 (包括隐藏进程) , 以及进程所使用的网络端口。 0037 5, 将 1) 记录的 source port 与 4) 中的所有进程的网络端口号一一比对, 找到符合 的进程号 pid, 再将虚拟机的 ID 和进程的 pid 返回给攻击分析器。 0038 6, 攻击分析模块通过进程检测模块获取该虚拟机以及该进程的安全信息并进行 分析, 进而在先验知识 (可疑进程列表、 恶意进程列表) 帮助下做出决策。可疑进程列表和恶 意进程列表是可以动态更新的, 因为。

48、攻击分析模块每次得到进程检测模块的反馈后, 若确 认某进程可疑或恶意, 便会更新这两个列表。 0039 7, 若判定为恶意进程, 则攻击分析模块会终止该进程与其他虚拟机的进程的通讯 行为 ; 若可疑则重定向它发出的流量到网络流量检测系统处检查 ; 若正常, 则按正常程序 进行转发。 0040 本文中所描述的具体实施例仅仅是对本发明精神作举例说明。 本发明所属技术领 域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替 代, 但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。 说 明 书 CN 104023034 A 11 1/3 页 12 图 1 说 明 书 附 图 CN 104023034 A 12 2/3 页 13 图 2 图 3 说 明 书 附 图 CN 104023034 A 13 3/3 页 14 图 4 说 明 书 附 图 CN 104023034 A 14 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1