UNIVERSIDADE ESTÁCIO DE SÁ PROGRAMA DE PÓS-GRADUAÇÃO EM SEGURANÇA DA INFORMAÇÃO RODRIGO CÉSAR COELHO DE OLIVEIRA ASSIS SELINUX: do conceito à prática JOÃO PESSOA - PB 2015 RODRIGO CÉSAR COELHO DE OLIVEIRA ASSIS SELINUX: do conceito à prática Estudo dirigido apresentado ao Curso de PósGraduação em Segurança da Informação da Universidade Estácio de SÁ, como trabalho para a obtenção de nota da cadeira de Segurança em Linux. JOÃO PESSOA – PB 2015 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 se 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 SUMÁRIO 1 INTRODUÇÃO 2 OBJETIVOS 3 SELINUX 3.1 MODOS DO SELINUX 3.2 POLÍTICAS DO SELINUX 4 AMBIENTE DE ESTUDO 4.1 CONFIGURAÇÃO DO AMBIENTE 7 CONCLUSÃO REFERÊNCIAS 1 INTRODUÇÃO Este estudo dirigido foi desenvolvido para fins de conclusão da cadeira de Segurança em Linux, 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. 2 OBJETIVOS O objetivo principal deste trabalho é realizar um estudo de caso feito em um ambiente virtual, relacionado à segurança do sistema operacional tendo como base o framework SELinux, apresentando através de print’s screen’s a implementação da ferramenta de gerenciamento de chamados, chamada GLPI, juntamente com o comparativo dos modos do SELinux, exibindo o comportamento quando o SELinux estiver ativo e inativo. 3 SELinux O SELinux é um sistema de controle de acesso obrigatório construído sobre a interface LSM (Linux Security Modules) do Linux, no qual o kernel consulta esse framework antes de cada chamada do sistema para saber se o processo está autorizado a fazer a operação dada, que é verificado através de um conjunto de regras, conhecidas como “política”. Esse framework vem instalado por padrão em algumas distribuições, como RedHat, CentOS, e por vir habilitado muitos administradores de sistemas, até mesmo sem conhecer direito seu funcionamento, acabam desabilitando-o, pois encontram alguns problemas relacionados à configuração de muitos serviços que deixavam de funcionar ou apresentavam comportamentos inesperados por não conseguirem acessar determinados arquivos ou recursos do sistema, devido à ação do SELinux. Será visto a seguir, os modos do SELinux juntamente com os tipos de políticas existentes, apresentando um breve conceito. 3.1 MODOS DO SELinux Existem três modos de operação do SELinux, como pode ser visto abaixo: - Disabled: é o modo em que o SELinux fica em estado inativo, ou seja, as regras e os logs estão totalmente desativados; - Enforcing: é o modo ativo do SELinux, no qual bloqueia tudo por padrão e registra nos logs as ocorrências de bloqueio; - Permissive: é o modo meio termo, ou seja, nesse modo o SELinux está ativo, porém, só acontece o registro dos bloqueios em logs, não efetuando os bloqueios. Em um breve resumo, o SELinux vem com o modo “Enforcing” (reforçado) ativado por padrão que faz com que as regras realmente sejam aplicadas. Alterando a configuração para "Permissivo" o framework passa apenas a gerar um log das operações que seriam bloqueadas, mas sem realmente bloquear tais operações. A diferença entre o Permissive e o Disabled é que no segundo ele realmente deixa de verificar as operações, ou seja, não gera log e muito menos executa os bloqueios. 3.2 POLÍTICAS DO SELinux As políticas do SELinux consistem nos tipos de controles para seu funcionamento. Abaixo segue a descrição de suas políticas: - Targeted: é a política padrão atual e é a forma mais simples de executar o SELinux, no qual aplica suas regras específicas para serviços e processos do sistema operacional. - Strict: é a política mais segura, porém a mais complexa pois exige que para cada tipo de acesso de cada processo para cada arquivo tenha ao menos uma regra definida nessa política, senão o acesso será negado. - MLS: segurança muti level, ou seja, proteção de segurança multi nível. Para solucionar o problema, muitos administradores de sistema utilizam a política “targeted” (modo direcionado) do SELinux, pois elaboram configurações específicas, que aplicam as políticas a apenas alguns serviços e aplicativos específicos do seu sistema. 4 AMBIENTE DE ESTUDO Neste capítulo, será feito uma breve descrição do ambiente de estudo utilizado juntamente com os print’s screen’s das configurações do SELinux. 4.1 CONFIGURAÇÃO DO AMBIENTE O ambiente de estudo utilizado foi realizado em uma máquina virtual na ferramenta VMware. A seguir, é exibido uma tabela com as configurações do ambiente. Em seguida, serão apresentados os print’s de configuração do servidor virtual. SISTEMA OPERACIONAL CentOS 6.5 MÉMÓRIA 1GB HD 50GB SERVIÇOS INSTALADOS APACHE, PHP, MYSQL, GLPI SERVIDOR WEB APACHE 2.2.15 BANCO DE DADOS MYSQL 5.1.73 LINGUAGEM DE PROGRAMAÇÃO SOFTWARE P/ ANÁLISE PHP 5.6 GLPI v0.9.0 - Visualizando o status do SELinux antes da instalação dos serviços: Na saída do comando “sestatus” pode ser visto o status do SELinux e também algumas informações importantes como o modo de operação e a política que está sendo utilizada. Além desse comando, pode ser acessado através de um editor de texto (ex: vi) o caminho: /etc/selinux/config, para visualizar tais informações, como pode ser verificado na figura a seguir. A seguir pode ser visto alguns comparativos dos modos do SELinux com a instalação do GLPI: - Modo “enforcing”: - Modo “permissive”: - Modo “disabled”: 5 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 NSA, “Security-Enhanced Linux”, Disponível em: https://www.nsa.gov/research/selinux/. Acesso em: 06 de nov. 2015. 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-desativar-selinux/ . 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/pt-BR/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/SELinux-Seguranca-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/E3SI-21.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/LM45_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. Acesso 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%20Augusto%20Murari% 20Cardozo%20-%20Artigo.pdf . Acesso em: 15 de nov. 2015.