O que é o SELinux?
O SELinux (Security-Enhanced Linux) é um módulo de segurança que funciona ao nível do kernel do Sistema Operativo, e que providencia mecanismos de políticas de controlo de acesso.
O SELinux usa uma política de controlo de acesso que limita o acesso de programas do utilizador ou mesmo de serviços de sistema a ficheiros de outras aplicações, ou recursos de sistema, como recursos de rede. Desta forma o SELinux previne que uma aplicação maliciosa se propague pelo sistema, fazendo dele um óptimo mecanismo de segurança.
Apesar das vantagens óbvias referidas, muitos SysAdmin e developers desligam o SELinux mal configuram a sua máquina (em distribuições que tragam esta tecnologia, casos do CentOS e do RedHat, duas das distribuições mais usadas no mercado empresarial) — o porquê desta opção?
Configurar o SELinux é um processo complicado que obriga à perda de muito tempo e trabalho para fazer debugging através dos logs. Há inclusive vendedores de software que recomendam desligar o SELinux.
Como configurar o SELinux
Como podemos configurar o SELinux? Podemos usar ferramentas que nos auxiliam nesta tarefa. Nomeadamente com a ferramenta “setroubleshoot” que audita o sistema e traduz o seu relatório para uma linguagem natural (em Inglês). Para além disto esta ferramenta dá-nos ainda a solução para o problema!
Para começar vamos precisar de instalar as ferramentas:
yum install setroubleshoot setools
Com isto passamos a ter à disposição a ferramenta “sealert” que analisa o log criado pelo SELinux e cria um report de todos os problemas encontrados pelo SELinux. Para executar basta chamar a ferramenta dando-lhe o caminho do ficheiro de log, tipicamente em “/var/log/audit/audit.log”.
sealert -a /var/log/audit/audit.log
Isto vai mandar para a nossa consola os vários problemas, acompanhados de uma explicação e de como resolver. Podemos ver um exemplo em baixo:
Como se pode observar é bastante mais fácil de ler este relatório do que auditar os logs em formato bruto, e claro a cereja no topo do bolo é mesmo a ferramenta indicar-nos logo a solução.
Para finalizar gostaria apenas de deixar uma nota. Este processo pode ter várias etapas, por exemplo, no caso em cima em que o SELinux estava a bloquear o httpd (servidor web) de aceder ao porto 8086, correndo a solução, pode não resolver logo o problema. Quando se desbloqueia este porto, pode aparecer outra etapa a ser bloqueada pelo SELinux, assim é preciso correr o passo anterior várias vezes, até não encontrar problemas (relacionados com o que se pretende desbloquear) no SELinux.
Fontes:
[1] https://en.wikipedia.org/wiki/Security-Enhanced_Linux
[2] https://www.serverlab.ca/tutorials/linux/administration-linux/troubleshooting-selinux-centos-red-hat/