SELinux corrompido? Agora não é possível inicializar o CentOS 7 com o SELinux habilitado

SELinux corrompido? Agora não é possível inicializar o CentOS 7 com o SELinux habilitado

Recentemente, tivemos uma falha de energia e uma falha simultânea do gerador de backup, grave o suficiente para exigir o desligamento seguro de todos os servidores enquanto seus UPSs estavam descarregando.

Ao trazer de volta um servidor CentOS 7.4.1708 (sua primeira "reinicialização" em meses, mas está atualizado em termos de atualizações do CentOS), bati em uma parede de tijolos que me impedia de inicializá-lo com o SELinux habilitado. Pesquisei extensivamente, mas não consigo encontrar evidências de que alguém tenha passado por isso, nem sei o que tentar a seguir. Espero que alguém aqui possa oferecer algumas idéias.

Aqui está a linha do tempo:

  1. Inicializado
  2. A inicialização falhou devido a vários serviços que não foram inicializados:

    FAILED Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    FAILED Failed to start Authorization Manager.
    See 'systemctl status polkit.service' for details.
    DEPEND Dependency failed for Dynamic System Tuning Daemon.
    
  3. Solicitado poresseEu reiniciei com selinux=0o grub

  4. Isso funciona e faz o sistema funcionar, mas com o SELinux desabilitado, o que não é viável para nós como outra coisa senão uma solução temporária

  5. Seguidoconselhos encontrados on-line:

    sudo yum reinstall selinux-policy-targeted
    
  6. Reiniciado

  7. A inicialização falhou devido a:

    Failed to load SELinux policy, freezing
    
  8. Reinicializado com selinux=0o grub novamente

  9. Encontradomais conselhosassim realizado:

    sudo yum reinstall selinux-policy-targeted
    sudo touch /.autorelabel
    

    e definir permissivo em/etc/selinux/config

  10. Reiniciado

  11. Poderia ver o seguinte banner:

    Warning -- SELinux targeted policy relabel is required.
    Relabeling could take a very long time, depending on file
    system size and speed of hard drives.
    

    mas em vez de realmente realizar a nova rotulagem, o sistema se reinicializou imediatamente – rápido demais para ver qualquer outra saída

  12. A inicialização falhou novamente com o erro original.

    Então, ugh, estamos de volta aqui novamente. E posso ver que isso /.autorelabelainda existe, sugerindo que a reetiquetagem não aconteceu. É surpreendente para mim que voltemos à estaca zero com os erros.

    Lembre-se também de que o SELinux ainda está em modo permissivo, não obrigatório.

O resultado final é que não consigo ativar o SELinux no modo permissivo ou de imposição, o que não é bom.

Como devo proceder?

Responder1

dr:Tudo se resumiu a um valor inválido para SELINUXTYPE.

Certifique-se SELINUXTYPEde que possui um valor válido e, em seguida, execute a nova rotulagem, se necessário (por exemplo, se você inicializou com o SELinux desligado durante o diagnóstico), reinicie e abra o champanhe.


Por alguma razão, e em algum momento, /etc/selinux/configadquiriu a configuração SELINUXTYPE=permissive.

Esta não é uma opção válida para esse parâmetro e parece fazer com que o valor retorne ao valor "padrão", com base no motivo listado para a falha do Dbus, do Login Service e do Authorization Manager:

Failed to open "/etc/selinux/default/contexts/dbus_contexts": No such file or directory

Isso é problemático porque não há selinux-policy-defaultpacote no CentOS 7 (no Debian, por exemplo, foi removido deliberadamente em Jessieentão imagino que o mesmo seja verdade aqui).

Eu suspeito que é também por isso que as tentativas de renomear o sistema de arquivos usando restorecon(do modo de usuário único e de um shell alcançado por init=/sbin/sh) resultaram em saídas desconcertantes "Nenhum arquivo ou diretório" e getenforceainda mostrariam "Desativado" sem motivo evidente .

Para mudar para as selinux-policy-targetedcoisas queéinstalado, corrigi a configuração SELINUXTYPE=targeted(como acredito que deveria ter sido o tempo todo) e, em seguida, reiniciei novamente com enforcing=0 autorelabel=1.

A reetiquetagem então ocorreu. Depois disso, o sistema inicializou normalmente.

Responder2

Você deve ser capaz de renomear o sistema de arquivos com:

# restorecon -rv /

Não tenho 100% de certeza se isso funciona no modo Desativado, talvez seja necessário estar em Permissivo/Aplicativo.

Você pode inicializar com o selinux habilitado e init=/bin/sh?

Responder3

Você deveria ter inicializado no modo de recuperação, em seguida, root no terminal shell e colocado desativado = 1, em seguida, retomar sem reinicializar e desativá-lo no arquivo de configuração ... Em seguida, desinstale o selinux e reinicie

Responder4

Às vezes, o mesmo problema pode ser encontrado devido à política do SELinux, mesmo que o SELinuxtype esteja configurado corretamente. E na tela de inicialização aparece a seguinte linha:
Failed to load SELinux policy, freezing
Para resolver este problema como outra solução alternativa, você pode definir o SELinux para permissiveo modo primeiro
e depois reiniciar a máquina, e você verá a política de geração do SELinux na tela de reinicialização. Depois disso, você pode configurá-lo para o modo de aplicação novamente sem problemas.

Antes de resolver o problema, você pode verificar o pacote de desenvolvimento de políticas.
sudo yum install policycoreutils-devel
E talvez você receba um erro ao tentar instalá-lo. Isso ocorre principalmente por causa de pacotes de conflito e ainda aparece até mesmo para o Red Hat 8

informação relacionada