如果 libvirt 存储卷加密将秘密密钥存储在 hyper 本身,如果攻击者具有物理访问权限,如何保护秘密本身
if libvirt storage volume encryption store secret key on hyper itself, how to protect the secret itself if attacker has physical access
我想在我们的KVM虚拟化平台加密我们VM的磁盘,参考:https://libvirt.org/formatstorageencryption.html#StorageEncryption.
我们可以通过简单的步骤来完成:
- 创建密文
- 创建加密卷
- 在VM定义中,指向secret uuid,如
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/vg/test-vm01'/>
<target dev='vda' bus='virtio'/>
<encryption format='luks'>
<secret type='passphrase' uuid='ebb28309-fb26-4a2a-a5a8-e25adea4bc8c'/>
</encryption>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
然而,实际上,libvirt 将秘密的值存储为 base64 编码在 hyper 上的 /etc/libvirt/secrets,如果攻击者具有 hyper 的物理访问权限,他可以轻松获得秘密值。
我假设黑客无法远程进入,但如果有物理访问权限,任何人都可以重置 root 密码,然后登录 hyper 以获取所有内容。
有什么方法吗?
或者这个威胁根本不存在。
谢谢。
如果攻击者在本地主机上拥有 root 访问权限,那么您就已经输了。即使 libvirt 在磁盘上加密了它的秘密,攻击者也可以从 libvirtd 内存中获取解密密钥。或者他们可以直接访问来宾 VM 内存以获取 LUKS 主密钥。
libvirt 磁盘加密主要用于保护存储在网络存储(NFS 等)上的磁盘映像。在这种情况下,它可以防止网络 MITM 攻击者或来自 NFS 服务器管理员的攻击。它可以在主机关闭时保护存储在本地主机上的图像 - 假设主主机根 FS 也被加密。
唯一超出范围的是在本地虚拟主机上防止 root。
即使是网络 MITM 也不能真正停止,如果不是平凡的话,因为也有几种方法可以获取解密密钥。
与非琐碎(例如重复)、中间人攻击,无论是网络还是本地/(远程-本地)相比,人们真的无能为力。
我想在我们的KVM虚拟化平台加密我们VM的磁盘,参考:https://libvirt.org/formatstorageencryption.html#StorageEncryption.
我们可以通过简单的步骤来完成:
- 创建密文
- 创建加密卷
- 在VM定义中,指向secret uuid,如
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/vg/test-vm01'/>
<target dev='vda' bus='virtio'/>
<encryption format='luks'>
<secret type='passphrase' uuid='ebb28309-fb26-4a2a-a5a8-e25adea4bc8c'/>
</encryption>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
然而,实际上,libvirt 将秘密的值存储为 base64 编码在 hyper 上的 /etc/libvirt/secrets,如果攻击者具有 hyper 的物理访问权限,他可以轻松获得秘密值。
我假设黑客无法远程进入,但如果有物理访问权限,任何人都可以重置 root 密码,然后登录 hyper 以获取所有内容。
有什么方法吗?
或者这个威胁根本不存在。
谢谢。
如果攻击者在本地主机上拥有 root 访问权限,那么您就已经输了。即使 libvirt 在磁盘上加密了它的秘密,攻击者也可以从 libvirtd 内存中获取解密密钥。或者他们可以直接访问来宾 VM 内存以获取 LUKS 主密钥。
libvirt 磁盘加密主要用于保护存储在网络存储(NFS 等)上的磁盘映像。在这种情况下,它可以防止网络 MITM 攻击者或来自 NFS 服务器管理员的攻击。它可以在主机关闭时保护存储在本地主机上的图像 - 假设主主机根 FS 也被加密。
唯一超出范围的是在本地虚拟主机上防止 root。
即使是网络 MITM 也不能真正停止,如果不是平凡的话,因为也有几种方法可以获取解密密钥。
与非琐碎(例如重复)、中间人攻击,无论是网络还是本地/(远程-本地)相比,人们真的无能为力。