II. SELinux

Propaganda
SELinux
Do conceito à prática
Rodrigo César Coelho de Oliveira Assis
Programa de Pós-Graduação em Segurança da Informação – Universidade Estácio de Sá
João Pessoa, Brasil
[email protected]
Resumo—Com o aumento da “facilidade” de possíveis
ataques potenciais nos sistemas, foi necessário para manter a
segurança da informação, o conhecimento mais profundo e
específico em relação a todo o processo em que estes sistemas
estão submetidos, não se limitando apenas ao emprego das
ferramentas de segurança voltadas para os ativos de rede.
Baseado no aumento da segurança do sistema contra ameaças
externas, tem-se uma medida de segurança que s constitui
basicamente de controles e políticas, que é o caso do SELinux,
visando a proteção das informações e obtendo controle do
fluxo de dados de qualquer alteração desta informação por
pessoas não autorizadas.
Palavras-chave—segurança, redes, servidores, software Livre.
Abstract— With increasing complexity in the network
environment, followed by the "ease" of possible potential attacks on
systems, it was necessary to maintain the security of information,
deeper insight and specific in relation to the process in which these
systems are submitted, not limited only to the use of security tools
focused on network assets. Based on increased system security
against external threats, there is a safety measure that's basically
constitutes controls and policies, which is the case of SELinux,
aimed at protecting information and getting data flow control any
changes in this information by unauthorized persons.
Keywords—security, networks, servers, software open source
I. INTRODUÇÃO
Este estudo dirigido foi desenvolvido para fins de
conclusão da cadeira de Segurança em Linux, tendo como
objetivo dar uma visão sobre o SELinux, relatando seus
conceitos, objetivos, características, benefícios, sua arquitetura
e seu funcionamento, seguido de uma abordagem prática em
um servidor virtual para realizar testes comparando o Centos
6.5 com o SELinux habilitado e desabilitado referente à
utilização da ferramenta GLPI.
II. SELINUX
A. Conceitos
Security-Enhanced Linux (SELinux) é conhecido por ser um
framework que visa reforçar a segurança do sistema aplicando
um conjunto de diretivas rígidas de segurança, ou seja, é
considerado uma “ferramenta” padrão incorporada no kernel
do Linux, com a finalidade de ser bem útil para a proteção do
sistema. Segundo Referência [1] o “Security-Enhanced Linux”
(SELinux) é um conjunto de patches ligados ao kernel Linux
que somados a alguns utilitários têm a função de incorporar
uma forte e flexível arquitetura de controle de acesso
mandatório na maioria dos subsistemas do kernel
B. Objetivos
O SELinux tem como objetivo principal mitigar ainda
mais os riscos de ataques e vulnerabilidades do sistema
operacional, pois possui uma política de segurança mais
rígida. Esse framework não irá substituir os mecanismos de
segurança e sim integrar-se a eles aprimorando-os.
Alguns outros objetivos vistos foi o isolamento das
aplicações e o controle do fluxo de informações, provendo
uma política de segurança sobre todos os processos e objetos
do sistema baseando suas decisões em contextos de segurança
no qual possui informações relevantes à segurança do sistema.
C. Características
O SELinux tem como uma das principais características
bloquear tudo por padrão. Referência [5] cita que o kernel
consulta o SELinux antes de cada chamada do sistema para
saber se o processo está autorizado a fazer a operação dada.
Com isso, a ideia desse framework é restringir as
permissões, de forma que cada serviço ou aplicativo tenha
permissão para realizar apenas as tarefas a que é destinado,
contando com um dos princípios básicos da segurança da
informação que é a confidencialidade. Isso impede que
serviços vulneráveis sejam usados para obter privilégios
adicionais, como é comum em ataques.
D. DAC X MAC
Antes de ser iniciado a sessão sobre a arquitetura e
funcionamento do SELinux, é necessário citar dois pontos
principais, o DAC (Discretionary Access Control) e o MAC
(Mandatory Access Control). Referência [6] cita que o MAC
possui vantagens de segurança em relação ao DAC, pois
permite que sejam definidas permissões de como os processos
irão interagir com os arquivos, portas, dispositivos e outros
processos, no qual essa interação é feita através de uma
política de segurança definida pelo administrador sobre todos
os processos e objetos. Referência [7] informa que enquanto o
DAC atribui confiança completa para os usuários e nele é
impossível controlar o fluxo de dados, o MAC atribui somente
a confiança no administrador da política, tornando assim a
segurança do sistema mais rígida, e possibilita o controle do
fluxo de dados.
O SELinux é implementado em cima da arquitetura MAC
provendo maior segurança a arquivos, diretórios, processos,
entre outros objetos, através de suas políticas.
E. Arquitetura e Funcionamento
Atualmente pode-se encontrar muitos problemas ao tentar
criar um servidor com o SELinux habilitado, ou seja, quando
esse framework está ativo acaba afetando o sistema, forçando
a execução de ações configuradas (políticas definidas,
conforme citado anteriormente no item D). Muitos sysadmin
(System Administrator), acabam desabilitando o SELinux
apenas pelo simples fato de não conhecerem bem a
ferramenta. Referência [4] apresenta na Fig. 1, a arquitetura do
SELinux, no qual esse módulo carrega as políticas de
segurança da Policy Database (base de dados de políticas)
assim que o sistema operativo inicia. Sempre que existe um
pedido de ação (por exemplo, a leitura, escrita, etc.) sobre um
objeto (um ficheiro, um socket, entre outros) a operação é
interceptada no kernel pelo SELinux.
Se o DAC negar a ação, então o SELinux não executa
nenhuma verificação, sendo esta ação negada. No caso do
DAC permitir a ação, o SELinux verifica as suas políticas
negando ou permitindo a execução de determinada ação em
função destas.
Estas decisões/regras/políticas são armazenadas em cache,
designada de Access Vector Cache (AVC). Por estas regras se
encontrarem numa cache, pode fazer com que o tempo de
verificação destas diminua, permitindo aumentar a segurança
do sistema sem afetar o seu desempenho.
Em um breve resumo significa que, quando uma operação
de um processo está sendo executado, esta é interceptada no
kernel pelo SELinux, conforme dito anteriormente, que se
encarregará de verificar se existe uma liberação para aquele
tipo de operação. No caso se essa operação estiver sido
liberada nas políticas, o processo continua a executar sua
rotina, caso contrário a operação é bloqueada e o processo
recebe uma resposta de erro.
Referência [8] cita como exemplo, o comprometimento de
uma conta de sistema que é associada ao serviço HTTP, no
qual o SELinux através de suas políticas definidas, irá limitar
este comprometimento apenas ao serviço HTTP,
impossibilitando o envolvimento de outros serviços, ou até
mesmo, do próprio sistema operacional.
Fig. 1: Arquitetura do SELinux (Modo de Funcionamento). Referência [4]
F. Benefícios/Vantagens
O real potencial do SELinux está na possibilidade de
definir novas políticas, protegendo os serviços mais
importantes e fazendo com que ele se molde à configuração
usada.
Outros benefícios são as políticas de segurança que são
definidas apenas pelo administrador do sistema. Também
conta com a redução da chance de uma vulnerabilidade escalar
privilégios, permitindo realizar uma espécie de isolamento dos
serviços/processos.
Outra vantagem é o controle do fluxo de dados, já
comentado anteriormente, e também a fortificação da
confidencialidade e integridade, protegendo processos de
entradas falsas.
G. Contextos de Segurança
O SELinux conta com seu principal aliado que são
seus contextos de segurança. Referência [5] cita que os
direitos de um processo dependem desse contexto de
segurança, no qual Referência [8] explica que um contexto
é um valor de dado assumido pelos objetos de uma classe.
Ainda complementa que os contextos da arquitetura DAC
são: Tipo, Dono, Grupo e Outros, enquanto os contextos
da arquitetura MAC mudam de características, conforme:
Usuário, Papel, Tipo e Nível.
Fig. 2: Contexto de Segurança. Próprio autor. Texto Referência [8]
Conforme pode ser visto na Fig. 2, Referência [5] cita
em um breve resumo que o contexto é definido pela identidade
do usuário que iniciou o processo, o papel e o domínio que o
usuário realiza naquele momento, afirmando que os direitos
realmente dependem do domínio, porém as transições entre os
domínios são controladas pelos papéis. Por fim, as transições
possíveis entre os papéis dependem da identidade.
III. TRABALHOS FUTUROS
O trabalho futuro consiste em elaborar uma parte
prática desenvolvida em um ambiente virtual, para analisar e
comparar o comportamento do SELinux habilitado e
desativado, em um servidor de testes, para ser implementado
uma ferramenta de gerenciamento de chamados conhecida
como GLPI. Nessa abordagem, será citado os modos de
operações do SELinux, juntamente com suas políticas. Junto
aos testes, será realizado os print’s de tela para confirmação da
demonstração e das configurações realizadas no servidor
virtual.
IV. CONCLUSÃO
Conclui-se que, além do SELinux ser um software
livre e já implantado no kernel do Linux, é também uma
poderosa ferramenta capaz de auxiliar a segurança do sistema
operacional, através de suas políticas definidas no seu
contexto de segurança, sendo assim viável para uso em
servidores com aplicações comuns, contando com uma
segurança pró-ativa. No entanto, seu uso em redes
corporativas ou em computadores domésticos não é tão
simples, pois uma boa política de segurança, desde sua
criação, refinamento e manutenção, requer muito tempo e
esforço, no qual o dever do administrador é selecionar
cuidadosamente os módulos de políticas de segurança
corretos.
REFERÊNCIAS
[1]
NSA,
“Security-Enhanced
Linux”,
Disponível
em:
https://www.nsa.gov/research/selinux/ . Acesso em: 06 de nov. 2015.
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
R. Benites Gil, “Definição e entendimento básico do SELinux”.
Disponível em: http://segurancadeti.com.br/selinux-introducao/ . Acesso
em: 07 de nov. 2015.
R. Cavalieri, “Servidor CentOS 7 – Como desativar o SELinux”.
Disponível em: http://www.tecdicas.com/servidor-centos-7-desativarselinux/ . Acesso em: 07 de nov. 2015.
A. Leite , and N. Cardoso, “SELinux – Segurança em Sistemas
Informáticos”. Disponível em: http://web.fe.up.pt/~jmcruz/ssi/ssi.1011/
trabs-als/final/G05.T10-selinux-rel.final.pdf .Acesso em: 07 de nov.
2015.
Debian Handbook, “O Manual do Administrador Debia - Introdução ao
SELinux”. Disponível em: https://debian-handbook.info/browse/ptBR/stable/sect.selinux.html. Acesso em: 08 de nov. 2015.
Wikipédia, “SELinux” , Disponível em: https://pt.wikipedia.org/wiki
/SELinux. Acesso em: 08 de nov. 2015.
J. Zucco, “Entendendo o SELinux – Security Enhanced Linux”,
Disponível em: http://jczucco.googlepages.com/selinux.html. Acesso
em: 08 de nov. 2015.
B. R. da Silva , “SELinux – Segurança em Servidores GNU/Linux”,
Disponível
em:
http://www.vivaolinux.com.br/artigo/SELinuxSeguranca-em-Servidores-GNU-Linux. Acesso em: 10 de nov. 2015.
C. Eduardo Morimoto, “Linux, Guia Prático”. Disponível em:
http://www.hardware.com.br/livros/linux/firewall-selinux.html . Acesso
em: 07 de nov. 2015.
E. Ivashko, “Linux Seguro: Parte 1. SELinux – história de seu
desenvolvimento, arquitetura e princípios operacionais.”, Disponível em:
http://www.ibm.com/developerworks/br/library/l-secure-linux-ru/ . .
Acesso em: 12 de nov. 2015.
A. S. de O. Toledo, and F. A. Ferreira, “SELINUX: Como tornar um
servidor
mais
seguro”.
Disponível
em:
http://blog.newtonpaiva.br/pos/wp-content/uploads/2013/02/E3-SI21.pdf . Acesso em: 13 de nov. 2015.
T. Scherf, “Controle de acesso obrigatório com SELinux”, Disponível
em:http://www.linuxnewmedia.com.br/images/uploads/pdf_aberto/LM4
5_pag66-73.pdf . Acessos em: 14 de nov. 2015.
A.
Emanuel,
“SELinux
na
prática”,
Disponível
em:
http://www.vivaolinux.com.br/artigo/SELinux-na-pratica?pagina=1
.
Aceso em: 14 de nov. 2015.
H. A. M. Cardozo, “Reforçando a segurança do Linux com SELinux”,
Disponível
em:
http://www.ppgia.pucpr.br/~jamhour/RSS/TCCRSS09A/Heitor%20Aug
usto%20Murari%20Cardozo%20-%20Artigo.pdf . Acesso em: 15 de
nov. 2015.
Download