Liberando acessos ao ldconfig com SELinux enforced

Publicado por Davidson Rodrigues Paulo em 21/09/2007

[ Hits: 10.506 ]

Blog: http://davidsonpaulo.com/

 


Liberando acessos ao ldconfig com SELinux enforced



O SELinux provê ao Linux uma arquitetura de controle de acesso mandatório robusta e flexível na maioria dos subsistemas do kernel.

Traduzindo de forma bem simplista, o SELinux é para o Linux o que um firewall é para uma rede. Da memsa forma que o firewall controla o que sai e o que entra em uma rede, o SELinux controla o que cada processo pode fazer dentro do sistema operacional.

Na prática, o SELinux pode fazer coisas como, por exemplo, impedir que até mesmo o usuário root ou determinado processo do sistema possa excluir, modificar ou até mesmo visualizar determinado arquivo ou diretório, e não preciso dizer que isso é um recurso extraordinário de segurança.

No Fedora e nas distribuições derivadas dele (como Red Hat e CentOS) o SELinux é habilitado por padrão utilizando o modo reforçado (enforced). Esse modo, extremamente restritivo, oferece um alto nível de segurança ao sistema e é altamente recomendado para servidores corporativos ou estações de trabalho em que se deseje diminuir as chances de desastre por falha humana. Para aprender a usar a SELinux, é util utilizar o modo permissivo (permissive), onde a SELinux fica inativa, porém emitindo alertas como se estivesse atuando.

Ao habilitar o nível reforçado no SELinux, alguns acessos que não deveriam ser negados o serão, impedindo que alguns processos sejam executados corretamente. Um exemplo é o ldconfig, que cria os links e o cache das bibliotecas do sistema e precisa ser executado sempre que uma nova biblioteca é adicionada ou removida ao sistema. Com o SELinux habilitado e no modo reforçado, o acesso a qualquer biblioteca que não tenha sido instalada a partir de um RPM oficial será negado ao ldconfig e a outros processos.

Para resolver o problema, primeiro excluímos todos os logs do utilitário audit:

# rm -f /var/log/audit/*

Em seguida, executamos o ldconfig, para gerar as mensagens de erro do SELinux:

# ldconfig

Agora, utilizaremos o utilitário audit2allow, que transforma mensagens de erro do audit em regras permissivas do SELinux:

# audit2allow -M local < /var/log/audit/audit.log

Será gerado um arquivo local.pp com as regras para o SELinux, que devemos carregar com o comando:

# semodule -i local.pp

Se tudo tiver sido executado corretamente, uma nova execução do ldconfig ocorrerá sem erros.

Usando o utilitário de solução de problemas SELinux (Sistema / Administração / Solução de Problemas SELinux) é possível saber como resolver boa parte dos seus problemas. Isso porque, para cada erro acusado, é mostrada uma solução em "Allowing Access". Através dessa sessão foi possível para mim resolver os problemas de acesso a algumas bibliotecas do VirtualBox, que estavam impedindo que ele fosse executado.


Outras dicas deste autor

Usando variáveis para alterar arquivos com sed, *grep e outros

Instalando fontes do Android no Slackware/Zenwalk

Como habilitar o teclado ABNT2 no Vyatta

Montando partições remotas do SAMBA no boot

Removendo pacotes não-essenciais no Fedora

Leitura recomendada

Configurando o X no Debian (parte gráfica)

Problema: notebook hiberna ou desliga quando fonte é desconectada

SSH: Como resolver problema de demora para digitar usuário e senha

Definindo usuário para o cliente SMB

Configuração do X no notebook libretto

  

Comentários
[1] Comentário enviado por removido em 12/12/2007 - 10:27h

Davidson, tenho muito a agradecer a você por esse seu artigo.

Graças a ele não precisei descontinuar um importante projeto por achar que minha distribuição apresentava um problema no ldconfig.

É isso ai.

Viva o linux!!!

[2] Comentário enviado por davidsonpaulo em 12/12/2007 - 10:34h

Olá, Thiago,

Fico feliz por saber que minha dica foi útil. Fiquei curioso em saber qual é o seu projeto.

Um abraço.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts