15.6. Configuración de IBM Secure Execution en IBM Z
Si utiliza hardware IBM Z para ejecutar un host RHEL 8, puede mejorar la seguridad de sus máquinas virtuales (VM) configurando IBM Secure Execution para las VM.
IBM Secure Execution, también conocida como Virtualización Protegida, impide que el sistema anfitrión acceda al estado y al contenido de la memoria de una máquina virtual. Como resultado, incluso si el host está comprometido, no puede ser utilizado como un vector para atacar el sistema operativo invitado. Además, la Ejecución Segura puede utilizarse para evitar que los hosts no confiables obtengan información sensible de la VM.
El siguiente procedimiento describe cómo convertir una VM existente en un host IBM Z en una VM segura.
Requisitos previos
El hardware del sistema es uno de los siguientes:
- IBM z15 o posterior
- IBM LinuxONE III o posterior
La función de ejecución segura está activada en su sistema. Para comprobarlo, utilice:
grep facilities /proc/cpuinfo | grep 158
# grep facilities /proc/cpuinfo | grep 158
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si este comando muestra alguna salida, su CPU es compatible con la ejecución segura.
El kernel incluye soporte para la Ejecución Segura. Para confirmarlo, utilice:
ls /sys/firmware | grep uv
# ls /sys/firmware | grep uv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si el comando genera alguna salida, su kernel soporta la Ejecución Segura.
El modelo de CPU del host contiene la función
unpack
. Para confirmarlo, utilice:virsh domcapabilities | grep unpack
# virsh domcapabilities | grep unpack <feature policy='require' name='unpack'/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si el comando genera la salida anterior, su modelo de CPU es compatible con la ejecución segura.
El modo de CPU de la VM está configurado en
host-model
. Para confirmarlo, utilice lo siguiente y sustituyavm-name
por el nombre de su VM.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 Si el comando genera alguna salida, el modo de CPU de la VM está configurado correctamente.
- Ha obtenido y verificado el documento de clave de host de IBM Z. Para obtener instrucciones para hacerlo, consulte Verificación del documento de clave de host en la documentación de IBM.
Procedimiento
Añade el parámetro del kernel
prot_virt=1
a la configuración de arranque del host.# 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 Cree un archivo de parámetros para la máquina virtual que desea proteger. Por ejemplo:
touch ~/secure-parameters
# touch ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow En el directorio
/boot/loader/entries
del host, identifique la entrada del gestor de arranque con la última versión: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 Recupera la línea de opciones del kernel de la entrada del gestor de arranque:
cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options options root=/dev/mapper/rhel-root crashkernel=auto 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 crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Añade el contenido de la línea de opciones y
swiotlb=262144
al archivo de parámetros creado.echo "root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
# echo "root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Generar una imagen de IBM Secure Execution para la VM seleccionada.
Por ejemplo, lo siguiente crea una imagen segura
/boot/secure-image
basada en la imagen/boot/vmlinuz-4.18.0-240.el8.s390x
, utilizando el archivosecure-parameters
, el archivo de disco RAM inicial/boot/initramfs-4.18.0-240.el8.s390x.img
y el documento de clave de hostHKD-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 Utilizando la utilidad
genprotimg
se crea la imagen segura, que contiene los parámetros del kernel, el disco RAM inicial y la imagen de arranque.En el sistema operativo invitado de la VM, actualice el menú de arranque de la VM para arrancar desde la imagen segura. Además, elimine las líneas que comienzan con
initrd
yoptions
, ya que no son necesarias.Por ejemplo, en una VM RHEL 8.3, el menú de arranque se puede editar en el directorio
/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 Habilita los dispositivos virtio para que utilicen buffers compartidos. Para ello, utilice
virsh edit
para modificar la configuración XML de la VM, y añadaiommu='on'
a la línea<driver>
de todos los dispositivos que lo tengan. Por ejemplo:<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' iommu='on'/> </interface>
<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' iommu='on'/> </interface>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si la configuración de un dispositivo no contiene ninguna línea
<driver>
, añada en su lugar<driver iommu='on'\>
.Desactivar el memory ballooning en la VM, ya que esta característica no es compatible con la Ejecución Segura. Para ello, añada la siguiente línea a la configuración XML de la máquina virtual.
<memballoon model='none'/>
<memballoon model='none'/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Crear la imagen de disco de arranque
zipl -V
# zipl -V
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Eliminar de forma segura los archivos originales no protegidos. Por ejemplo:
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 La imagen de arranque original, la imagen de RAM inicial y el archivo de parámetros del kernel están desprotegidos y, si no se eliminan, las máquinas virtuales con la ejecución segura activada pueden seguir siendo vulnerables a los intentos de piratería o a la extracción de datos sensibles.
Verificación
En el host, utilice la utilidad
virsh dumpxml
para confirmar la configuración XML de la máquina virtual protegida. La configuración debe incluir los elementos<driver iommu='on'/>
y<memballoon model='none'/>
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Recursos adicionales
- Para obtener instrucciones adicionales sobre cómo modificar la configuración de arranque del host, consulte Configuración de los parámetros de la línea de comandos del kernel.
-
Para más información sobre la utilidad
genprotimg
, consulte la documentación de IBM.