一种虚拟化环境中服务调用监控方法和系统技术方案

技术编号:20993051 阅读:55 留言:0更新日期:2019-04-29 22:53
本发明专利技术公开了一种虚拟化环境中服务调用监控方法和系统。本方法为:1)云端根据租户设置的被授权访问服务程序及相关源文件生成被监控客户虚拟机中的关键代码段的哈希库;2)该被监控客户虚拟机启动后,服务调用监控器对该被监控客户虚拟机加载的内存页权限位进行设置,使内存页上的代码在执行前,对内存中关键代码段的完整性进行校验;3)服务调用监控器检测到服务调用发生时,根据该服务调用的特征获取调用进程的页目录地址,当该调用进程的页目录地址在白名单进程链表中时,允许执行该服务调用;当检测到服务调用的返回结果事件发生时,根据返回结果事件的特征获取调用进程的信息,当调用进程在白名单进程链表中时,允许该返回结果通过。

A Monitoring Method and System for Service Calls in Virtualized Environment

The invention discloses a service call monitoring method and system in a virtualized environment. This method is as follows: 1) The cloud generates hash libraries of key code segments in the monitored client virtual machine according to the authorized access service program and related source files set by the tenant; 2) After the monitored client virtual machine is started, the service call monitor sets the permission bits of the memory pages loaded by the monitored client virtual machine to enable the code on the memory pages to perform the key generation in memory before execution. The integrity of the code segment is checked; 3) When the service invocation monitor detects the occurrence of the service invocation, the page directory address of the calling process is obtained according to the characteristics of the service invocation. When the page directory address of the calling process is in the list of whitelist processes, the service invocation is allowed to be executed; when the return result event of the service invocation is detected, the page directory address of the calling process is obtained according to the characteristics of the return result event. Gets information about the calling process, and allows the return result to pass when the calling process is in the whitelist process list.

