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: 103.952 ]

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


Os comandos Chcon e Restorecon



Diversas vezes, nos deparamos com problemas de permissão de contextos no SELinux, isto acontece frequentemente, ainda mais em serviços que têm uma alta rotatividade de objetos, como File Servers e FTP.

Para resolver este problema, utilizaremos o comando chcon, sua função nada mais é do que alterar contextos em objetos.

Para os nossos testes com o chcon, vamos criar um arquivo denominado "teste.txt" dentro do diretório /etc:

# touch /etc/teste.txt

Verifique os contextos deste arquivo:

# ls -Z /etc/teste.txt

Saída do comando:
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0 /etc/teste.txt


Perceba que o usuário está definido como "unconfined_u". Imagine agora, que precisamos alterar (por algum motivo qualquer) para o usuário "user_u". Vamos utilizar o seguinte comando:

# chcon -u user_u /etc/teste.txt

Onde: -u = user

# ls -Z /etc/teste.txt

Saída do comando:
-rw-r--r--. root root user_u:object_r:etc_t:s0 /etc/teste.txt


Perceba que, agora o arquivo está com o contexto de usuário definido para "user_u".

Caso precisamos (por algum motivo qualquer) alterar o domínio (type) deste objeto, para "tmp_t":

# chcon -t tmp_t /etc/teste.txt

Onde: -t = type

# ls -Z /etc/teste.txt

Saída do comando:
-rw-r--r--. root root user_u:object_r:tmp_t:s0 /etc/teste.txt


Pronto, o arquivo está com seu domínio alterado, assim, todos os objetos que tem acesso ao domínio "tmp_t", terão acesso ao arquivo /etc/teste.txt.

Em um último teste do comando chcon, imaginamos que você queira clonar o contexto de outro objeto?! O chcon também faz isso:

# chcon --reference /var /etc/teste.txt
# ls -Z /etc/teste.txt


Saída do comando:
-rw-r--r--. root root system_u:object_r:var_t:s0 /etc/teste.txt


Obs.: Caso você queira aplicar contextos recursivamente, basta inserir a opção "-R" no comando chcon.

Em muitos casos, queremos deixar o objeto de acordo com as regras do domínio (type) no qual o mesmo está armazenado. Poderíamos utilizar o chcon e copiar todos os contextos, ou utilizar um comando que faz exatamente isso. Este comando é o restorecon, vamos vê-lo em detalhes:

# restorecon -F /etc/teste.txt

Com este comando, o arquivo "teste.txt" herdará todos os contextos do diretório /etc (local onde o mesmo está armazenado). Útil, não?! =)

Os comandos chcon e restorecon, são extremamente úteis e complexos, para um maior detalhamento dos mesmos, leia a Man Page oficial:

# man chcon
# man restorecon


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

Instalação do ClamAV com DazukoFS

Backup/Restore de uma cópia fiel de um HD utilizando o DD

Sudo 1.8.12 - Parte II - Como sudo funciona

Detectando possíveis trojans e lkms em seu servidor

Attik Firewall

  
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:

[email protected]_seguro:~# sestatus
-bash: sestatus: comando não encontrado
[email protected]_seguro:~# find / -iname selinux
/selinux
^C
[email protected]_seguro:~# semodule -l
-bash: semodule: comando não encontrado
[email protected]_seguro:~# cd /selinux
[email protected]_seguro:/selinux# ls
[email protected]_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