一种虚拟机内核结构体自动化迁移方法

文档序号:29086495发布日期:2022-03-02 01:31阅读:124来源:国知局
一种虚拟机内核结构体自动化迁移方法

1.本发明属于虚拟机的技术领域,具体涉及一种虚拟机内核结构体自动化迁移方法。


背景技术:

2.保护关键文件(如系统配置文件和用户隐私数据包括密码、信用卡信息等)对于可控云非常重要。很多攻击是通过越权访问系统关键文件完成的,如通过修改linux系统下的/dev/mem文件篡改内核。建立针对关键核心文件的实时监控系统非常必要,因为这些文件一旦被篡改往往会立刻导致不良后果。为了保护关键文件,传统的域内监控系统面临着安全性的风险。而基于虚拟机自省技术的文件监控由于虚拟机管理层具有更高的权限和更强的隔离性,能够更加安全、透明地实现文件监控。基于虚拟机自省的实时文件监控相较于轮询式监控更加适用于监控关键核心文件,能够满足实时监控需求。目前,实时文件监控系统往往是监控虚拟机中某几个与文件访问相关的系统操作,每当发生文件操作时先要检查这次操作是否与被监控的关键文件有关,如果有关则会检查是否符合安全规则。这类监控方法可以被定义为基于操作的监控方法。文件操作在虚拟机中是一种高频率的操作,而其中与被监控的关键文件有关的操作只占一小部分。因此,基于操作的方法对虚拟机造成了很大的性能开销,难以直接应用于商业云计算环境中。
3.cfwatcher通过监听dentry结构体对应的内存页面捕获虚拟机中的文件访问操作,但是由于dentry结构体大小远小于内存页面大小,因此同一页面中其他内容的变动会触发监控,造成监控的误触发。为了解决这个问cfwatcher通过监听dentry结构体对应的内存页面捕获虚拟机中的文件访问操作,但是由于dentry结构体大小远小于内存页面大小,因此同一页面中其他内容的变动会触发监控,造成监控的误触发。


技术实现要素:

4.本发明的目的在于:针对现有技术的不足,提供一种虚拟机内核结构体自动化迁移方法,能够在域外将被监控的内核结构体迁移到单独的内存中,然后监控新的内存区域,从而解决了误触发问题。
5.为了实现上述目的,本发明采用如下技术方案:
6.一种虚拟机内核结构体自动化迁移方法,包括:
7.步骤一、内存分配模块在目标虚拟机内核内存空间中分配一块受保护的内存区域,然后获取该内存区域的地址;
8.步骤二、内存迁移模块将原始内核结构体复制到受保护的内存区域中;
9.步骤三、修改所有相关的指针,使它们指向新的地址,释放原始内核结构体的内存空间。
10.优选的,所述步骤一中,分配一块受保护的内存区域,包括:利用系统调用注入技术自动化分配内核内存区域,在linux操作系统中,使用mmap和munmap分配和释放内核内存
空间。
11.优选的,还包括:将文件系统创建的dentry结构体都放在哈希表dentry_cache中。
12.优选的,所述指针包括指向dentry结构体的外部指针、指向dentry结构体内部地址的内部指针、指向下一个/上一个dentry结构体的内部指针。
13.优选的,所述dentry结构体为双向链表连接。
14.优选的,还包括:
15.完成dentry迁移后,系统将原始dentry结构体的引用计数设置为0,并将原始dentry结构体添加到lru链表中。
16.本发明的有益效果在于,本发明包括步骤一、内存分配模块在目标虚拟机内核内存空间中分配一块受保护的内存区域,然后获取该内存区域的地址;步骤二、内存迁移模块将原始内核结构体复制到受保护的内存区域中;步骤三、修改所有相关的指针,使它们指向新的地址,释放原始内核结构体的内存空间。在cfwatcher监控模块和策略模块之外,还包括内存迁移模块和内存分配模块。系统部署在虚拟机管理层和安全虚拟机中,这种架构与cfwatcher相同,具备了安全性和透明性。本发明能够在域外将被监控的内核结构体迁移到单独的内存中,然后监控新的内存区域,从而解决了误触发问题。
附图说明
17.下面将参考附图来描述本发明示例性实施方式的特征、优点和技术效果。
18.图1为本发明的内核结构体自动化迁移的架构图。
19.图2为本发明的文件系统相关指针关系图。
具体实施方式
20.如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决技术问题,基本达到技术效果。
21.此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
22.在发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
23.以下结合附图1~2对本发明作进一步详细说明,但不作为对本发明的限定。
24.在cfwatcher监控模块和策略模块之外,系统还包括内存迁移模块和内存分配模块。系统部署在虚拟机管理层和安全虚拟机中,这种架构与cfwatcher相同,具备了安全性和透明性。
25.虚拟机内核结构体自动化迁移方法,包括:
26.步骤一、内存分配模块在目标虚拟机内核内存空间中分配一块受保护的内存区域,然后获取该内存区域的地址;
27.步骤二、内存迁移模块将原始内核结构体复制到受保护的内存区域中;
28.步骤三、修改所有相关的指针,使它们指向新的地址,释放原始内核结构体的内存空间。
29.在根据本发明的虚拟机内核结构体自动化迁移方法中,步骤一中,分配一块受保护的内存区域,包括:利用系统调用注入技术自动化分配内核内存区域,在linux操作系统中,使用mmap和munmap分配和释放内核内存空间。
30.需要说明的是:通过注入此系统调用,可以让目标虚拟机分配内核内存,此内存可用于存储迁移的内核数据。munmap可以释放由mmap创建的内存。该过程与注入open系统调用相似。
31.在根据本发明的虚拟机内核结构体自动化迁移方法中,还包括:将文件系统创建的dentry结构体都放在哈希表dentry_cache中。
32.需要说明的是:利用目标虚拟机操作系统的语义知识,能够在虚拟机内存中获取dentry_cache的地址。然后,从该哈希表中获得所有dentry结构体的头地址。当需要迁移一个dentry结构体时,系统将其复制到创建的内核内存区域中。由于dentry的长度是固定的,能够将所有需要迁移的dentry结构体连续复制到新的内存页面。复制dentry结构体后,需要修改所有相关的指针。通过分析dentry结构体,能够构建此结构体的配置文件。
33.在根据本发明的虚拟机内核结构体自动化迁移方法中,指针包括指向dentry结构体的外部指针、指向dentry结构体内部地址的内部指针及指向下一个/上一个dentry结构体的内部指针。
34.需要说明的是:在linux系统中有许多外部指针指向dentry结构体。例如,file结构体(linux文件系统中另一个重要的内核结构体)中有一个名为“f_dentry”的字段,它指向相关的dentry结构体。file结构体还有一个名为“f_inode”的字段,指向对应的inode结构体。由于相关的dentry和inode结构体具有相互链接的指针,因此,可以使用这些指针的关系来验证是否正确识别了这些指针;在dentry结构体中,有一个名为“d_name”的字符串指针指向dentry内部另一处存储字段,该内存区域存储文件或目录名称。由于该字段的偏移是固定的,迁移后可以根据这些固定的偏移值重新计算这些指针指向的新地址,之后对它们进行更新;系统能够从旧的dentry结构体中找到其下一个/上一个dentry结构体。迁移后,需要更改相应的链接指针,以确保双向链表的正确性。
35.在根据本发明的虚拟机内核结构体自动化迁移方法中,dentry结构体为双向链表连接。
36.在根据本发明的虚拟机内核结构体自动化迁移方法中,还包括:
37.完成dentry迁移后,系统将原始dentry结构体的引用计数设置为0,并将原始dentry结构体添加到lru链表中。
38.需要说明的是:操作系统将自动地释放lru链表上的结构体数据。
39.根据上述说明书的揭示和教导,本发明所属领域的技术人员还能够对上述实施方式进行变更和修改。因此,本发明并不局限于上述的具体实施方式,凡是本领域技术人员在
本发明的基础上所作出的任何显而易见的改进、替换或变型均属于本发明的保护范围。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1