操作系统与虚拟化安全-虚拟化概述
(接intro)
虚拟化技术分类
按照数据中心分,基础设施、系统、软件
按照层次分,可以如图
基础设施虚拟化
- 网络虚拟化:网络的硬件与软件资源整合,向用户提供虚拟网络连接的虚拟化技术
- 存储虚拟化:物理的存储设备提供一个抽象的逻辑视图
- 系统虚拟化:一台物理机上虚拟出一台或多台虚拟机(VM)
系统虚拟化
pool
软件虚拟化
Pool
服务器虚拟化技术
3种体系结构
ESX
VMware workstation
Xen
虚拟化实现技术
虚拟机系统是通过在现有平台(裸机或操作系统)上增加一个虚拟层VMM(virtual Machine Monitor或Hypervisor)来实现
1、全虚拟化
- hypervisor提到0环权限,os换成1环
- 全部的指令都交给Hypervisor拦截,并转换处理,不需要改os
- Hypervisor需要做软件模拟,开销大
2、半虚拟化
- os的权限环不变,hypervisor也在0权限环
- 对特权指令的调用都改成对Hypervisor的调用(hyper call),os修改
- 性能优于全虚拟化
3、 硬件辅助虚拟化
- CPU 额外的多提供了一个环为Hypervisor专用,称为 -1 环(硬件实现)
- 在操作系统调用特权指令的时候,通过硬件的机制将特权指令调用转到在处在 -1环上的Hypervisor 上(os不用修改)
- 需要硬件支持(Intel VT和AMD-V)
相应的产品对比
VMM实现技术
上一节相当于vmm的实现类型
CPU虚拟化
目标
为每个虚拟机提供 一个或多个 虚拟CPU(VCPU)
多个VCPU 复用 物理CPUs, 任何时刻一个物理CPU只能被一个VCPU使用
实现
- 模拟执行 是指由VMM模拟所有指令的执行效果,包括解释执行和二进制代码翻译执行,效率较低。
- 监控执行 是指虚拟机的绝大多数指令都在物理主机上直接执行,少量可能影响虚拟机运行或影响其虚拟机状态的指令(敏感指令)必须由VMM监控并模拟其执行效果。执行效率较高。取决于模拟执行指令数量、复杂度和算法性能
硬件辅助的实现——Intel VT-x操作模式
- 即上文硬件辅助虚拟化具体实现机制,实现根模式、非根模式切换
pool
内存虚拟化
VMM参与时的机器地址定位过程
- 在硬件层面用EPT技术实现两次的地址转换(x86只能支持一次地址转换)
- 或者用下文的页表虚拟化技术
页表虚拟化
背景:os通过多级页表建立虚拟地址到物理地址的映射关系
整体思路:由VMM 根据映射 f 和 g 生成复合的映射 f·g,并直接将这个映射关系交给MMU(Memory Management Unit)
- 泛虚拟化方法
- 直接将 f.g 映射关系更新到Guest OS页表项中
- 安全隐患大,因为理论上VMM不应该知道guest os到HW的映射(违背了f映射对于虚拟机不应可见的规则)
- 例如:Xen
- 全虚拟化方法
- guest OS的每个页表维护一个影子页表,并将合成后的映射关系 f·g 写入到“影子”中,guest OS的页表内容保持不变
- VMM将影子页表交给MMU进行地址转换
- 泛虚拟化方法
内存虚拟化的优化
pool
IO虚拟化
《系统虚拟化:原理与实现》
设备发现
访问截获
设备模拟
设备共享
操作系统与虚拟化安全-虚拟化概述
https://al-377.github.io/2023/09/25/OS-Virtualization-Security-lesson4/