Compartilhar via


Desbloqueio de um disco do Linux criptografado para reparo offline

Aplica-se a: ✔️ VMs linux

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

O Azure Disk Encryption pode ser aplicado a VMs (máquinas virtuais) Linux endossadas pela Microsoft. Aqui estão alguns requisitos básicos para habilitar o Azure Disk Encryption em VMs do 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 ou programa auxiliar ausente ou outro erro

montagem: 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 o ADE versão 0 (criptografia de passagem dupla) ou o ADE versão 1 (criptografia de passagem única).
  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, no PowerShell ou na CLI do Azure (interface de linha de comando do Azure).

Portal do Azure

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

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

PowerShell

Você pode usar o cmdlet para determinar se o sistema operacional ou os volumes de dados de uma VM são criptografados usando o Get-AzVmDiskEncryptionStatus 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 verificar 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 do Linux anexando o disco do sistema operacional a uma VM de reparo.

Determine se o disco do sistema operacional usa o ADE versão 0 (criptografia de passagem dupla) ou o ADE versão 1 (criptografia de passagem única)

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 da versão de AzureDiskEncryptionForLinux.

  • Se o número da versão for 0.*, o disco usa criptografia de passagem dupla.
  • Se o número da versão for 1.* ou uma versão posterior, o disco usará criptografia de passagem única.

Se o disco usar o ADE versão 0 (criptografia de passagem dupla), 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:

  • Se o disco for gerenciado e criptografado usando o ADE versão 1 e sua infraestrutura e a política da empresa permitirem que você atribua um endereço IP público a uma VM de reparo, use o Método 1: desbloquear o disco criptografado automaticamente usando o comando az vm repair.
  • Se o disco for gerenciado e criptografado usando o ADE versão 1, mas a política da empresa ou de infraestrutura impedir que você atribua um endereço IP público a uma VM de reparo, use o Método 2: desbloquear o disco criptografado pelo arquivo de chave no volume BEK. Outro motivo para escolher esse método é se você não tiver as permissões para criar um grupo de recursos no Azure.
  • Se um desses métodos falhar ou se o disco não for gerenciado ou criptografado usando o ADE versão 0 (criptografia de passagem dupla), siga as etapas no Método 3 para desbloquear o disco.

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

Esse método depende de comandos az vm repair para criar automaticamente uma VM de reparo, anexar o disco do sistema operacional da VM Linux com falha a essa 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 desencapsulada ou encapsulada usando uma chave de criptografia de chave (KEK).

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

Se a infraestrutura e a 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: Desbloqueie 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 está criptografado. Portanto, ele busca a chave ADE do cofre de chaves do Azure e, em seguida, cria um novo volume chamado "BEK VOLUME" para armazenar o arquivo de chave.

  2. Faça logon na VM de reparo e desmonte todas 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. Faça um instantâneo do disco criptografado do sistema operacional.

  2. Crie um disco a partir do instantâneo. Para o novo disco, escolha o mesmo local e zona de disponibilidade da VM com 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 que foi usada para a VM com falha. (A versão do sistema operacional deve ser a mesma.)
    • Escolha um tamanho que aloque 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 criado 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 apenas 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.

Desmonte todas as partições montadas no disco criptografado

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

    sudo -s 
    
  2. Liste os dispositivos conectados usando o comando lsblk . Na saída, você deve ver vários discos anexados. Esses discos incluem o disco do sistema operacional ativo 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 nenhuma de suas partições.
    • O disco corresponderá ao tamanho que você anotou quando o criou a partir do instantâneo.

    No exemplo a seguir, a saída indica que "sdd" é o disco criptografado. Este é 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 criptografados 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 criptografado do sistema operacional.

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

    lsblk -fs | grep -i bek 
    

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

    >sdb1  vfat   BEK VOLUME      04A2-FE67 
    

    Se não houver nenhum volume BEK, recrie a VM de reparo com 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 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  
    

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

  5. Visualize 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 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 os 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). Esta é a maior partição no disco criptografado. Na saída do exemplo anterior, a partição do sistema operacional é "sda4". Essa partição deve ser especificada quando você executa o comando unlock.

  3. No diretório raiz ("/") da estrutura do arquivo, 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, dê a ele 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 do 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, a localização 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 incorreta, superbloco ruim", 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 é denominado "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 esta partição em outro diretório posteriormente.

    O próximo passo é montar a partição que você acabou de desbloquear. O método usado para montar a partição depende da estrutura do mapeador de dispositivos (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 que você atribuiu a ela (em nosso exemplo, esse nome é "osencrypt"):

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

Se os discos usarem a estrutura do mapeador de dispositivos LVM, você precisará executar etapas extras para montar o disco e entrar no 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. Temos de resolver este conflito antes de podermos continuar.

  1. Use o pvs comando para exibir as propriedades dos volumes físicos 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 UUIDs (identificadores universalmente exclusivos) duplicados. Como alternativa, você pode ver duas partições atribuídas a 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 volumes rootvg atual. Somente depois de entrar no 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 "rescuemevg". Importe a partição recém-desbloqueada para um novo grupo de volumes. Neste exemplo, estamos nomeando temporariamente o novo grupo de volumes "rescuemevg".

  2. Ative o novo grupo de volumes:

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

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

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

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

    Agora, a partição raiz da VM com falha está desbloqueada e montada, e você deve ser capaz de acessar a partição raiz para solucionar os problemas. Para obter mais informações, consulte Solucionar problemas de inicialização da máquina virtual 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 os UUIDs duplicados. (Lembre-se de que a partição de inicialização do disco criptografado é a segunda maior que não recebe 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 por seu 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 montados restantes no grupo de volumes do disco criptografado em 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 Active Directory 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. Digite o ambiente chroot:

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

    vgrename rescuemevg rootvg
    
  13. Solucione 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 entre no ambiente chroot (RAW/não-LVM)

  1. No diretório raiz ("/") da estrutura do arquivo, 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-o 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 incorreta, superbloco ruim", tente novamente usando o comando mount -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 está desbloqueada e montada, você pode acessar a partição raiz para solucionar os problemas. Para obter mais informações, consulte Solucionar problemas de inicialização da máquina virtual 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 revisar 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 Active Directory 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. Digite o ambiente chroot:

    chroot /investigateroot/ 
    
  10. Solucione 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 Key Vault e a chave criptografada (KEK) usados 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 ADE pode criptografar o setor de inicialização no disco de dados.

    • Se a VM original for criptografada por 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 por 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 por BEK.

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

    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.