小注: 这是在学校的时候,参加某比赛,而做的一个东西,虽然并不先进,但是当时学到了很多东西。发到这里,当作记录,详细文档可以从这里下载:
doc:https://docs.google.com/open?id=0Bx0lAP-TDpepdEx3SHRCaHZiNGM
PPT https://docs.google.com/open?id=0Bx0lAP-TDpepR1hkMllibEMzSmc
本系统是基于Linux KVM虚拟化平台的虚拟机安全防护软件。首先,我们通过在KVM内核中增加系统调用,结合安全内核模块实现对虚拟机系统资源的单向透视功能以及对进程的管理功能。在此基础上,安全控制模块使用ClamAV杀毒引擎对各活动虚拟机进行透视病毒扫描。客户可以通过网络模块对自己租用的虚拟机进行安全设置和管理,不需要额外安装任何软件和系统模块。
本系统由四个主要模块组成:改造的KVM内核模块、安全内核模块、安全控制模块和网络模块。具体架构如下图:
图3.1 总体架构 |
1. 改造的KVM内核模块(kvm-kmod):运行在宿主机的Ring0层,在原KVM虚拟化管理器的基础上进行修改,增加透视虚拟机系统资源的函数接口。实现以下功能:
① 第一种虚拟透视技术:提供读取虚拟机内存到主机内核空间的接口(关键技术1)
② 允许其他内核模块在特定VM EXIT(CR3)注册钩子,以实现对进程的监控
(注:兼容Intel VT和AMD SVM架构)
2. 安全内核模块(av):运行在宿主机的Ring0层,该内核模块通过调用改造的KVM内核模块,获得虚拟机的进程信息,实现以下功能:
① 虚拟机内核对象还原(关键技术2);
② 第二种虚拟透视技术:内存映射(关键技术1);
③ 按照扫描策略和进程处理策略,对进程、线程实行以下的控制操作:暂停、恢复、终止;
④ 与安全控制模块、sever模块进行netlink通信(通信协议自行设计),以完成进程扫描等功能。
3. 安全控制模块(clamav-host):运行在宿主机的Ring3层, 在clamav杀毒引擎基础上修改实现以下功能:在集成clamav杀毒引擎基础上实现以下功能:
① 与内核模块进行netlink通信,提供第二种虚拟内存透视技术-内存映射的载体;
② 接受扫描命令后,对进程扫描,并将结果报告给安全内核模块,由其进行相应的进程处理;
4. 网络模块(sever/client):包括两个部分,sever和client。
sever——与安全内核模块进行netlink通信,实现对进程的监控;与client模块进行TCP通信(应用层协议自行设计,其中传递的CR3信息为其哈希值);
client——对虚拟机中的进程信息进行控制和管理。
(注:系统在虚拟机中不安装任何软件。Client安装在虚拟机终端中,仅提供显示管理功能,不涉及杀毒,目前采用的是C/S架构,随着系统的应用扩展,可进一步完善为B/S架构。)
图中的Qemu进程是具体运行虚拟机的进程,我们不对其进行任何修改。