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.571 ]

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


Contextos de segurança



Em uma explicação básica, um contexto é um valor de dado assumido pelos objetos de uma classe.

Nome, Idade e Peso, são exemplos de contextos do objeto "Pessoa". Cor, Categoria e Modelo, são possíveis contextos do objeto "Carro". No caso, os contextos da arquitetura DAC são: Tipo, Dono, Grupo e Outros.

Ex.:

# ls –ld /etc

Saída do comando:
drwxr-xr-x


Onde:
  • d = Diretório (Tipo)
  • rwx = Permissão para o dono do arquivo (Dono)
  • r-x = Permissão para o grupo do do arquivo (Grupo)
  • r-x = Permissão para os outros objetos do sistema (Outros)

No caso da arquitetura MAC, os contextos mudam de características, conforme: Usuário, Papel, Tipo e Nível.

Onde:
  • Usuário (user_u) – O campo usuário, indica o nome do usuário do SELinux, por exemplo, o usuário "system_u", indica processos, arquivos de configuração e daemons do sistema.
  • Papel (role_r) – O campo papel, é uma forma de agrupar diferentes permissões a um determinado usuário (uma espécie de grupo).
  • Tipo (type_t) – O campo tipo (também conhecido como domínio), indica qual é permissão primária de determinado objeto do SELinux, essa é a primeira etapa de verificação de permissão do sistema MAC.
  • Nível (s*:c*) – O campo nível, indica em qual categoria determinado objeto se encontra, com relação à segurança. O mesmo utiliza a politica MCS/MLS (Multi-Category Security/ Multi-Level Security).

    Por exemplo, o nível s0:c0 indica um objeto Confidencial para todos os que possuírem o mesmo nível.

Na prática, com o mesmo diretório /etc:

# ls –Zd

Saída do comando:
System_u:object_r:etc_t:s0

Onde:
  • system_u =Usuário SELinux dono do objeto
  • object_r = Papel (ou papel) do SELinux
  • etc_t = Domínio (ou tipo) do SELinux
  • s0 = Nível de segurança do SELinux

Visualizando contextos MAC nos objetos do sistema

Para visualizar todos os processos que estão rodando no sistema, juntamente com os contextos do SELinux, vamos utilizar o comando abaixo:

# ps auxZ

Perceba que apenas adicionando a opção "Z" no comando ps, já é suficiente para visualizarmos os contextos de todos os processos do SELinux. Isto vale para outros comandos também, como por exemplo, o comando ls.

Vamos visualizar o contexto de um arquivo ou diretório qualquer do sistema:

# ls –Z /boot

Saída do comando:
system_u:object_r:boot_t:s0


Isso vale também para o comando id, que nos traz informações de um determinado usuário:

Ex.:

# id –Z

Saída do comando:
unconfined_u: unconfined_r: unconfined_t:s0-s0:c0.c1023ls


Perceba que neste caso, todo o contexto está definido como: unconfined_*

...Isto indica que o SELinux não terá influência alguma no objeto correspondente.

Página anterior     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

Servidor de logs em Debian Linux

Segurança Física (Parte 1)

Proxy reverso com ModSecurity no Debian Etch

Não precisamos de antivírus, eles sim

Sudo 1.8.12 - Parte II - Como sudo funciona

  
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