19.8. 在 IBM Z 中设置 IBM Secure Execution
当使用 IBM Z 硬件运行 RHEL 9 主机时,您可以通过为虚拟机配置 IBM Secure Execution 功能来提高虚拟机(VM)的安全性。
IBM Secure Execution(也称 Protected Virtualization)可防止主机系统访问虚拟机的状态和内存内容。因此,即使主机被攻击,也无法用作攻击客户端操作系统的向量。另外,安全执行也可以用来防止不可信主机从虚拟机获取敏感信息。
您可以通过启用 IBM Secure Execution,来将 IBM Z 主机上的现有虚拟机转换为安全的虚拟机。
对于保护生产环境,请参阅 有关使用安全执行完全保护工作负载的 IBM 文档,其解释了如何进一步保护您的工作负载。
先决条件
系统硬件是以下之一:
- IBM z15 或更高版本
- IBM LinuxONE III 或更高版本
为您的系统启用安全执行功能。要验证,请使用:
grep facilities /proc/cpuinfo | grep 158
# grep facilities /proc/cpuinfo | grep 158
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这个命令显示任何输出,代表您的 CPU 与安全执行兼容。
内核包含对安全执行的支持。要确认,请使用:
ls /sys/firmware | grep uv
# ls /sys/firmware | grep uv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令生成任何输出,那么内核支持安全执行。
主机 CPU 型号包含
解包
功能。要确认,请使用:virsh domcapabilities | grep unpack
# virsh domcapabilities | grep unpack <feature policy='require' name='unpack'/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令生成上述输出,则您的 CPU 主机型号与安全执行兼容。
虚拟机的 CPU 模式设置为
host-model
。virsh dumpxml <vm_name> | grep "<cpu mode='host-model'/>"
# virsh dumpxml <vm_name> | grep "<cpu mode='host-model'/>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令生成任何输出,则会正确设置虚拟机的 CPU 模式。
主机上必须安装 genprotimg 软件包。
dnf install genprotimg
# dnf install genprotimg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要直接从主机修改虚拟机镜像,
guestfs-tools
软件包需已安装在主机上。dnf install guestfs-tools
# dnf install guestfs-tools
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您已获取并验证了 IBM Z 主机密钥文档。详情请参阅 IBM 文档中的 验证主机密钥文档 。
流程
在主机上 执行以下步骤:
将
prot_virt=1
内核参数添加到主机的引导配置中。grubby --update-kernel=ALL --args="prot_virt=1"
# grubby --update-kernel=ALL --args="prot_virt=1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新引导菜单:
# zipl
-
使用
virsh edit
修改您要保护的虚拟机的 XML 配置。 将
<launchSecurity type="s390-pv"/>
添加到</devices>
行下。例如:[...] </memballoon> </devices> <launchSecurity type="s390-pv"/> </domain>
[...] </memballoon> </devices> <launchSecurity type="s390-pv"/> </domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果配置的
<devices>
部分包含了一个virtio-rng
设备 (<rng model="virtio">
),请删除<rng> </rng>
块的所有行。 可选:如果您要保护的虚拟机使用 32 GiB 或更多 RAM ,请将
<async-teardown enabled='yes'/>
行添加到其 XML 配置中的<features></features>
部分中。这提高了重启或停止此类安全执行客户机的性能。
执行以下部分中的步骤。您可以登录到客户机,并手动为其配置安全执行,或使用脚本和 guestfs-tools
直接从主机配置客户机镜像。
手动为虚拟机配置安全执行
在您要保护的虚拟机的 客户机操作系统中 执行以下步骤。
创建一个参数文件。例如:
touch ~/secure-parameters
# touch ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/boot/loader/entries
目录中,识别最新版本的引导加载程序条目:ls /boot/loader/entries -l
# ls /boot/loader/entries -l [...] -rw-r--r--. 1 root root 281 Oct 9 15:51 3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索引导装载程序条目的内核选项行:
cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options options root=/dev/mapper/rhel-root rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
# cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options options root=/dev/mapper/rhel-root rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 options 行的内容和
swiotlb=262144
添加到创建的参数文件中。echo "root=/dev/mapper/rhel-root rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
# echo "root=/dev/mapper/rhel-root rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成一个新的 IBM Secure Execution 镜像。
例如,以下命令会根据
/boot/vmlinuz-4.18.0-240.el8.s390x
映像,使用secure-parameters
文件创建/boot/secure-image
安全镜像、/boot/initramfs-4.18.0-240.el8.s390x.img
初始 RAM 磁盘文件和HKD-8651-000201C048.crt
主机密钥文档。genprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image
# genprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过使用
genprotimg
工具创建安全镜像,其包含内核参数、初始 RAM 磁盘和引导镜像。更新虚拟机的引导菜单,以从安全镜像引导。此外,删除以
initrd
和options
开头的行,因为不需要它们。例如,在 RHEL 8.3 虚拟机中,可以在
/boot/loader/entries/
目录中编辑引导菜单:cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf title Red Hat Enterprise Linux 8.3 version 4.18.0-240.el8.s390x linux /boot/secure-image [...]
# cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf title Red Hat Enterprise Linux 8.3 version 4.18.0-240.el8.s390x linux /boot/secure-image [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建可引导磁盘镜像:
zipl -V
# zipl -V
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安全地删除原始的未保护的文件。例如:
shred /boot/vmlinuz-4.18.0-240.el8.s390x shred /boot/initramfs-4.18.0-240.el8.s390x.img shred secure-parameters
# shred /boot/vmlinuz-4.18.0-240.el8.s390x # shred /boot/initramfs-4.18.0-240.el8.s390x.img # shred secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 原始引导镜像、初始 RAM 镜像和内核参数文件未受保护,如果未删除它们,则启用了安全执行的虚拟机仍然容易受到黑客攻击或敏感数据挖掘的攻击。
直接从主机为虚拟机配置安全执行
您可以使用 guestfs-tools
修改现有镜像,而无需手动引导它。但是,仅在测试和开发环境中使用以下示例。有关保护生产环境,请参阅 有关使用安全执行完全保护工作负载的 IBM 文档。
在主机上 执行以下步骤。
创建一个包含主机密钥文档的脚本,并将现有虚拟机配置为使用安全执行。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 确保虚拟机已关闭。
使用
guestfs-tools
将脚本添加到现有 VM 镜像中,并将其标记为 run on first boot。virt-customize -a <vm_image_path> --selinux-relabel --firstboot <script_path>
# virt-customize -a <vm_image_path> --selinux-relabel --firstboot <script_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用添加的脚本从镜像引导虚拟机。
脚本在第一次引导时运行,然后再次关闭虚拟机。因此,虚拟机现在被配置为在具有相应主机密钥的主机上使用安全执行运行。
验证
在主机上,使用
virsh dumpxml
工具确认受保护虚拟机的 XML 配置。配置必须包含<launchSecurity type="s390-pv"/>
元素,且没有 <rng model="virtio"> 行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow