论文部分内容阅读
GNU/Linx操作系统作为云计算、大数据的基础软件,其安全性和可靠性已经成为影响用户体验的关键因素。Linux采用宏内核设计架构,内核模块相互依赖,共存于内核地址空间,导致内核实现代码极其庞大,往往成为黑客攻击的目标。内核模块出现漏洞都可能影响到其他模块甚至导致整个内核崩溃,给操作系统的安全性和可靠性带来挑战。TCP/IP协议栈作为内核中重要的组成部分,由于复杂的设计逻辑及庞杂的代码实现使得协议栈出现故障的可能性大大增加,比如黑客利用协议栈设计上的漏洞或代码实现的漏洞发起权限提升或拒绝服务攻击。内核缺乏完善的自我保护机制,无法有效避免内核模块中错误/故障导致的崩溃,也没有能力进行自我恢复,因此隔离错误/故障模块以增强内核自我保护能力,提升内核安全性和可靠性是本文研究的目标。为防止TCP/IP协议栈和网络设备驱动的错误/故障影响其他模块,论文提出了基于KVM虚拟化技术隔离TCP/IP协议栈和网络设备驱动的解决方案。该方案能防止漏洞扩散,减小影响范围,有效保护内核,显著提升内核安全性和可靠性。如何利用基于KVM硬件辅助虚拟化技术构建内核TCP/IP协议栈和网络设备驱动的隔离方案,增强内核安全性和可靠性是本文研究的重点。本文研究的主要工作和创新如下:(1)通过研究有关内核保护和防止TCP/IP协议栈与网络驱动错误/故障扩散等方面的相关工作,总结出内核安全性和可靠性的保护机制和方法。(2)提出了基于KVM硬件辅助虚拟化隔离内核TCP/IP协议栈和网络设备驱动的增强内核安全性和可靠性解决方案。该方案将TCP/IP协议栈和网络设备驱动隔离到运行在用户态的虚拟机,降低被隔离模块权限,减小内核可信计算基,利用虚拟机的强隔离性减小漏洞的影响范围,能有效避免内核模块错误/故障破坏宿主机内核。(3)利用半虚拟化通信机制vring,实现了虚拟机前端模块与宿主机内核后端模块以及前后端模块间的通信。根据QOM模型在Qemu-kvm中增加虚拟设备,为前端驱动提供相应的设备,并完成前端驱动到虚拟设备的数据缓冲的内存信息传递;通过操作后端设备,将虚拟机内存和前端数据缓冲区相关信息告知后端驱动,完成前后端模块数据缓冲区的内存映射,实现前后端通信。基于KVM虚拟化机制的内核保护方案,简化隔离机制,减小内核可信计算基,阻止内核模块错误/故障扩散,有效保护内核,显著提高内核安全性和可靠性。