SELinux está corrompido? Agora não é possível inicializar o CentOS 7 com o SELinux ativado

1

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 os no-breaks estavam sendo drenados.

Após trazer um backup do servidor CentOS 7.4.1708 (sua primeira "reinicialização" em meses, mas está atualizado em termos de atualizações do CentOS) eu acertei um muro impedindo-o de inicializá-lo com o SELinux ativado. Eu pesquisei extensivamente, mas não consigo encontrar evidências de que alguém tenha experimentado isso, nem sei o que tentar em seguida. Espero que alguém aqui possa oferecer algumas ideias.

Aqui está a linha do tempo:

  1. Inicializado
  2. Falha na inicialização devido a vários serviços não iniciados:

    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 por isso eu reiniciei com selinux=0 no grub

  4. Isso funciona e coloca o sistema em funcionamento, mas com o SELinux ativado, o que não é viável para nós como algo além de uma solução temporária

  5. Seguidos conselhos encontrados on-line :

    sudo yum reinstall selinux-policy-targeted
    
  6. Rebooted

  7. A inicialização falhou devido a:

    Failed to load SELinux policy, freezing
    
  8. Reinicie com selinux=0 no grub novamente

  9. Encontrado mais conselhos assim executados:

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

    e conjunto permissivo em /etc/selinux/config

  10. Rebooted

  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 executar a nova rotulagem, o sistema foi imediatamente reinicializado - rápido demais para ver qualquer outra saída

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

    Então estamos de volta aqui novamente. E eu posso ver que /.autorelabel ainda existe, sugerindo que a remarcação não aconteceu. É surpreendente para mim que estamos de volta à estaca zero com os erros.

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

O resultado final é que estou preso sem poder habilitar o SELinux no modo permissivo ou obrigatório, o que não é bom.

Como devo proceder?

    
por Lightness Races in Orbit 13.12.2017 / 16:24

2 respostas

1

tl; dr: Tudo se resume a um valor inválido para SELINUXTYPE .

Verifique se SELINUXTYPE tem um valor válido e, em seguida, realize uma nova rotulagem, se necessário (por exemplo, se você inicializou com o SELinux durante o diagnóstico), reinicie e abra o champanhe.

Por algum motivo, e em algum momento, /etc/selinux/config adquiriu a configuração SELINUXTYPE=permissive .

Esta não é uma opção válida para esse parâmetro e parece fazer com que o valor recaia no valor "default", com base na razão listada para o motivo de falha do Dbus, do Serviço de Login e do Gerenciador de Autorização:

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

Isso é problemático porque não há nenhum pacote selinux-policy-default no CentOS 7 ( no Debian, por exemplo, ele foi deliberadamente removido em Jessie então eu imagino que o mesmo é verdade aqui).

Suspeito que também é por isso que as tentativas de reclassificar o sistema de arquivos usando restorecon (do modo de usuário único e de um shell atingido por init=/sbin/sh ) resultaram na desconexão das saídas "Nenhum arquivo ou diretório" e getenforce ainda mostraria "Desativado" sem motivo aparente.

Para alternar para o selinux-policy-targeted stuff que é instalado, fixei a configuração como SELINUXTYPE=targeted (como acredito que deveria ter sido o tempo todo), depois reiniciei novamente com enforcing=0 autorelabel=1 .

A nova rotulação ocorreu então. Depois disso, o sistema inicializou normalmente.

    
por 14.12.2017 / 15:52
1

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

# restorecon -rv /

Não tenho 100% de certeza se isso funciona no modo Desativado, talvez você precise ser Permissivo / Impingente.

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

    
por 13.12.2017 / 16:33