Falha na conexão SSH com máquinas virtuais do Linux do Azure devido à configuração incorreta do SELinux

Aplica-se a: ✔️ VMs do Linux

Observação

O CentOS mencionado neste artigo é uma distribuição Linux e chegará ao fim da vida útil (EOL). Considere seu uso e planeje adequadamente. Para obter mais informações, consulte Diretrizes de fim da vida útil do CentOS.

Este artigo fornece uma solução para um problema em que a conexão SSH (Secure Shell) com uma VM (máquina virtual) do Azure falha devido à configuração incorreta do SELinux.

Tela de fundo

O modelo de segurança do Unix é baseado no Controle de Acesso Discricionário (DAC). O SELinux (Security-Enhanced Linux) implementa o MAC (Controle de Acesso Obrigatório) para Linux usando módulos de kernel e ferramentas de espaço do usuário. O MAC fornece um ambiente mais controlado para acesso a recursos e remove a capacidade do usuário raiz de acessar todos os recursos no sistema operacional (SO) sem restrições. Ele também mitiga vários tipos de riscos de segurança, utilizando o modelo de segurança tradicional do Unix.

Diferentes distribuições incluem o SELinux pronto para uso ou fornecem uma maneira direta de ativar o suporte ao kernel e instalar ferramentas de espaço do usuário. Para obter mais informações, consulte os seguintes artigos do SELinux de alguns dos principais provedores de Linux:

As imagens baseadas em Red Hat no Azure vêm com o SELinux habilitado; outras distribuições não. Quando você usa o SELinux no Ubuntu, há um aviso sobre seu estado não mantido nesta distribuição. O Ubuntu implementa uma solução diferente para MAC, chamada AppArmor.

Pré-requisitos

Verifique se o console serial está habilitado e funcional na VM do Linux.

Sintomas

Uma configuração incorreta do SELinux pode fazer com que o sistema operacional não consiga carregar a política do SELinux, o que impede que o sistema operacional conclua a inicialização.

Verifique o console serial no portal do Azure ou por meio da CLI do Azure. A seguinte mensagem aparece perto do final da saída:

Captura de tela que mostra o erro 'Falha ao carregar a política SELinux' no log do console serial.

A configuração do SELinux é gerenciada pelo administrador do sistema. O administrador do sistema pode resolver esse problema usando um dos métodos a seguir.

Solução 1: Inicie a VM com o SELinux desativado usando o console serial

  1. Dispare a reinicialização da VM (Hard) no console serial do Azure.

  2. Interrompa sua VM no menu GRUB com a tecla ESC .

  3. Selecione E para modificar a primeira entrada do kernel no menu GRUB.

  4. Vá para a linha e adicione selinux=0 para desativar o linux16 SELinux temporariamente.

    GIF animado que mostra o processo de interrupção da inicialização no nível do menu GRUB para desativar o SELinux temporariamente.

  5. Valide e corrija a configuração do SELinux no /etc/selinux/config.

    Por exemplo, um erro comum é definir a SELINUXTYPE chave para um dos valores usados para a SELINUX chave. Veja a captura de tela a seguir como exemplo:

    Captura de tela que mostra que a chave SELINUXTYPE está definida incorretamente como desabilitada.

    Observe a última linha, SELINUXTYPE=disabled. A SELINUXTYPE chave deve ser definida como targeted, minimum, ou mls em vez de disabled. A captura de tela a seguir mostra a configuração correta:

    Captura de tela que mostra a configuração correta de /etc/selinux/config.

Solução 2: Reparar a configuração incorreta do SELinux usando uma VM de resgate

Dica

Se você tiver um backup recente da VM, restaure a VM do backup para corrigir o problema de configuração.

  1. Caso o console serial do Azure não funcione na VM específica ou não seja uma opção em sua assinatura, solucione esse problema usando uma VM de resgate/reparo. Use vm repair comandos para criar uma VM de reparo que tenha uma cópia do disco do sistema operacional da VM afetada anexada. Monte a cópia dos sistemas de arquivos do sistema operacional na VM de reparo usando chroot.

    Observação

    Como alternativa, você pode criar uma VM de resgate manualmente usando o portal do Azure. Para obter mais informações, confira Solucionar problemas de uma VM do Linux anexando o disco do sistema operacional a uma VM de recuperação usando o portal do Azure.

  2. Valide e corrija a configuração do SELinux no /etc/selinux/config. Para fazer isso, siga a etapa 5 na Solução 1: Iniciar a VM com o SELinux desativado no console serial.

  3. Depois que a configuração do SELinux for corrigida, execute as seguintes ações:

    1. Saia do chroot.
    2. Desmonte a cópia dos sistemas de arquivos da VM de resgate/reparo.
    3. Execute o az vm repair restore comando para trocar o disco do sistema operacional reparado pelo disco do sistema operacional original da VM. Para obter mais informações, consulte a etapa 5 em Reparar uma VM do Linux usando os comandos de reparo da Máquina Virtual do Azure.
    4. Valide se a VM é capaz de inicializar dando uma olhada no console serial do Azure ou tentando se conectar à VM.

Próximas etapas

Caso o problema não seja devido à configuração incorreta do SELinux, consulte Solucionar problemas de erros de inicialização de Máquinas Virtuais Linux do Azure para obter mais opções de solução de problemas.

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.