Crie um disco de modelo de VM blindada do Linux

Aplica-se a: Windows Server 2022, Windows Server 2019

Este tópico explica como preparar um disco de modelo para VMs blindadas do Linux que podem ser usadas para instanciar uma ou mais VMs de locatário.

Pré-requisitos

Para preparar e testar uma VM blindada do Linux, você precisará dos seguintes recursos disponíveis:

  • Um servidor com recursos de virtualização executando o Windows Server, versão 1709 ou posterior
  • Um segundo computador (Windows 10 ou Windows Server 2016) capaz de executar o Gerenciador do Hyper-V para se conectar ao console da VM em execução
  • Uma imagem ISO para um dos OSes de VM blindada do Linux com suporte:
    • Ubuntu 16.04 LTS com o kernel 4.4
    • Red Hat Enterprise Linux 7.3
    • SUSE Linux Enterprise Server 12 com Service Pack 2
  • Acesso à Internet para baixar o pacote lsvmtools e as atualizações do SO

Importante

As versões mais recentes dos sistemas operacionais Linux anteriores podem incluir um bug de driver TPM conhecido que os impedirá de provisionar com êxito como VMs blindadas. Não é recomendável que você atualize seus modelos ou VMs blindadas para uma versão mais recente até que uma correção esteja disponível. A lista de sistemas operacionais com suporte acima será atualizada quando as atualizações se tornarem públicas.

Preparar uma VM do Linux

As VMs blindadas são criadas usando discos de modelo seguros. Os discos de modelo contêm o sistema operacional para a VM e metadados, incluindo uma assinatura digital das partições /boot e /root, para garantir que os componentes principais do sistema operacional não sejam modificados antes da implantação.

Para criar um disco de modelo, primeiro crie uma VM regular (sem proteção) que você preparará como a imagem base para futuras VMs blindadas. O software que você instala e as alterações de configuração feitas nessa VM serão aplicados a todas as VMs blindadas criadas com base nesse disco de modelo. Essas etapas orientarão você pelos requisitos mínimos para preparar uma VM do Linux para modelagem.

Observação

