一种基于虚拟机服务跳变的网络安全防御方法与流程

文档序号:11156604阅读:354来源:国知局
一种基于虚拟机服务跳变的网络安全防御方法与制造工艺
本发明属于网络信息安全
技术领域
,尤其涉及一种基于虚拟机服务跳变的网络安全防御方法。
背景技术
:随着互联网的飞速发展,网络安全逐渐成为一个潜在的巨大问题。网络安全性是一个涉及面很广泛的问题,其中也会涉及到是否构成犯罪行为的问题。在其最简单的形式中,它主要关心的是确保无关人员不能读取,更不能修改传送给其他接收者的信息。此时,它关心的对象是那些无权使用,但却试图获得远程服务的人。安全性也处理合法消息被截获和重播的问题,以及发送者是否曾发送过该条消息的问题。大多数安全性问题的出现都是由于有恶意的人试图获得某种好处或损害某些人而故意引起的。可以看出保证网络安全不仅仅是使它没有编程错误。它包括要防范那些聪明的,通常也是狡猾的、专业的,并且在时间和金钱上是很充足、富有的人。同时,必须清楚地认识到,能够制止偶然实施破坏行为的敌人的方法对那些惯于作案的老手来说,收效甚微。网络安全性可以被粗略地分为4个相互交织的部分:保密、鉴别、反拒认以及完整性控制。保密是保护信息不被未授权者访问,这是人们提到的网络安全性时最常想到的内容。鉴别主要指在揭示敏感信息或进行事务处理之前先确认对方的身份。反拒认主要与签名有关。保密和完整性通过使用注册过的邮件和文件锁来。以上传统的防护方式,主要通过访问控制、特征防御等被动的防御方式来进行防御。但是互联网上攻击攻击方式层出不穷,被动的防御方式是不可能完全防御来自互联网的攻击。技术实现要素:鉴于上述问题,本发明的目的在于提供一种基于虚拟机服务跳变的网络安全防御方法,旨在解决现有网络安全防御方法不可能完全防御来自互联网的攻击的技术问题。本发明采用如下技术方案:所述基于虚拟机服务跳变的网络安全防御方法包括下述步骤:创建并管理服务;对于当前服务,从跳变序列中提取一个跳变元组,并将当前跳变元组指针指向下一个跳变元组,所述跳变元组包括跳变元组编号、跳变超时时间、虚拟机类型、服务实例编号;按照跳变元组提取服务实例信息,所述服务实例信息包括服务IP地址、服务端口号;按照跳变超时时间和跳变速度因子设置跳变计时器;根据跳变元组服务实例信息,通过服务实例的IP地址和端号重新修改对应的服务代理配置文件,重新加载服务代理配置文件后生效;当客户端有请求发出时,处理客户端的请求,此期间跳变元组的虚拟机类型作为当前对外类型,直到跳变计时器超时,重新提取跳变元组。进一步的,按照跳变元组中的跳变超时时间除以跳变因子后的时间长度设置跳变计时器。进一步的,所述创建并管理服务步骤具体包括:当需要创建服务时,刚开始为关闭状态Closed,当接收到创建服务消息后进入服务初始化状态ServiceInit,创建的服务保存在服务列表serviceList中,当接收到创建服务实例消息后进入实例初始化状态InstanceInit,当接收到跳变序列后进入暂停状态Stopped,Stopped状态服务接收到启动服务消息后会进入运行状态Running,服务开始运行,同时服务跳变也开始执行。进一步的,当接收到创建服务消息后,还要先进行消息解析,创建服务消息中包含该服务名称和服务端口号,接收到创建服务消息后会首先检查此服务名称是否已经在服务列表中存在,如果存在,立即返回失败,说明为该服务已经存在;若不存在,则进入服务初始化状态ServiceInit,创建的服务保存在服务列表serviceList中,当接收到创建服务实例消息后进入实例初始化状态InstanceInit,当接收到跳变序列后进入暂停状态Stopped,Stopped状态服务接收到启动服务消息后会进入运行状态Running,此时创建的服务保存在服务列表serviceList中,最后回复创建服务成功,服务开始运行。进一步的,在所述创建并管理服务步骤中,当接收到删除服务消息DeleteService后,进行消息解析,删除服务消息中包含该服务名称,接收到该消息后会首先检查该服务名称是否在服务列表中存在,如果不存在,则立即回复失败,说明为该服务不存在;然后检查该服务状态是否为Running状态,若是Running状态,直接回复请停止服务后再删除;若检查通过,清除该服务对应的服务实例和跳变序列,清除服务列表中对应该服务信息,最后回复删除服务成功。进一步的,在所述创建并管理服务步骤中,当接收到查询服务消息GetServices后,将服务列表中的所有服务信息,包括服务名称、端口号封装为查询结果消息并返回。进一步的,所述接收到启动服务消息后会进入运行状态Running,服务开始运行,同时服务跳变也开始执行步骤具体包括:当接收到启动服务消息StartService后,启动服务消息中包含启动服务名称,若该服务名称在服务列表serviceList中不存在,直接回复启动服务失败,若该服务状态不是Stopped状态,则回复服务还没有就绪;若检查通过,则进行服务代理配置并加载,启动跳变流程,将该服务状态修改为Running状态,最后返回服务启动完成。进一步的,对于处于运行状态Running的服务,当接收到停止服务消息StopService时,停止服务消息中包含停止服务名称,首先检查该服务服务列表serviceList中是否存在,若存在则停止该服务对应的跳变流程和清除服务代理配置,停止该服务的代理,最后返回服务关闭成功。本发明的有益效果是:本发明可以选择提供服务的虚拟机,通过不断变化的虚拟机类型和每种虚拟机类型的服务时间,让攻击者无法获知何时采用何种虚拟机类型服务,进而无法利用某个操作系统或系统软件的漏洞对服务端进行攻击。附图说明图1是本发明实施例提供的基于虚拟机服务跳变的网络安全防御方法的流程图;图2是服务状态迁移示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。图1示出了本发明实施例提供的基于虚拟机服务跳变的网络安全防御方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。本实施例提供的基于虚拟机服务跳变的网络安全防御方法包括下述步骤:步骤S1、创建并管理服务。创建的服务保存在服务列表serviceList中,每个服务具有一个服务状态,服务状态包括关闭状态Closed、服务初始化状态ServiceInit、实例初始化状态InstanceInit、暂停状态Stopped和运行状态Running。服务状态迁移如图2所示,针对一个服务,刚开始为Closed状态,当接收到创建服务的消息后进入ServiceInit状态,当接收到创建服务实例消息后进入InstanceInit状态,接收跳变序列后进入Stopped状态。Stopped状态服务接收到启动服务消息会进入Running状态,此时服务开始运行,同时服务跳变也开始执行。另外,处于Running状态的服务可以通过停止服务消息,将其状态变为Stopped状态,服务和跳变也相应停止。ServiceInit、InstanceInit和Stopped状态都可以接收和处理删除服务消息,服务删除后相应的服务实例列表和跳变序列也同时被删除,服务状态就会恢复为Closed状态。若Running状态收到删除服务消息,则服务状态不变,所以服务应当先停止再删除。服务(Service)是指一个Web应用,位于客户端和服务器之间的服务跳变代理设备同时支持代理多个Web应用,不同的Web应用通过端口号区分。服务的成员变量包括:服务名称(serviceName)、服务端口号(port)、对应的跳变序列(hoppingTupleList)、服务当前状态(serviceState)、当前跳变元组ID(currentTupleId)、跳变计时器(hoppingTimer)、跳变速率调节因子(hoppingSepeedFactor)。步骤S2、对于当前服务,从跳变序列中提取一个跳变元组,并将当前跳变元组指针指向下一个跳变元组。跳变序列是由一系列跳变元组组成(HoppingTuple类),跳变元组其成员包括:跳变元组编号(tupleId)、跳变超时时间(timeLength)、虚拟机类型(Virtualtype)、服务实例编号(instanceId),通过服务实例编号instanceId可以查找到对应的服务实例信息。跳变序列有多个跳变元组,通过跳变元组编号予以区分,根据服务的当前跳变元组ID(currentTupleId)提取对应的跳变元组,然后将指针指向当前跳变序列的下一个跳变元组,以后续实现遍历跳变序列。步骤S3、按照跳变元组提取服务实例信息。服务实例(ServiceInstance类)对应一个启动了某个Web应用服务的虚拟机实例,服务实例信息包括服务IP地址(ipAddress)、服务端口号(port)。通过该IP地址和端口,即可以访问其提供的Web应用服务。步骤S4、按照跳变超时时间和跳变速度因子设置跳变计时器。具体的,根据跳变元组中的跳变超时时间除以跳变因子后的时间长度设置跳变计时器,如果跳变因子为1,则跳变计时器的时间设置就是所述跳变超时时间。步骤S5、根据跳变元组服务实例信息,通过服务实例的IP地址和端号重新修改对应的服务代理配置文件,重新加载服务代理配置文件后生效。对于创建的服务,需用通过服务代理提供接口,将服务转化为服务代理配置文件,服务代理配置通过加载配置文件按照服务和服务实例信息提供代理服务。此后,所有连接请求都会转给新的服务实例处理。步骤S6、当客户端有请求发出时,处理客户端的请求,此期间跳变元组的虚拟机类型作为当前对外类型,直到跳变计时器超时,重新提取跳变元组。虚拟机类型包括操作系统和应用服务器的类型,比如下表1所示:TomcatIISNginxApacheWindows2008Y(1)Y(6)Y(9)Y(14)WindowsXPY(2)Y(7)Y(10)Y(15)Windows7Y(3)Y(8)Y(11)Y(16)Centos6.5Y(4)NY(12)Y(17)Ubuntu14.04Y(5)NY(13)Y(18)中标麒麟Y(19)NY(20)Y(21)表1应用服务器的类型有多种,比如Tomcat、IIS、Nginx、Apache等,服务器的操作系统也可支持多种,比如Windows2008、WindowsXP、Windows7、Centos6.5、Ubuntu14.04、中标麒麟等,表中标注Y后方的括号表示支持的的多种组合,比如Y(6)表示采用Windows2008操作系统的IIS服务器,且包括6种组合类型。表中N表示不支持。当客户端需要向服务端发出访问请求时,直接处理客户端请求,首先根据日志配置选择是否将该消息记录在日志文件中,接着通过查询白名单检查该客户IP是否具有访问该服务的权限,然后对该请求进行速率控制,防止恶意用户的使用过多的系统资源,最后代理该客户端将该请求发送给对应服务的Web服务器处理。在整个过程产生了服务代理,在跳变计时器的每个统计周期(即虚拟机类型的服务时间内),跳变元组中的虚拟机类型作为对外显示的类型,因此通过不断变化的虚拟机类型和每种虚拟机类型的服务时间,让攻击者无法获知何时采用何种虚拟机类型服务,进而无法利用某个操作系统或系统软件的漏洞对服务端进行攻击,客户端的请求也就非常隐蔽,无法被攻击者破解。另外,本发明中,在客户端和服务器之间,通过代理访问的方式,服务代理配置直接通过加载配置文件实现,屏蔽后台的动态服务切换对客户端访问的影响。当跳变计时器超时后,由于在步骤S2中,当前跳变元组指针已经指向下一个跳变元组,因此根据指针即可读取到下一个新的跳变元组,进而实现虚拟机类型和服务器时间不间断跳变,增加了网络安全性。上述步骤S1中,结合图2所述,当接收到创建服务消息后,还要先进行消息解析,创建服务消息中包含该服务名称和服务端口号,接收到创建服务消息后会首先检查此服务名称是否已经在服务列表中存在,如果存在,立即返回失败,说明为该服务已经存在;若不存在,则进入服务初始化状态ServiceInit,创建的服务保存在服务列表serviceList中,当接收到创建服务实例消息后进入实例初始化状态InstanceInit,当接收到跳变序列后进入暂停状态Stopped,Stopped状态服务接收到启动服务消息后会进入运行状态Running,此时创建的服务保存在服务列表serviceList中,最后回复创建服务成功,服务开始运行。当接收到删除服务消息DeleteService后,进行消息解析,删除服务消息中包含该服务名称,接收到该消息后会首先检查该服务名称是否在服务列表中存在,如果不存在,则立即回复失败,说明为该服务不存在;然后检查该服务状态是否为Running状态,若是Running状态,直接回复请停止服务后再删除;若检查通过,清除该服务对应的服务实例和跳变序列,清除服务列表中对应该服务信息,最后回复删除服务成功。当接收到查询服务消息GetServices后,将服务列表中的所有服务信息,包括服务名称、端口号封装为查询结果消息并返回。当接收到启动服务消息StartService后,启动服务消息中包含启动服务名称,若该服务名称在服务列表serviceList中不存在,直接回复启动服务失败,若该服务状态不是Stopped状态,则回复服务还没有就绪;若检查通过,则进行服务代理配置并加载,启动跳变流程,将该服务状态修改为Running状态,最后返回服务启动完成。对于处于运行状态Running的服务,当接收到停止服务消息StopService时,停止服务消息中包含停止服务名称,首先检查该服务服务列表serviceList中是否存在,若存在则停止该服务对应的跳变流程和清除服务代理配置,停止该服务的代理,最后返回服务关闭成功。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1