15.6. Configurando o IBM Secure Execution no IBM Z
Ao utilizar o hardware IBM Z para executar um host RHEL 8, você pode melhorar a segurança de suas máquinas virtuais (VMs) configurando o IBM Secure Execution para as VMs.
A IBM Secure Execution, também conhecida como Virtualização Protegida, impede que o sistema host acesse o estado e o conteúdo da memória de uma VM. Como resultado, mesmo que o host esteja comprometido, ele não pode ser usado como um vetor para atacar o sistema operacional convidado. Além disso, o Secure Execution pode ser usado para evitar que hospedeiros não confiáveis obtenham informações sensíveis da VM.
O procedimento seguinte descreve como converter uma VM existente em um host IBM Z em uma VM segura.
Pré-requisitos
O hardware do sistema é um dos seguintes:
- IBM z15 ou posterior
- IBM LinuxONE III ou posterior
O recurso de Execução Segura está habilitado para seu sistema. Para verificar, use:
# grep facilities /proc/cpuinfo | grep 158
Se este comando exibir qualquer saída, sua CPU é compatível com o Secure Execution.
O núcleo inclui suporte para Execução Segura. Para confirmar, use:
# ls /sys/firmware | grep uv
Se o comando gerar alguma saída, seu kernel suporta Execução Segura.
O modelo de CPU host contém a facilidade
unpack
. Para confirmar, use:# virsh domcapabilities | grep unpack <feature policy='require' name='unpack'/>
Se o comando gerar a saída acima, seu modelo de host de CPU é compatível com o Secure Execution.
O modo CPU da VM está configurado para
host-model
. Para confirmar isso, use o seguinte e substituavm-name
pelo nome de sua VM.# virsh dumpxml vm-name | grep "<cpu mode='host-model'/>"
Se o comando gerar alguma saída, o modo CPU da VM é configurado corretamente.
- Você obteve e verificou o documento chave do host IBM Z. Para instruções para isso, consulte Verificação do documento chave do host na documentação da IBM.
Procedimento
Adicione o parâmetro do kernel
prot_virt=1
à configuração de inicialização do host.# # grubby --update-kernel=ALL --args="prot_virt=1"
Crie um arquivo de parâmetros para a VM que você deseja proteger. Por exemplo:
# touch ~/secure-parameters
No diretório
/boot/loader/entries
do host, identifique a entrada do carregador de inicialização com a versão mais recente:# ls /boot/loader/entries -l [...] -rw-r--r--. 1 root root 281 Oct 9 15:51 3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
Recuperar a linha de opções do kernel da entrada do carregador de inicialização:
# 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
Adicione o conteúdo da linha de opções e
swiotlb=262144
ao arquivo de parâmetros criado.# echo "root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
Gerar uma imagem IBM Secure Execution para a VM selecionada.
Por exemplo, o seguinte cria uma imagem protegida
/boot/secure-image
baseada na imagem/boot/vmlinuz-4.18.0-240.el8.s390x
, usando o arquivosecure-parameters
, o arquivo de disco RAM inicial/boot/initramfs-4.18.0-240.el8.s390x.img
, e o documento chave do 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
Usando o utilitário
genprotimg
, cria-se a imagem segura, que contém os parâmetros do kernel, o disco RAM inicial e a imagem de inicialização.No sistema operacional convidado da VM, atualize o menu de inicialização da VM para inicializar a partir da imagem segura. Além disso, remova as linhas começando com
initrd
eoptions
, pois elas não são necessárias.Por exemplo, em um RHEL 8.3 VM, o menu de inicialização pode ser editado no diretório
/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 [...]
Habilitar dispositivos de virtio para usar buffers compartilhados. Para isso, use
virsh edit
para modificar a configuração XML da VM, e adicioneiommu='on'
à linha<driver>
de todos os dispositivos que possuem um. Por exemplo:<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' iommu='on'/> </interface>
Se uma configuração de dispositivo não contiver nenhuma linha
<driver>
, adicione<driver iommu='on'\>
em seu lugar.Desativar o balonamento de memória na VM, pois o recurso não é compatível com o Secure Execution. Para fazer isso, adicione a seguinte linha à configuração XML da VM.
<memballoon model='none'/>
Criar a imagem de disco inicializável
# zipl -V
Remover com segurança os arquivos originais desprotegidos. Por exemplo, os arquivos originais desprotegidos:
# shred /boot/vmlinuz-4.18.0-240.el8.s390x # shred /boot/initramfs-4.18.0-240.el8.s390x.img # shred secure-parameters
A imagem de inicialização original, a imagem RAM inicial e o arquivo de parâmetros do kernel estão desprotegidos e, se não forem removidos, as VMs com Execução Segura ativadas ainda podem ser vulneráveis a tentativas de hacking ou mineração de dados sensíveis.
Verificação
No host, use o utilitário
virsh dumpxml
para confirmar a configuração XML da VM protegida. A configuração deve incluir os elementos<driver iommu='on'/>
e<memballoon model='none'/>
.# virsh dumpxml vm-name [...] <cpu mode='host-model'/> <devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none' io='native' iommu='on'> <source file='/var/lib/libvirt/images/secure-guest.qcow2'/> <target dev='vda' bus='virtio'/> </disk> <interface type='network'> <driver iommu='on'/> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'/> <memballoon model='none'/> </devices> </domain>
Recursos adicionais
- Para instruções adicionais sobre como modificar a configuração da inicialização do host, consulte Configuração dos parâmetros de linha de comando do kernel.
-
Para mais informações sobre o utilitário
genprotimg
, consulte a documentação da IBM.