Share via


Desbloquear um disco Linux criptografado para reparo offline

Este artigo descreve como desbloquear um disco do sistema operacional habilitado para ADE (Azure Disk Encryption) para reparo offline.

A Criptografia de Disco do Azure pode ser aplicada a VMs (máquinas virtuais linux) endossadas pela Microsoft. Aqui estão alguns requisitos básicos para habilitar a Criptografia de Disco do Azure em VMs linux:

Sintomas

Se o ADE estiver habilitado no disco do sistema operacional, você poderá receber as seguintes mensagens de erro depois de tentar montar o disco em uma VM de reparo:

montagem: tipo fs errado, opção ruim, superbloco ruim em /dev/sda2, página de código ausente ou programa auxiliar ou outro erro

mount: tipo de sistema de arquivos desconhecido 'LVM2_member'

Preparação

Antes de desbloquear o disco do sistema operacional criptografado para reparo offline, conclua as seguintes tarefas:

  1. Confirme se o ADE está habilitado no disco.
  2. Determine se o disco do sistema operacional usa a versão 0 do ADE (criptografia de passe duplo) ou a versão 1 do ADE (criptografia de passe único).
  3. Determine se o disco do sistema operacional é gerenciado ou não gerenciado.
  4. Selecione o método para desbloquear o disco criptografado.

Verifique se o ADE está habilitado no disco

Você pode fazer essa etapa no portal do Azure, PowerShell ou na interface de linha de comando do Azure (CLI do Azure).

Portal do Azure

Exiba a folha Visão geral da VM com falha no portal do Azure. Em Disco, a entrada de criptografia de disco do Azure será exibida como Habilitada ou Não Habilitada, conforme mostrado na captura de tela a seguir.

Captura de tela da folha de visão geral de um V M no portal do Azure mostrando que o A D E está habilitado no disco.

PowerShell

Você pode usar o Get-AzVmDiskEncryptionStatus cmdlet para determinar se o sistema operacional ou os volumes de dados de uma VM são criptografados usando o ADE. A saída de exemplo a seguir indica que a criptografia ADE está habilitada no volume do sistema operacional:

Get-AzVmDiskEncryptionStatus -ResourceGroupName "ResourceGroupName" -VMName "VmName" 

Para obter mais informações sobre o Get-AzureRmDiskEncryptionStatus cmdlet, consulte Get-AzVMDiskEncryptionStatus (Az.Compute).

CLI do Azure

Você pode usar o comando para marcar se o az vm encryption show ADE está habilitado em discos de VM:

az vm encryption show --name MyVM --resource-group MyResourceGroup --query "disks[].encryptionSettings[].enabled"

Para obter mais informações sobre o az vm encryption show comando, consulte az vm encryption show.

Observação

Se o ADE não estiver habilitado no disco, consulte o artigo a seguir para saber como anexar um disco a uma VM de reparo: solucionar problemas de uma VM linux anexando o disco do sistema operacional a uma VM de reparo.

Determine se o disco do sistema operacional usa a versão 0 do ADE (criptografia de passe duplo) ou a versão 1 do ADE (criptografia de passe único)

Você pode identificar a versão do ADE no portal do Azure abrindo as propriedades da VM e selecionando Extensões para abrir a folha Extensões. Na folha Extensões , exiba o número de versão do AzureDiskEncryptionForLinux.

  • Se o número da versão for 0.*, o disco usará criptografia de passe duplo.
  • Se o número da versão for 1.* ou uma versão posterior, o disco usará criptografia de passe único.

Se o disco usar a versão 0 do ADE (criptografia de passe duplo), use o Método 3 para desbloquear o disco.

Determinar se o disco do sistema operacional é gerenciado ou não gerenciado

Se você não souber se o disco do sistema operacional é gerenciado ou não gerenciado, consulte Determinar se o disco do sistema operacional é gerenciado ou não gerenciado.

Se o disco do sistema operacional for um disco não gerenciado, siga as etapas no Método 3 para desbloquear o disco.

Selecione o método para desbloquear o disco criptografado

Escolha um dos seguintes métodos para desbloquear o disco criptografado:

Método 1: desbloquear o disco criptografado automaticamente usando o comando az vm repair

Esse método depende de comandos de reparo de vm az para criar automaticamente uma VM de reparo, anexar o disco do sistema operacional da VM Linux com falha nessa VM de reparo e, em seguida, desbloquear o disco se ele estiver criptografado. Esse método requer o uso de um endereço IP público para a VM de reparo e desbloqueia o disco criptografado independentemente de a chave ADE ser desembrulhada ou encapsulada usando uma KEK (chave de criptografia de chave).

Para reparar a VM usando esse método automatizado, siga as etapas em Reparar uma VM linux usando os comandos de reparo da Máquina Virtual do Azure.

Se sua infraestrutura e política da empresa não permitirem que você atribua um endereço IP público ou se o az vm repair comando não desbloquear o disco, vá para o próximo método.

Método 2: desbloquear o disco criptografado pelo arquivo de chave no volume BEK

Para desbloquear e montar o disco criptografado manualmente, siga estas etapas:

  1. Crie uma nova VM de reparo e anexe o disco criptografado a essa VM durante a criação da VM.

    Você deve anexar o disco criptografado ao criar a VM de reparo. Isso ocorre porque o sistema detecta que o disco anexado é criptografado. Portanto, ele busca a chave ADE do cofre de chaves do Azure e cria um novo volume chamado "BEK VOLUME" para armazenar o arquivo de chave.

  2. Faça logon na VM de reparo e desmonte as partições montadas no disco criptografado.

  3. Identifique o arquivo de chave ADE no volume BEK.

  4. Identifique o arquivo de cabeçalho na partição de inicialização do sistema operacional criptografado.

  5. Desbloqueie o disco criptografado usando o arquivo de chave ADE e o arquivo de cabeçalho.

  6. Monte a partição: LVM, RAW ou não-LVM.

Criar uma VM de reparo

  1. Pegue um instantâneo do disco do sistema operacional criptografado.

  2. Crie um disco a partir do instantâneo. Para o novo disco, escolha a mesma localização e zona de disponibilidade que a da VM de problema que você deseja reparar.

  3. Crie uma VM com base nas seguintes diretrizes:

    • No Azure Marketplace, escolha a mesma imagem para a VM de reparo usada para a VM com falha. (A versão do sistema operacional deve ser a mesma.)
    • Escolha um tamanho que aloca pelo menos 8 GB de memória para a VM.
    • Atribua essa nova VM ao mesmo grupo de recursos, região e configurações de disponibilidade que você usou para o novo disco que você criou na etapa 2.
  4. Na página Discos do assistente Criar uma Máquina Virtual, anexe o novo disco (que você acabou de criar a partir do instantâneo) como um disco de dados.

Importante

Como as configurações de criptografia são detectadas somente durante a criação da VM, certifique-se de anexar o disco ao criar a VM. Isso permite que um volume que contém o arquivo de chave ADE seja adicionado à VM automaticamente.

Desmontar quaisquer partições montadas no disco criptografado

  1. Depois que a VM de reparo for criada, o SSH para sua VM de reparo, faça logon usando as credenciais apropriadas e, em seguida, eleve a conta para raiz:

    sudo -s 
    
  2. Liste os dispositivos anexados usando o comando lsblk . Na saída, você deve ver vários discos anexados. Esses discos incluem o disco ativo do sistema operacional e o disco criptografado. Eles podem aparecer em qualquer ordem.

  3. Identifique o disco criptografado usando as seguintes informações:

    • O disco terá várias partições
    • O disco não listará o diretório raiz ("/") como um ponto de montagem para qualquer uma de suas partições.
    • O disco corresponderá ao tamanho que você observou ao criá-lo a partir do instantâneo.

    No exemplo a seguir, a saída indica que "sdd" é o disco criptografado. Esse é o único disco que tem várias partições e que não lista "/" como um ponto de montagem.

    A imagem sobre o primeiro exemplo

  4. Desmonte todas as partições no disco de dados criptografado que foram montadas no sistema de arquivos. Por exemplo, no exemplo anterior, você teria que desmontar "/boot/efi"* e "/boot".

    umount /boot/efi 
    
    umount /boot 
    