【技术实现步骤摘要】
一种虚拟化环境中服务调用监控方法和系统
本专利技术属于计算机安全
,特别涉及一种在虚拟化环境提供服务调用监控的方法和系统。
技术介绍
基于虚拟化技术的云计算应用发展迅速,随着云计算应用的推广,所有的服务都在从本地迁移到云端。根据RightScale公司报告,受访的IT从业者中95%表示其所在公司正在使用云计算服务。同时为了吸引更多的租户,云服务商提供了很多附加服务,以便租户可以将精力放在自己的核心业务上。但是目前云服务商提供的附加服务的调用安全依赖的是用户的ID和口令,一旦用户的ID和口令泄露,那么租户订购的附加服务可能被敌手恶意调用以达到其恶意目的。例如,目前云服务商都开始在云端部署密钥管理服务和加密服务。密钥管理服务将用户的密钥同客户虚拟机进行了隔离,即使在客户虚拟机被敌手攻破的情况下,敌手也无法获取用户的密钥。但是目前对于密码运算服务的调用安全依赖于用户的ID和口令,一旦敌手获取了用户的ID和口令就可以在客户虚拟机中恶意的调用密码运算服务,以达到敌手的恶意目的。通常为了保证服务自动化的服务,还需要将用户的ID和口令写在客户虚拟机的配置文件中,这样大大增加了安全威胁,一旦客户虚拟机被敌手攻破,即使密钥是安全的,密码运算服务也不再安全。虚拟机监控器是虚拟化平台的重要组件,负责分配管理宿主机的资源,以使在其上运行的客户虚拟机可以分享宿主机上的物理资源。一般情况下,客户虚拟机使用的硬件设备由虚拟机监控器负责模拟,并且虚拟机监控器处理所有的客户虚拟机退出事件。虚拟机自省技术(VMI),是一种在虚拟机外部监视虚拟机运行状态的技术。该技术的监视功能是由观察内存细节,陷入硬件事件和读取CPU寄存器来完成的。大部分的VMI的实现需要提前了解客户虚拟机的操作系统知识,并利用操作系统知识和客户虚拟机的内存信息,对客户虚拟机的状态进行解析。然而当前的VMI工具在对客户虚拟机进行自省时,需要将客户虚拟机暂停,这样引入了较大的性能开销,并且VMI工具依赖客户虚拟机操作系统的知识解析出语义上可读的信息,一旦客户虚拟机的操作系统被破坏,那么解析出来的信息将不再可信。目前基于虚拟机自省技术的检测方案,为了减轻由于虚拟机自省造成的性能损失,需要客户虚拟机的辅助模块去触发安全检测。然而一旦客户虚拟机被敌手攻破,安装在客户虚拟机中的辅助模块也不再可信。AMD和Intel推出的CPU芯片大部分支持嵌套页表技术,通过嵌套页表技术大大提高了客户虚拟机的虚拟地址转化为宿主机物理地址的速度。在提高性能的同时,嵌套页表上都带有权限位标志,一般权限位有三种:可读,可写和可执行。一旦有违反权限的行为发生就会触发异常,造成客户虚拟机退出,并且由虚拟机监控器处理虚拟机退出事件。其中若某个内存页的权限被设置为不可知性,当该内存页上的代码要执行时,会触发取指错误。利用嵌套页表进行地址转换及其权限位设置的示意图如图5所示。
技术实现思路
本专利技术针对上述的服务调用安全仅仅依靠用户ID和口令的安全问题,提出一种在虚拟化环境提供服务调用监控的方法和系统。该方案设计一个服务调用监控器,用于实时检测客户虚拟机中发生的服务调用发生事件,并对客户虚拟机中的关键代码完整性进行实时的检测,只允许完整性良好的、被授权的程序调用服务,同时提供审计功能。该服务调用监控系统作为一个虚拟机监控器的组件实现,服务调用监控系统的架构如图1所示。具体来说,本专利技术采用的技术方案如下:一种提供服务调用监控的方法,该方案在虚拟化环境中提供服务,其具体步骤包括:1)生成被监控客户虚拟机的操作系统指纹信息,供监控系统解决部分语义间隙问题;利用指纹信息中的进程结构体和系统符号表构建进程链信息,并遍历进程链中的所有进程获取调用进程的页目录地址信息;2)租户在安全的环境中设置被授权访问服务的程序,并通过安全的网络传输将被授权访问服务的程序源文件传输到云端,云端利用这些二进制源文件,生成被监控客户虚拟机中的关键代码段的哈希库,供服务调用监控系统校验关键代码段的完整性;3)客户虚拟机启动时开始,服务调用监控器利用CPU芯片中提供的嵌套页表技术,对客户虚拟机加载的内存页权限位进行设置,使内存页上的代码在执行前,实时的对内存中关键代码段的完整性进行校验,并维护一个白名单进程列表,白名单进程链表中存放的是白名单进程的页目录地址;其中,白名单进程为被授权的且代码段完整性经过校验的进程;4)服务调用监控器在虚拟机监控器VMM中对服务调用进行检测,检测到服务调用事件发生时,调用虚拟机状态检测模块,根据该服务调用的特征获取调用进程的信息,例如通过网络调用KMS服务,可以通过对网络数据包的过滤发现其发送到KMS的数据包,以断定VM中发生了密码运算调用事件,该网络连接的IP和端口既是该服务调用的特征,然后对虚拟机的内存进行自省,获取调用进程的页目录地址,只有当该调用进程的页目录地址在白名单进程列表中时,才允许本次服务调用通过(即允许本次调用发送到服务端);5)对于有返回结果的服务调用,服务调用监控器在VMM中对该服务调用的返回结果事件进行检测,检测到服务调用的返回结果事件发生时,调用虚拟机状态检测模块,根据返回结果事件的特征获取调用进程的信息,只有当该调用进程在白名单进程列表中时,才允许本次服务调用返回结果通过(即允许服务端返回的结果返回到被监控虚拟机中)。进一步的,所述服务调用监控系统可以在基于Xen的虚拟化系统实现,也可以在基于VMwareESX/ESXi和Hyper-V的虚拟化系统实现,还可以在基于KVM-QEMU的虚拟化系统中实现。进一步的在步骤1)中,用户在安全的环境下生成被监控客户虚拟机的操作系统指纹信息,客户虚拟机的指纹信息包括客户虚拟机操作系统的内核结构信息及系统符号表信息。进一步的在步骤2)中,用户设置被授权调用服务的白名单程序,并在安全的环境中将包含关键代码段的源文件传输到云端,供云端生成被监控客户虚拟机中的关键代码段的哈希库,关键代码段包含内核镜像代码段,内核模块代码段,授权调用密码运算服务的可执行程序的代码段,授权调用密码运算服务的可执行程序相关的动态链接库代码段。哈希库中包含这些关键代码段的入口点信息,代码段的偏移量,代码段加载到内存中的虚拟地址及将关键代码段以页为单位计算的哈希值。进一步的在步骤3)中,所述的利用CPU芯片中支持的嵌套页表技术实时的对加载到内存中的关键代码段进行完整性校验,可以基于IntelEPT和AMDRVI的CPU芯片实现。进一步的在步骤3)中,通过对CPU芯片支持的嵌套页表中权限位的设置,保证被监控客户虚拟机中的代码在执行前,对其进行完整性校验,具体步骤如下:a)将客户虚拟机加载的所有的内存页的可执行权限位设置为不可执行;b)如果发生页错误异常,VMM处理该异常,如果页错误异常原因为取指错误,执行步骤c);如果页错误异常原因为写错误执行步骤d);c)对导致取指异常的内存进行完整性校验,并根据校验结果维护白名单进程列表;对于校验通过的内存页(即属于关键代码段),将其页权限设置为可执行,不可写;对于校验不通过的内存页(即不属于关键代码页或遭破坏的关键代码段),将发生页错误异常的内存页的权限设置为可执行,可写;d)将该内存页的可写权限位设置为可写,同时将可执行权限位设置为不可本文档来自技高网
...

