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:
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
Dispare a reinicialização da VM (Hard) no console serial do Azure.
Interrompa sua VM no menu GRUB com a tecla ESC .
Selecione E para modificar a primeira entrada do kernel no menu GRUB.
Vá para a linha e adicione
selinux=0
para desativar olinux16
SELinux temporariamente.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 aSELINUX
chave. Veja a seguinte captura de tela como um exemplo:Observe a última linha,
SELINUXTYPE=disabled
. ASELINUXTYPE
chave deve ser definida comotargeted
,minimum
, oumls
em vez dedisabled
. A captura de tela a seguir mostra a configuração correta:
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.
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 comandos de reparo vm para criar uma VM de reparo que tenha uma cópia anexada do disco do sistema operacional da VM afetada. 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.
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.Depois que a configuração do SELinux for corrigida, execute as seguintes ações:
- Saia do chroot.
- Desmonte a cópia dos sistemas de arquivos da VM de resgate/reparo.
- Execute o comando
az vm repair restore
para trocar o disco reparado do sistema operacional pelo disco original do sistema operacional 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. - Valide se a VM pode inicializar examinando o 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.