A criptografia de disco do Linux é configurada quando o disco é particionado. Isso significa que você deve criar uma VM pré-criptografada usando dm-crypt para criar um disco de modelo de VM blindada do Linux.

  1. No servidor de virtualização, verifique se o Hyper-V e os recursos de suporte do Hyper-V do Host Guardian estão instalados executando os seguintes comandos em um console do PowerShell com privilégios elevados:

    Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart
    
  2. Baixe a imagem ISO de uma fonte confiável e armazene-a em seu servidor de virtualização ou em um compartilhamento de arquivo acessível para seu servidor de virtualização.

  3. No computador de gerenciamento que executa o Windows Server versão 1709, instale as Ferramentas de Administração de Servidor Remoto de VM blindada executando o seguinte comando:

    Install-WindowsFeature RSAT-Shielded-VM-Tools
    
  4. Abra o Gerenciador do Hyper-V no computador de gerenciamento e conecte-se ao servidor de virtualização. Você pode fazer isso clicando em "Conectar-se ao Servidor..." no painel Ações ou clicando com o botão direito do mouse no Gerenciador do Hyper-V e escolhendo "Conectar-se ao Servidor..." Forneça o nome DNS para o servidor Hyper-V e, se necessário, as credenciais necessárias para se conectar a ele.

  5. Usando o Gerenciador do Hyper-V, configure um comutador externo no servidor de virtualização para que a VM do Linux possa acessar a Internet para obter atualizações.

  6. Então crie uma máquina virtual para instalar o sistema operacional Linux. No painel Ações, clique em Nova>Máquina Virtual para abrir o assistente. Dê um nome amigável à VM, como "Linux pré-modelado", e clique em Avançar.

  7. Na segunda página do Assistente, selecione Geração 2 para garantir que a VM seja provisionada com um perfil de firmware baseado em UEFI.

  8. Conclua o restante do assistente conforme suas preferências. Não use um disco diferente para essa VM; Os discos de modelo de VM blindada não podem usar discos diferentes. Por fim, conecte a imagem ISO que você baixou anteriormente à unidade de DVD virtual dessa VM para instalar o SO.

  9. No Gerenciador do Hyper-V, selecione sua VM recém-criada e clique em Conectar... no painel Ações para anexar a um console virtual da VM. Na janela exibida, clique em Iniciar para ativar a máquina virtual.

  10. Prossiga com o processo de instalação para a distribuição do Linux selecionada. Embora cada distribuição do Linux use um assistente de instalação diferente, os seguintes requisitos devem ser atendidos para VMs que se tornarão discos de modelo de VM blindada do Linux:

    • O disco deve ser particionado usando o layout da TABELA de Particionamento GUID (GPT)
    • A partição raiz deve ser criptografada com dm-crypt. A senha deve ser definida como senha (todas as letras minúsculas). Essa senha será aleatória e a partição será criptografada novamente quando uma VM blindada for provisionada.
    • A partição de inicialização deve usar o sistema de arquivos ext2
  11. Depois que o SO Linux tiver sido totalmente inicializado e você tiver se conectado, é recomendável instalar o kernel linux-virtual e os pacotes de serviços de integração do Hyper-V associados. Além disso, você desejará instalar um servidor SSH ou outra ferramenta de gerenciamento remoto para acessar a VM depois que ela for blindada.

    No Ubuntu, execute o seguinte comando para instalar esses componentes:

    sudo apt-get install linux-virtual linux-tools-virtual linux-cloud-tools-virtual linux-image-extra-virtual openssh-server
    

    No RHEL, execute o seguinte comando:

    sudo yum install hyperv-daemons openssh-server
    sudo service sshd start
    

    No SLES, execute o seguinte comando:

    sudo zypper install hyper-v
    sudo chkconfig hv_kvp_daemon on
    sudo systemctl enable sshd
    
  12. Configure o SO Linux conforme desejado. Qualquer software instalado, contas de usuário que você adicionar e alterações de configuração em todo o sistema que você fizer serão aplicados a todas as VMs futuras criadas com base nesse disco de modelo. Evite salvar segredos ou pacotes desnecessários no disco.

  13. Se você estiver planejando usar System Center Virtual Machine Manager para implantar suas VMs, instale o agente convidado do VMM para permitir que o VMM especialize seu SO durante o provisionamento de VM. A especialização permite que cada VM seja configurada com segurança com diferentes usuários e chaves SSH, configurações de rede e etapas de configuração personalizadas. Saiba como obter e instalar o agente convidado do VMM na documentação do VMM.

  14. Então adicione o Repositório de Software do Microsoft Linux ao gerenciador de pacotes.

  15. Usando o gerenciador de pacotes, instale o pacote lsvmtools que contém o shim do carregador de inicialização de VM blindada do Linux, os componentes de provisionamento e a ferramenta de preparação de disco.

    # Ubuntu 16.04
    sudo apt-get install lsvmtools
    
    # SLES 12 SP2
    sudo zypper install lsvmtools
    
    # RHEL 7.3
    sudo yum install lsvmtools
    
  16. Quando terminar de personalizar o sistema operacional Linux, localize o programa de instalação lsvmprep em seu sistema e execute-o.

    # The path below may change based on the version of lsvmprep installed
    # Run "find /opt -name lsvmprep" to locate the lsvmprep executable
    sudo /opt/lsvmtools-1.0.0-x86-64/lsvmprep
    
  17. Desligue sua VM.

  18. Se você tiver levado pontos de verificação da VM (incluindo pontos de verificação automáticos criados pelo Hyper-V com o Windows 10 Fall Creators Update), exclua-os antes de continuar. Os pontos de verificação criam discos diferentes (.avhdx) que não têm suporte do Assistente de Disco de Modelo.

    Para excluir pontos de verificação, abra o Gerenciador do Hyper-V, selecione sua VM, clique com o botão direito do mouse no ponto de verificação mais alto no painel Pontos de Verificação e clique em Excluir Subárvore de Ponto de Verificação.

    Delete all checkpoints for your template VM in Hyper-V manager

