Posso impedir que o SElinux funcione?

1

Eu suspeito que o SElinux é backdoor e quero impedi-lo de funcionar no meu sistema. Eu quero pará-lo e excluí-lo do sistema também se isso for possível.

Perguntas

  • Como posso excluí-lo sem deixar vestígios?
  • Há precauções que preciso fazer depois de desinstalá-lo?
por user28179 04.12.2013 / 09:50

5 respostas

9

Primeiro, você pode impedir que o SELinux funcione configurando-o incorretamente. Isso não faz nada para desativar qualquer backdoor, no entanto.

Então você pode parar o SELinux de fazer qualquer coisa, configurando-o em tempo de execução. Se você executar setenforce 0 , o SELinux parará de impor restrições de segurança. Ainda está ativo, no entanto. Tudo o que você fez é potencialmente tornar seu sistema menos seguro, removendo as restrições de segurança.

Se você não quiser que o SELinux seja aplicado, você pode desativá-lo no momento da inicialização com o parâmetro de kernel selinux=0 . Desta forma, o SELinux não tomará nenhuma decisão. Você perde qualquer benefício de segurança que possa trazer, é claro. E se houver um backdoor, você não tem como saber que ele ainda não está ativo. O código ainda está presente, afinal.

Ok, você precisa remover o código do kernel. Então, recompile seu kernel, com a opção de configuração CONFIG_SECURITY_SELINUX não definida. Reinicie, e agora o código SELinux não está mais rodando. Vitória?

Ha! Não: como você sabe que o backdoor está no código controlado por essa opção de configuração? Se eu fosse esconder um backdoor, eu me certificaria de que seria parte do código que todo mundo usa.

Se você quiser se livrar de qualquer backdoor que possa ter sido introduzido como parte do SELinux, você precisa voltar a uma versão do kernel que data de antes do SELinux ser introduzido, e avaliar cuidadosamente todos os commits que foram feitos para o kernel desde então e decidir se eles são livres de backdoor. Uma vez feito isso, você terá um sistema sem backdoor. Quero dizer, um kernel livre de backdoor. Quero dizer, um kernel sem esse backdoor específico que você postula.

Psych! Não, o backdoor ainda pode estar lá. E se houvesse um backdoor no kernel que afetasse o compilador, de modo que quando você compilasse o kernel, ele injetaria o backdoor no kernel mesmo que a fonte do backdoor não estivesse presente? Isso seria um backdoor auto-sustentável: compilar com um compilador backdoored ou sob um kernel de backdoor, e o kernel resultante ainda é backdoor. Soa forçado? Você acha que ninguém poderia fazer isso? Desculpe, mas foi concluído. Leia a palestra do Prêmio Turing de Ken Thompson, “Reflexões sobre confiança] .

Ok, ok. Você não pode confiar no software. Então você precisará escrever seu próprio software e seu próprio compilador, e tenha certeza de não usar o compilador ou kernel atual, possivelmente suspeito, para compilar seu próprio sistema sem backdoor. Escrever código de máquina diretamente, eu acho.

Ah, mas cuidado! Um sistema operacional malicioso (ou software mal-intencionado com acesso ao nível do kernel, para esse efeito) poderia ter injetou um backdoor em seu firmware . Então, se você não confia no seu kernel atual, também não pode confiar na sua BIOS.

Não, não, isso não vai. Você precisará criar seu próprio hardware . Boa sorte!

    
por 05.12.2013 / 01:42
3

Desativando vs. Removendo

Eu não acho que você será capaz de remover o SELinux. O melhor que você pode esperar é desativá-lo (o que discuto abaixo nas próximas seções).

Para removê-lo, você tentaria remover o pacote libselinux ; no entanto, tentar fazer isso leva a isso:

$ sudo yum remove libselinux
...
--> Finished Dependency Resolution
Error: Trying to remove "kernel", which is protected
Error: Trying to remove "yum", which is protected

O problema é que o SELinux é uma dependência principal da qual muitos pacotes dependem, por isso é essencialmente impossível removê-lo.

