SELinux - Segurança em Servidores GNU/Linux

Neste artigo demonstrarei um pouco, do conceito e prática, da tão poderosa ferramenta SELinux. Utilizei o CentOS 6 como base para meus testes. Lembrando que é um artigo mínimo, em relação a todas as opções existentes no SELinux.

[ Hits: 108.212 ]

Por: Bruno Rocha da Silva em 13/08/2012 | Blog: http://about.me/brunorochadasilva


O SELinux



O Security-Enhanced Linux - SELinux - foi desenvolvido pela Agência Nacional de Segurança dos EUA (NSA). Logo no início, seu objetivo principal era tornar-se um sistema operacional capaz de fornecer controles avançados de acesso para os órgãos militares dos Estados Unidos.

Porém, com o passar do tempo, a NSA identificou que seria mais lógico aprimorar um sistema de controle de acesso obrigatório, e adicioná-los a um sistema operacional já existente.

A opção pelo GNU/Linux surgiu devida à facilidade e flexibilidade de incorporar tal framework ao Kernel do sistema. Logo depois, sistemas que traziam a plataforma Unix, também usufruíram desta tão poderosa ferramenta.

Altamente implementado e refinado em cima da arquitetura MAC (Mandatory Access Control), provendo maior segurança a arquivos, diretórios, processos, sistema de arquivos, entre outros objetos, através de regras providas pelo SELinux.

Vale ressaltar, que este nível de segurança vai além da arquitetura DAC (Discretionary Access Control) que está associada à permissão de arquivos e ACLs (Access Control List’s) do GNU/Linux, como exemplo, as permissões MAC podem ser aplicadas até ao usuário root, limitando ações do mesmo.

Em um conceito prático, imaginemos que a conta de sistema associada ao serviço HTTP foi comprometida, o SELinux através de regras pré estabelecidas, limita este comprometimento apenas ao serviço HTTP, impossibilitando o comprometimento de outros serviços, ou até mesmo, do próprio sistema operacional.

Depois deste breve conceito, vamos à prática.

Lembrando que mais informações do SELinux, podem ser obtidas na Wiki do Projeto:
Ou, na página oficial da NSA:

Modo de operação do SELinux (conceito e prática)

Basicamente, o SELinux pode operar em três tipos diferentes, que são:
  • Enforcing – As regras do SELinux estão aplicadas, e está sendo gerado Logs de todas as operações do mesmo;
  • Permissive – As regras do SELinux estão desativadas, porém, está gerando Logs de todas as operações do mesmo (útil para Troubleshoot de aplicações);
  • Disabled - As regras e os Logs do SELinux estão completamente desativados.

Obs.: Para nossos testes, estou utilizando o CentOS 6.3.

Visualizando o status do SELinux:

# sestatus

Saída do comando:
SELinux status:            enabled
SELinux mount:            /selinux
Current mode:             enforcing
Mode from config file:   enforcing
Policy version:              24
Policy from config file:   targeted


Caso se queira visualizar apenas o Current mode do SELinux, utilize o comando:

# getenforce

Saída do comando:
Enforcing


Perceba que este comando traz apenas o modo de operação do SELinux.

Para alterarmos o modo de operação temporário do SELinux (apenas Enforcing e Permissive), utilizaremos o seguinte comando:

# setenforce MODO_DE_OPERAÇÂO

Ex.:

# setenforce permissive

Logo, visualize o status do SELinux:

# sestatus
SELinux status:            enabled
SELinux mount:            /selinux
Current mode:             permissive
Mode from config file:   enforcing
Policy version:              24
Policy from config file:   targeted


Obs.: Para desabilitar, ou alterar, o 'current mode' do SELinux por completo, é necessário editar o arquivo de configuração do SELinux (/etc/selinux/config) e alterar a variável:

'SELINUX='.


* Apenas como fonte de informação:
  • Em alguns casos com o SELinux habilitado, podemos nos deparar com serviços que, por algum motivo, não estão funcionando.
  • Alguns administradores, simplesmente desativam o SELinux por completo (Modo Disabled), para resolver o "problema".
  • Porém, para um Troubleshoot eficaz, não é necessário desativar o SELinux por completo comprometendo a segurança do sistema, e sim, deixá-lo em modo "Permissive"; com isso, as regras serão desativadas, porém, todo registro das atividades (logs) continuarão sendo armazenadas.


    Próxima página

Páginas do artigo
   1. O SELinux
   2. Contextos de segurança
   3. O comando Semanage
   4. Os comandos Chcon e Restorecon
   5. Variáveis booleanas
   6. O comando Semodule
   7. Auditoria e logs
Outros artigos deste autor

Atirando o pau no gato com Metasploit

Leitura recomendada

Aspecto de segurança para uma arquitetura web

Análise passiva (parte 2)

Framework OSSIM - Open Source Security Information Management

Instalando Apache, MariaDB e PHP com HTTPS no Arch Linux

Enganando invasores com Honeyperl

  
Comentários
[1] Comentário enviado por removido em 13/08/2012 - 11:40h

Ótimo artigo! Valeu pela contribuição!

[2] Comentário enviado por removido em 13/08/2012 - 23:50h

É mínimo, mas explica bem. Está bem organizada a explicação do funcionamento.
Inclusive fica fácil saber pelo que procurar caso seja necessitado aprofundar-se.
Existe livro de iptables em português, mas de selinux desconheço. Aqui está uma referência valiosa.

Parabéns.

[3] Comentário enviado por cromado em 14/08/2012 - 15:58h

Good.
Ótima referência.

[4] Comentário enviado por danniel-lara em 16/08/2012 - 16:07h

Ótimo artigo , parabéns

[5] Comentário enviado por mantovany em 29/09/2013 - 04:12h

tem como fazer usando debian?

[6] Comentário enviado por premoli em 01/11/2013 - 09:31h

Meus filhin tão sem SELinux:

root@server_seguro:~# sestatus
-bash: sestatus: comando não encontrado
root@server_seguro:~# find / -iname selinux
/selinux
^C
root@server_seguro:~# semodule -l
-bash: semodule: comando não encontrado
root@server_seguro:~# cd /selinux
root@server_seguro:/selinux# ls
root@server_seguro:/selinux# ls -a
. ..

[7] Comentário enviado por smallboy em 23/11/2013 - 15:22h

Eu tenho esse pacote aqui no meu Fedora 19 para ser instalado, no caso SElinux. Não instalei posso instalar ele sem medo algum, o que ele vai me trazer de beneficio e de maleficio no uso do dia a dia. SElinux está disponível no EasyLife para ser instalado.


[8] Comentário enviado por rogeriosilverio em 23/01/2014 - 11:44h

Ótimo Artigo! agora compreendi o SELINUX...Parabéns!

[9] Comentário enviado por fndiaz em 24/11/2014 - 09:26h

Muito bom o artigo!

[10] Comentário enviado por eniorm em 18/02/2017 - 11:55h

Muito bom. Venho do FreeBSD que também possui sua própria implementação MAC, e falta material em português e até mesmo inglês. Gostei muito desse artigo. Espero que os comentários de agradecimento sirvam de incentivo para que o autor possa continuar escrevendo mais sobre SELinux. Att

[11] Comentário enviado por removido em 02/03/2017 - 13:44h

Quando alguém fala em selinux eu lembro de NSA.

http://www.ibm.com/developerworks/br/library/l-secure-linux-ru/
https://caminhandolivre.wordpress.com/2013/01/04/introducao-ao-selinux/


Sera que o selinux vem com códigos maliciosos tipo:


Backdoor
https://pt.wikipedia.org/wiki/Backdoor

keyloggers
https://pt.wikipedia.org/wiki/Keylogger

botnet
https://pt.wikipedia.org/wiki/Botnet

Exploit (Elevação de privilégio)
https://pt.wikipedia.org/wiki/Exploit_%28seguran%C3%A7a_de_computadores%29


Sempre identifique as vulnerabilidades do seu sistema e os riscos.

http://blog.infolink.com.br/analise-de-vulnerabilidades-em-ti/


-----------------------------------------------------
Conhecimento é poder - Thomas Hobbes


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts