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

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


O comando Semodule



Assim, como o próprio sistema GNU/Linux, o SELinux opera em formato modular, ou seja, caso precise adicionar exceções, ou aprimoramento, de regras no SELinux para determinadas aplicações, como por exemplo um MTA, ou um servidor Web, não será necessária a recompilação do próprio sistema SELinux.

E sim, adicionar um código externo (módulo) que indique tal ação. Este módulo pode ser fornecido tanto pela equipe que administra a aplicação, quanto construída pelo próprio administrador do SELinux.

Obs.: Não confunda os módulos do SELinux com as variáveis booleanas. Os módulos são funções acrescentadas nas regras de determinada aplicação, já as variáveis booleanas, são permissões referentes à comunicação entre aplicação e objetos do sistema.

O comando que gerencia tais módulos no SELinux, é o Semodule, e sua utilização é muito simples.

Para listar os módulos do SELinux:

# semodule -l

Onde: -l = list

Saída do comando (resumida):

abrt    1.2.0
accountsd       1.0.0
ada     1.4.0
afs     1.5.3
aiccu   1.0.0
aide    1.5.0
aisexec 1.0.0
amanda  1.12.0
amavis  1.10.3
amtu    1.2.0
apache  2.1.2
apcupsd 1.6.1
arpwatch        1.8.1
asterisk        1.7.1
audioentropy    1.6.0
automount       1.12.


Caso precisemos desabilitar determinado módulo, como por exemplo, o módulo do Asterisk, utilizaremos a seguinte sintaxe do comando semodule:

# semodule -d asterisk

Onde: -d = disable

Agora, vamos listar os módulos, filtrando apenas o módulo do Asterisk:

# semodule -l | grep asterisk

Saída do comando:
asterisk       1.7.1   Disabled


Perceba que este módulo está presente, porém sem qualquer funcionalidade.

Para remover o módulo por completo, utilize o comando:

# semodule -r asterisk

Onde: -r = remove

# semodule -l

Listando novamente os módulos, perceba que o mesmo não se encontra mais na listagem.

- Pergunta: E se eu precisar do módulo do Asterisk novamente, o que eu faço?
- Resposta: Por padrão, os arquivos de módulo do SELinux terminam com extensão ".pp" (Package Policy), portanto, para instalar um módulo no sistema SELinux, é necessário ter tal arquivo em mãos.

Simples, não?! Agora basta achar tal arquivo ".pp" do Asterisk.

Por padrão, o diretório /usr/share/selinux/targeted/ contém diversos arquivos de pacotes de políticas (*.pp).

Estes arquivos estão inclusos no pacote "selinux-policy", e são utilizados para construir o arquivo de política.

Em diversas distribuições, como o CentOS e Red Hat, tais arquivos podem estar compactados, porém, a descompactação não se faz necessária para instalação.

Como estamos trabalhando com módulos defaults, o arquivo ".pp" do Asterisk está armazenado neste diretório, portanto, vamos reativá-lo:

# cd /usr/share/selinux/targeted/ # semodule -i asterisk.pp.bz2



Onde: -i = Install

# semodule -l | grep asterisk

Perceba que não precisamos habilitar o módulo novamente, apenas com a instalação do mesmo, ele já fica em modo enable.

Caso o módulo não fique em modo enable, basta executar o comando semodule com a opção "-e", seguida do nome do módulo, no nosso caso, seria o "asterisk".

Para mais opções do comando semodule, basta executar:

# man semodule

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

Não precisamos de antivírus, eles sim

Quebrando a criptografia RSA

Exploração de Falhas em Servidores FTP

Sistemas e volumes criptografados e escondidos utilizando o TrueCrypt

VPN entre servidores CentOS 6 e Windows 7

  
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