Desabilitando o SELinux

Você pode usar os comandos getenforce e setenforce para ver o modo SELinux atual e alterá-lo.

$ setenforce 
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

Exemplo

$ setenforce 0

$ getenforce 
Disabled

Estes só mudam para a sessão atual. Se você fosse reiniciar, o SELinux voltaria com a reinicialização.

Para tornar as alterações permanentes, você pode editar este arquivo em distros baseadas no Redhat, /etc/sysconfig/selinux .

$ cat /etc/sysconfig/selinux 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

NOTA: O diretório /etc/sysconfig/selinux é, na verdade, um link para este local:

$ pwd
/etc/sysconfig

$ ls -l selinux 
lrwxrwxrwx. 1 root root 17 Dec 18  2010 selinux -> ../selinux/config

SELinux, é um backdoor?

Dificilmente. O SELinux é um produto de segurança que fornece proteção entre aplicativos e arquivos no seu sistema de arquivos. Essa proteção faz uso de contextos que são gravados no sistema de arquivos por meio de atributos estendidos ( xattr ).

Esses atributos podem ser usados para controlar quais aplicativos (processos) podem tocar em quais diretórios e arquivos no disco. Ele também pode controlar a natureza do acesso dos aplicativos a esses locais.

Exemplo

Se você tivesse um diretório, /home/userX , e estivesse executando o servidor web Apache em seu sistema, não há motivo tecnicamente para esse processo exigir acesso aos diretórios /home , portanto, o SELinux poderia proibir esse acesso ao processo para este local específico com base nos contextos (regras) que foram dispostos no disco.

Desinstalando-o?

Eu recomendaria não desinstalá-lo. Se for irritante, você pode colocá-lo em Permissive mode ou Disabled . Muitas vezes, desativo-o em sistemas onde ele fica no caminho, mas é melhor tentar identificar quais são esses acessos e explicitamente permitir, em vez de desativá-lo todos juntos.

Referências

por 04.12.2013 / 10:09
1

Como o SELinux está incluído no seu kernel Linux, desabilitá-lo e desinstalar os programas do usuário não é suficiente. Você também precisa reconstruir o kernel para se livrar dele. Mas, em geral, não vejo razão para que haja backdoors no SELinux em particular e não em outros componentes (software ou hardware).

A remoção torna o seu sistema mais vulnerável contra outros ataques. Se você tiver preocupações de segurança e não gostar do SELinux, talvez esteja interessado em outras estruturas de segurança, como, por exemplo, AppAmor ou grsecurity (que parece não estar mais ativamente desenvolvido). Veja por exemplo O que usar endurecer a caixa do Linux? Apparmor, SELinux, grsecurity, SMACK, chroot? .

    
por 04.12.2013 / 10:12
1

I suspect that SElinux is backdoor and I want to stop it from working on my system.

Se você suspeitar que o SElinux é uma porta dos fundos, então você tem um problema mais sério em suas mãos do que apenas desativar sua funcionalidade.

O SElinux é, na verdade, um componente central no próprio Linux; faz parte da árvore "mainline" do upstream, o que significa que foi integrado ao código-fonte principal do Linux nos últimos 10 anos. Se é, na verdade, um backdoor, então é um backdoor que foi colocado lá pelo próprio Linus Torvalds, que pessoalmente aprovou sua inclusão em 2003.

E se, portanto, Torvalds e todos os outros mantenedores de Linux estiverem dispostos a incluir software backdoor no Linux, você não poderá confiar em qualquer código produzido por eles.

Assim, a única maneira de resolver o problema que você propôs é alternar para um sistema operacional alternativo inteiramente, BSD, por exemplo.

    
por 05.12.2013 / 02:08
0

Você também pode desativar o SELinux no momento da inicialização, passando o parâmetro do kernel selinux=0 (veja a configuração do seu gerenciador de inicialização para fazer isso).

Veja o documentação oficial sobre isto.

    
por 05.12.2013 / 00:44