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
# grep facilities /proc/cpuinfo | grep 158
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# ls /sys/firmware | grep uv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# virsh domcapabilities | grep unpack <feature policy='require' name='unpack'/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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'/>"
# virsh dumpxml vm-name | grep "<cpu mode='host-model'/>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
# # grubby --update-kernel=ALL --args="prot_virt=1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Crie um arquivo de parâmetros para a VM que você deseja proteger. Por exemplo:
touch ~/secure-parameters
# touch ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 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
# 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 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
# 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 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
# 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 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 [...]
# 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 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>
<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' iommu='on'/> </interface>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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'/>
<memballoon model='none'/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Criar a imagem de disco inicializável
zipl -V
# zipl -V
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 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'/>
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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.