Proteger o disco de modelo

A VM que você preparou na seção anterior está quase pronta para ser usada como um disco de modelo de VM blindada do Linux. A última etapa é executar o disco por meio do Assistente de Disco de Modelo, que assinará digitalmente o estado atual das partições raiz e de inicialização. O hash e a assinatura digital são verificados quando uma VM blindada é provisionada para garantir que nenhuma alteração não autorizada tenha sido feita nas duas partições entre a criação e a implantação do modelo.

Obter um certificado para assinar o disco

Para assinar digitalmente as medidas de disco, você precisará obter um certificado no computador em que executará o Assistente de Disco de Modelo. O certificado deve atender aos seguintes requisitos:

Propriedade Certificate Valor obrigatório
Algoritmo de chave RSA
Tamanho mínimo de chave 2048 bits
Algoritmo de assinatura SHA256 (recomendado)
Uso de chave Assinatura digital

Os detalhes sobre esse certificado serão mostrados aos locatários quando eles criarem seus arquivos de dados de blindagem e estiverem autorizando discos em que confiam. Portanto, é importante obter esse certificado de uma autoridade de certificação mutuamente confiável por você e seus locatários. Em cenários corporativos em que você é o hoster e o locatário, você pode considerar emitir esse certificado da autoridade de certificação corporativa. Proteja esse certificado cuidadosamente, pois qualquer pessoa de posse dele poderá criar discos de modelo confiáveis da mesma forma que o disco autenticado.

Em um ambiente de laboratório de teste, você pode criar um certificado autoassinado com o seguinte comando do PowerShell:

New-SelfSignedCertificate -Subject "CN=Linux Shielded VM Template Disk Signing Certificate"

Processar o disco com o cmdlet Assistente de Disco de Modelo

Copie o disco e o certificado do modelo para um computador que executa o Windows Server, versão 1709, e execute os comandos a seguir para iniciar o processo de assinatura. O VHDX fornecido ao parâmetro -Path será substituído pelo disco de modelo atualizado, portanto, faça uma cópia antes de executar o comando.

Importante

As Ferramentas de Administração de Servidor Remoto disponíveis no Windows Server 2016 ou Windows 10 não podem ser usadas para preparar um disco de modelo de VM blindada do Linux. Use apenas o cmdlet Protect-TemplateDisk disponível no Windows Server, versão 1709 ou as Ferramentas de Administração de Servidor Remoto disponíveis no Windows Server 2019 para preparar um disco de modelo de VM blindada do Linux.

# Replace "THUMBPRINT" with the thumbprint of your template disk signing certificate in the line below
$certificate = Get-Item Cert:\LocalMachine\My\THUMBPRINT

Protect-TemplateDisk -Path 'C:\temp\MyLinuxTemplate.vhdx' -TemplateName 'Ubuntu 16.04' -Version 1.0.0.0 -Certificate $certificate -ProtectedTemplateTargetDiskType PreprocessedLinux

O disco de modelo agora está pronto para ser usado para provisionar VMs blindadas do Linux. Se você estiver usando System Center Virtual Machine Manager para implantar sua VM, agora poderá copiar o VHDX para sua biblioteca do VMM.

Talvez seja bom extrair o catálogo de assinaturas de volume do VHDX. Esse arquivo é usado para fornecer informações sobre o certificado de autenticação, o nome do disco e a versão aos proprietários de VM que desejam usar seu modelo. Eles precisam importar esse arquivo para o Assistente de Arquivo de Dados de Blindagem para autorizar você, o autor do modelo que possui o certificado de assinatura, a criar esse e futuros discos de modelo para eles.

Para extrair o catálogo de assinatura de volume, execute o seguinte comando no PowerShell:

Save-VolumeSignatureCatalog -TemplateDiskPath 'C:\temp\MyLinuxTemplate.vhdx' -VolumeSignatureCatalogPath 'C:\temp\MyLinuxTemplate.vsc'