Identificar o arquivo de chave ADE

Você deve ter o arquivo de chave e o arquivo de cabeçalho para desbloquear o disco criptografado. O arquivo de chave é armazenado no volume BEK e o arquivo de cabeçalho está na partição de inicialização do disco do sistema operacional criptografado.

  1. Determine qual partição é o volume BEK:

    lsblk -fs | grep -i bek 
    

    A saída de exemplo a seguir indica que o sdb1 é o volume BEK:

    >sdb1  vfat   BEK VOLUME      04A2-FE67 
    

    Se nenhum volume BEK existir, crie novamente a VM de reparo tendo o disco criptografado anexado. Se o volume BEK ainda não for anexado automaticamente, tente o Método 3 para recuperar o volume BEK.

  2. Crie um diretório chamado "azure_bek_disk" na pasta "/mnt":

    mkdir /mnt/azure_bek_disk 
    
  3. Monte o volume BEK no diretório "/mnt/azure_bek_disk". Por exemplo, se o sdb1 for o volume BEK, insira o seguinte comando:

    mount /dev/sdb1 /mnt/azure_bek_disk 
    
  4. Liste os dispositivos disponíveis novamente:

    lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT  
    

    Nota: Você verá que a partição que você determinou ser o volume BEK agora está montada em "/mnt/azure_bek_disk".

  5. Exibir o conteúdo no diretório "/mnt/azure_bek_disk/":

    ls -l /mnt/azure_bek_disk
    

    Você deve ver os seguintes arquivos na saída (o arquivo de chave do ADE é "LinuxPassPhraseFileName"):

    >total 1 
    
     -rwxr-xr-x 1 root root 148 Aug  4 01:04 CRITICAL_DATA_WARNING_README.txt 
     -r-xr-xr-x 1 root root 172 Aug  4 01:04 LinuxPassPhraseFileName
    

    Você poderá ver vários "LinuxPassPhraseFileName" se mais de um disco estiver anexado à VM criptografada. O "LinuxPassPhraseFileName" será enumerado de acordo com o número de discos na mesma ordem que seus LUNs (Números de Unidade Lógica).

Identificar o arquivo de cabeçalho

A partição de inicialização do disco criptografado contém o arquivo de cabeçalho. Você usará esse arquivo, juntamente com o arquivo de chave "LinuxPassPhraseFileName", para desbloquear o disco criptografado.

  1. Use o seguinte comando para mostrar atributos selecionados dos discos e partições disponíveis:

    lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT
    
  2. No disco criptografado, identifique a partição do sistema operacional (partição raiz). Essa é a maior partição no disco criptografado. Na saída de exemplo anterior, a partição do sistema operacional é "sda4". Essa partição deve ser especificada quando você executa o comando de desbloqueio.

  3. No diretório raiz ("/") da estrutura de arquivos, crie um diretório para o qual montar a partição raiz do disco criptografado. Você usará esse diretório mais tarde, depois que o disco for desbloqueado. Para distingui-lo da partição ativa do sistema operacional da VM de reparo, dê-lhe o nome "investigateroot".

    mkdir /{investigateboot,investigateroot}
    
  4. No disco criptografado, identifique a partição de inicialização, que contém o arquivo de cabeçalho. No disco criptografado, a partição de inicialização é a segunda maior partição que não mostra nenhum valor na coluna LABEL ou PARTLABEL. Na saída de exemplo anterior, a partição de inicialização do disco criptografado é "sda2".

  5. Monte a partição de inicialização que você identificou na etapa 4 no diretório /investigateboot/. No exemplo a seguir, a partição de inicialização do disco criptografado é sda2. No entanto, o local em seu sistema pode ser diferente.

    mount /dev/sda2 /investigateboot/ 
    

    Se a montagem da partição falhar e retornar uma mensagem de erro "tipo fs errado, opção ruim, superbloco incorreto", tente novamente usando o mount -o nouuid comando, como no exemplo a seguir:

    mount -o nouuid /dev/sda2 /investigateboot/ 
    
  6. Liste os arquivos que estão no diretório /investigateboot/. O subdiretório "luks" contém o arquivo de cabeçalho que você deve ter para desbloquear o disco.

  7. Liste os arquivos que estão no diretório /investigateboot/luks/. O arquivo de cabeçalho é chamado de "osluksheader".

    ls -l /investigateboot/luks 
    