【技术保护点】
1.一种虚拟化环境中服务调用监控方法,其步骤包括:1)云端根据租户设置的被授权访问服务程序及相关的源文件生成被监控客户虚拟机中的关键代码段的哈希库,该哈希库用于供服务调用监控器校验关键代码段的完整性;2)该被监控客户虚拟机启动后,服务调用监控器利用嵌套页表技术对该被监控客户虚拟机加载的内存页权限位进行设置,使内存页上的代码在执行前,对内存中关键代码段的完整性进行校验,并维护一个白名单进程链表,该白名单进程链表中存放白名单进程的页目录地址;其中,白名单进程为被授权的且代码段完整性经过校验的进程;3)服务调用监控器检测到服务调用发生时,调用虚拟机状态检测模块,根据该服务调用的特征获取调用进程的页目录地址,当该调用进程的页目录地址在该白名单进程链表中时,允许执行该服务调用;4)对于有返回结果的服务调用,服务调用监控器对该服务调用的返回结果事件进行检测,当检测到该服务调用的返回结果事件发生时,调用虚拟机状态检测模块,根据该返回结果事件的特征获取调用进程的信息,当该调用进程在白名单进程链表中时,允许该服务调用的返回结果通过。

【技术特征摘要】
1.一种虚拟化环境中服务调用监控方法,其步骤包括:1)云端根据租户设置的被授权访问服务程序及相关的源文件生成被监控客户虚拟机中的关键代码段的哈希库,该哈希库用于供服务调用监控器校验关键代码段的完整性;2)该被监控客户虚拟机启动后,服务调用监控器利用嵌套页表技术对该被监控客户虚拟机加载的内存页权限位进行设置,使内存页上的代码在执行前,对内存中关键代码段的完整性进行校验,并维护一个白名单进程链表,该白名单进程链表中存放白名单进程的页目录地址;其中,白名单进程为被授权的且代码段完整性经过校验的进程;3)服务调用监控器检测到服务调用发生时,调用虚拟机状态检测模块,根据该服务调用的特征获取调用进程的页目录地址,当该调用进程的页目录地址在该白名单进程链表中时,允许执行该服务调用;4)对于有返回结果的服务调用,服务调用监控器对该服务调用的返回结果事件进行检测,当检测到该服务调用的返回结果事件发生时,调用虚拟机状态检测模块,根据该返回结果事件的特征获取调用进程的信息,当该调用进程在白名单进程链表中时,允许该服务调用的返回结果通过。2.如权利要求1所述的方法,其特征在于,对内存中关键代码段的完整性进行校验的方法为:21)将客户虚拟机加载的所有内存页的可执行权限位设置为不可执行;22)如果发生页错误异常,且该页错误异常为取指错误,则执行步骤23);如果发生页错误异常,且该页错误异常为写错误,则执行步骤24);23)对导致取指异常的内存进行完整性校验,并根据校验结果维护白名单进程列表;对于校验通过的内存页,并将其页权限设置为可执行,不可写;对于校验不通过的内存页,将发生页错误异常的内存页的权限设置为可执行,可写;24)将发生页错误异常的内存页的可写权限位设置为可写,同时将可执行权限位设置为不可执行。3.如权利要求2所述的方法,其特征在于,所述步骤23)中,对导致取值错误的内存页进行完整性校验,并根据校验结果维护白名单进程列表的方法为:a)检查引发取指错误的被监控客户虚拟机的虚拟地址,若该虚拟地址为内核空间地址,则执行步骤b);若该虚拟地址为用户空间地址,则执行步骤g);b)检查该虚拟地址是否为已知的内核地址区间,若为已知的内核地址空间则执行步骤c);否则执行步骤d);c)计算取指错误的内存页上的代码段的哈希值,并将该哈希值与哈希库中对应的哈希值进行比较,若比较结果不相同则执行步骤d);d)计算该内存页上的代码段的哈希值,并将该哈希值与所有内核模块的入口点所在的代码页的哈希值进行比较,若比较结果相同执行步骤e);否则执行步骤f);e)记录该内核模块的地址区间;f)清空白名单进程列表,并将被监控客户虚拟机的状态标记为可疑状态;g)检查当前进程的页目录地址是否在白名单进程链表中,如果存在,则执行步骤h);否则执行步骤i);h)计...

【专利技术属性】
技术研发人员:蔡权伟林璟锵江芳杰王琼霄
申请(专利权)人:中国科学院数据与通信保护研究教育中心中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1