论文部分内容阅读
从60年代开始人们由于应用的需要就提出了虚拟机技术,从硬件到软件都有。随着计算机技术的飞速发展,CPU的速度越来越快,存储容量越来越大,虚拟机技术也如雨后春笋般地发展起来,许多软件虚拟化技术也不断涌现。通过给计算机增加一个软件层,将一个物理计算机的资源划分成许多虚拟的软件计算机,这些虚拟机具备一个计算机的基本功能,拥有自己的操作系统和用户空间,可以独立运行自己的应用程序。由于通过软件而形成的虚拟机是以一个文件的形式存在于主机上,相当于主机的一个文件,所以如果虚拟机发生故障,就可以通过结束虚拟机(即关闭这个文件)或者重新启动来解决问题,而无需关闭主机,如果虚拟机被入侵,可以通过软件回放的形式,回到入侵前的状态,而无需重装系统。此外由于虚拟机具备一台物理计算机的功能,所以它可以将一台物理计算机通过划分成多个虚拟机而形成分布式结构或网络结构,为一个小型的公司或部门采用,可节省好多资源。用户模式的虚拟机UML是一种位于主机操作系统之上的虚拟机,是一种将linux内核输出到linux操作系统上的方法,可以用于linux内核、驱动的开发和调试,也可以用作服务器提供专门的服务,或者形成局域网。如果虚拟机联网,尽管它本身会比单独的主机上网安全很多,但是也不会避免被入侵的可能。所以寻找一种维护虚拟机网络安全的方法就显得很重要了。本文提出了一种UML下的基于主机的入侵检测方法,即主机系统调用的入侵检测方法。主机系统调用的入侵检测其实在物理计算机上已经得到很好的研究,它主要由三个模块组成,即采集系统调用号模块和数据分析模块,和报警模块,在主机上已经有了许多产品,如STIDE等。本文将这种方法移植到虚拟机上,但是传统的系统调用的入侵检测是在机器内部进行,本文将这个入侵检测系统移植到虚拟机UML的虚拟机管理器上。UML有两种模式,即TT模式和SKAS模式,本文采用更加安全和高效的SKAS模式。在SKAS模式下,UML虚拟机的管理器由两部分组成,即位于它下边的host OS和由四个进程组成的UML Arch部分,本文将分析模块和报警模块放在host OS上,以host OS的两条用户进程的形式运行,和在主机上的运行方式相同。这里的关键部分是采集系统调用号模块的设计,因为UML下的四条进程中有一条专门负责系统调的处理(通过intOx80),故而可以修改这条进程,通过在其中增加采集系统调用号的代码来完成这个模块,这种方式既提高了数据采集速度(因为是通过修改一些内核代码),又可以让多个虚拟机共同使用一个入侵检测系统(如果在虚拟机内部,则每个虚拟机都需要一个入侵检测系统),另一个优点就是如果将这个入侵检测系统置于虚拟机内部,如果虚拟机被入侵,那么这个进程就可能被结束,无法继续进行数据的采集,而将这个模块置于虚拟机管理器上就不会出现这种情况。最后,为了检验采集到的数据的正确性,本文从理论和实验两方面对其进行了验证,从理论和实验上保证了数据的正确性。本文介绍了虚拟机的体系结构,入侵检测的发展过程,实现了UML下的数据采集模块,并分析了实验结果。