Use o arquivo de chave ADE e o arquivo de cabeçalho para desbloquear o disco

  1. Use o cryptsetup luksOpen comando para desbloquear a partição raiz no disco criptografado. Por exemplo, se o caminho para a partição raiz que contém o sistema operacional criptografado for /dev/sda4 e você quiser atribuir o nome "osencrypt" à partição desbloqueada, execute o seguinte comando:

    cryptsetup luksOpen --key-file /mnt/azure_bek_disk/LinuxPassPhraseFileName --header /investigateboot/luks/osluksheader /dev/sda4 osencrypt 
    
  2. Agora que você desbloqueou o disco, desmonte a partição de inicialização do disco criptografado do diretório /investigateboot/:

    umount /investigateboot/ 
    

    Nota: Você terá que montar essa partição em outro diretório mais tarde.

    A próxima etapa é montar a partição que você acabou de desbloquear. O método usado para montar a partição depende da estrutura mapeada do dispositivo (LVM ou não LVM) usada pelo disco.

  3. Liste as informações do dispositivo junto com o tipo de sistema de arquivos:

    lsblk -o NAME,FSTYPE 
    

    Você verá a partição desbloqueada e o nome atribuído a ela (em nosso exemplo, esse nome é "osencrypt"):

Monte a partição desbloqueada e insira o ambiente chroot (somente LVM)

Se os discos usarem a estrutura mapeada do dispositivo LVM, você precisará tomar etapas extras para montar o disco e inserir o ambiente chroot. Para usar a ferramenta chroot junto com o disco criptografado, a partição desbloqueada ("osencrypt") e seus volumes lógicos devem ser reconhecidos como o grupo de volumes chamado rootvg. No entanto, por padrão, a partição do sistema operacional da VM de reparo e seus volumes lógicos já estão atribuídos a um grupo de volumes que tem o nome rootvg. Devemos resolve esse conflito antes que possamos continuar.

  1. Use o pvs comando para exibir as propriedades dos volumes físicos do LVM. Você pode ver mensagens de aviso, como no exemplo a seguir, que indicam que a partição desbloqueada ("/dev/mapper/osencrypt") e outro dispositivo estão usando identificadores universalmente exclusivos duplicados (UUIDs). Como alternativa, você pode ver duas partições atribuídas ao rootvg.

    Observação

    Você deseja que apenas a partição desbloqueada ("osencrypt") seja atribuída ao grupo de volumes rootvg para que você possa acessar seus volumes lógicos por meio do utilitário chroot. Para corrigir esse problema, você importará temporariamente a partição para um grupo de volumes diferente e ativará esse grupo de volumes. Em seguida, você renomeará o grupo de volume raiz atual. Somente depois de inserir o ambiente chroot você renomeará o grupo de volumes do disco criptografado como "rootvg".

Atribuindo a partição desbloqueada (exemplo)

  1. Importe a partição recém-desbloqueada para um novo grupo de volumes. Neste exemplo, estamos nomeando temporariamente o novo grupo de volumes como "rescuemevg". Importe a partição recém-desbloqueada para um novo grupo de volumes. Neste exemplo, estamos nomeando temporariamente o novo grupo de volumes como "rescuemevg".

  2. Ativar o novo grupo de volumes:

    vgimportclone -n rescuemevg /dev/mapper/osencrypt
    vgchange -a y rescuemevg
    
  3. Renomeie o grupo de volumes rootvg antigo. Neste exemplo, usaremos o nome "oldvg".

    vgrename rootvg oldvg 
    
  4. Execute lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT para examinar os dispositivos disponíveis. Agora você deve ver os dois grupos de volume listados pelos nomes atribuídos a eles.

  5. Monte o volume lógico rescuemevg/rootlv no diretório /investigateroot/sem usar as UUIDs duplicadas:

    umount /investigateboot
    mount -o nouuid /dev/rescuemevg/rootlv /investigateroot/ 
    

    Agora, a partição raiz da VM com falha é desbloqueada e montada, e você deve ser capaz de acessar a partição raiz para solucionar problemas. Para obter mais informações, confira Solucionar problemas de inicialização de máquina virtual do Linux devido a erros do sistema de arquivos.

    No entanto, se você quiser usar o utilitário chroot para solução de problemas, continue usando as etapas a seguir.

  6. Monte a partição de inicialização do disco criptografado no diretório /investigateroot/boot/ sem usar as UUIDs duplicadas. (Lembre-se de que a partição de inicialização do disco criptografado é a segunda maior que não recebeu nenhum rótulo de partição.) Em nosso exemplo atual, a partição de inicialização do disco criptografado é sda2.

    mount -o nouuid /dev/sda2 /investigateroot/boot
    
  7. Monte a partição do sistema EFI do disco criptografado no diretório /investigateroot/boot/efi. Você pode identificar essa partição pelo rótulo. Em nosso exemplo atual, a partição do sistema EFI é sda1.

    mount /dev/sda1 /investigateroot/boot/efi
    
  8. Monte os volumes lógicos não desmontados restantes no grupo de volumes do disco criptografado para subdiretórios de "/investigateroot/":

    mount -o nouuid /dev/mapper/rescuemevg-varlv /investigateroot/var
    mount -o nouuid /dev/mapper/rescuemevg-homelv /investigateroot/home
    mount -o nouuid /dev/mapper/rescuemevg-usrlv /investigateroot/usr
    mount -o nouuid /dev/mapper/rescuemevg-tmplv /investigateroot/tmp
    mount -o nouuid /dev/mapper/rescuemevg-optlv /investigateroot/opt
    
  9. Altere o diretório ativo para a partição raiz montada no disco criptografado:

    cd /investigateroot
    
  10. Insira os seguintes comandos para preparar o ambiente chroot:

    mount -t proc proc proc
    mount -t sysfs sys sys/
    mount -o bind /dev dev/
    mount -o bind /dev/pts dev/pts/
    mount -o bind /run run/
    
  11. Insira o ambiente chroot:

    chroot /investigateroot/
    
  12. Renomeie o grupo de volume rescuemevg como "rootvg" para evitar conflitos ou possíveis problemas com grub e initramfs. Mantenha a mesma convenção de nomenclatura quando você regenera initramfs. Devido às alterações no nome da vg, trabalhe na VM de resgate. Ele não será mais útil se você reiniciá-lo. A VM de resgate deve ser considerada uma VM temporária.

    vgrename rescuemevg rootvg
    
  13. Solucionar problemas no ambiente chroot. Por exemplo, você pode ler logs ou executar um script. Para obter mais informações, consulte Executar correções no ambiente chroot.

  14. Saia do chroot e troque o disco do sistema operacional.

Monte o disco desbloqueado e insira o ambiente chroot (RAW/non-LVM)

  1. No diretório raiz ("/") da estrutura de arquivos, crie um diretório no qual montar a partição raiz do disco criptografado. Você usará esse diretório mais tarde, depois que o disco for desbloqueado. Para distingui-lo da partição ativa do sistema operacional da VM de reparo, nomeie-a como "investigateroot".

    mkdir /{investigateboot,investigateroot}
    
  2. Monte a partição recém-desbloqueada ("osencrypt") no diretório /investigateroot/:

    mount /dev/mapper/osencrypt /investigateroot/ 
    

    Se a montagem da partição falhar e retornar uma mensagem de erro "tipo fs errado, opção ruim, superbloco incorreto", tente novamente usando o comando de montagem -o nouuid :

    mount -o nouuid /dev/mapper/osencrypt /investigateroot/ 
    
  3. Tente exibir o conteúdo do diretório /investigateroot/para verificar se a partição montada agora está desbloqueada:

    ls /investigateroot/ 
    
  4. Agora que a partição raiz da VM com falha é desbloqueada e montada, você pode acessar a partição raiz para solucionar problemas. Para obter mais informações, confira Solucionar problemas de inicialização de máquina virtual do Linux devido a erros do sistema de arquivos..

    No entanto, se você quiser usar o utilitário chroot para solução de problemas, vá para a próxima etapa.

  5. Use o comando lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT para examinar os dispositivos disponíveis. Identifique a partição de inicialização no disco criptografado como a segunda maior partição que não recebeu nenhum rótulo.

  6. Monte a partição de inicialização no disco criptografado no diretório "/investigateroot/boot/", como no exemplo a seguir:

    mount /dev/sdc2 /investigateroot/boot/ 
    
  7. Altere o diretório ativo para a partição raiz montada no disco criptografado:

    cd /investigateroot 
    
  8. Insira os seguintes comandos para preparar o ambiente chroot:

    mount -t proc proc proc 
    
    mount -t sysfs sys sys/ 
    
    mount -o bind /dev dev/ 
    
    mount -o bind /dev/pts dev/pts/ 
    
    mount -o bind /run run/ 
    
  9. Insira o ambiente chroot:

    chroot /investigateroot/ 
    
  10. Solucionar problemas no ambiente chroot. Você pode ler logs ou executar um script. Para obter mais informações, consulte Executar correções no ambiente chroot.

  11. Saia do chroot e troque o disco do sistema operacional.

Método 3: criptografar novamente o disco para recuperar o arquivo de chave e desbloquear o disco criptografado

  1. Crie a VM de reparo e anexe uma cópia do disco bloqueado a uma VM de reparo:

  2. Depois de anexar o disco criptografado como o disco de dados à VM de reparo, use o KEK (chave Key Vault e Key Encrypted) usado para a VM original para criptografar novamente esse disco de dados. Esse processo gerará e montará automaticamente um volume BEK usando um arquivo de chave BKE na VM de reparo. Você não deve usar a opção EncryptFormatAll porque a extensão do ADE pode criptografar o setor de inicialização no disco de dados.

    • Se a VM original for criptografada pelo BEK encapsulado, execute o comando a seguir.

       az vm encryption enable -g "resource group" --name "VMName" --disk-encryption-keyvault "keyvault"  --key-encryption-key "kek" --volume-type "data"
      
    • Se a VM original for criptografada pelo BEK, execute o seguinte comando:

      az vm encryption enable -g "resource group" --name "VMName" --disk-encryption-keyvault "keyvault"  --volume-type "data"
      

      Para determinar os valores de disk-encryption-keyvault e key-encryption-key, execute o seguinte comando:

      az vm encryption show --name "OriginalVmName" --resource-group "ResourceGroupName"
      

      Na tabela a seguir, localize os valores na saída. Se o valor keyEncryptionKey estiver em branco, sua VM será criptografada pelo BEK.

      Parâmetro Valor na saída exemplo
      disk-encryption-keyvault diskEncryptionKey:id /subscriptions/deb73ff9-0000-0000-0000-0000c7a96d37/resourceGroups/Thomas/providers/Microsoft.KeyVault/vaults/ContosoKeyvault
      chave-criptografia-chave keyEncryptionKey:KeyURI https://ContosoKeyvault.vault.azure.net/keys/mykey/00000000987145a3b79b0ed415fa0000
  3. Execute o seguinte comando para marcar se um novo disco está anexado:

    lsblk -f
    

    Se um novo disco estiver anexado, vá para Identificar o arquivo de chave ADE no volume BEK e continue seguindo as etapas fornecidas para desbloquear o disco.

Próximas etapas

Se você estiver tendo problemas para se conectar à sua VM, consulte Solucionar problemas de conexões SSH com uma VM do Azure.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.