O que é SELinux?
O Security-Enhanced Linux (SELinux) é uma arquitetura de segurança para sistemas Linux® que oferece aos administradores mais controle sobre quem pode acessar o sistema. Ele foi originalmente desenvolvido pela Agência de Segurança Nacional (NSA) dos Estados Unidos como uma série de patches para o kernel do Linux usando módulos de segurança do Linux (LSM).
O SELinux foi lançado para a comunidade open source em 2000 e foi integrado ao upstream do kernel do Linux em 2003.
Como o SELinux funciona?
O SELinux define controles de acesso para as aplicações, processos e arquivos em um sistema. Ele usa políticas de segurança, que são conjuntos de regras que indicam ao SELinux o que pode ou não ser acessado conforme as permissões de uma política.
Quando uma aplicação ou processo solicita o acesso a um objeto, como um arquivo, o SELinux verifica um cache de vetor de acesso (AVC), onde são armazenadas as permissões de cada elemento.
Caso o SELinux não consiga tomar uma decisão sobre o acesso, ele enviará uma solicitação ao servidor de segurança. Esse servidor verifica o contexto de segurança da app ou processo e do arquivo com base no banco de dados de políticas do SELinux. A permissão é concedida ou negada.
No último caso, a mensagem "avc: denied" é exibida em /var/log.messages.
Como configurar o SELinux
Há diversas maneiras de configurar o SELinux para proteger seu sistema. As mais comuns são a política direcionada e a segurança multinível (MLS).
A primeira maneira é a opção padrão, abrangendo diversos processos, tarefas e serviços. A MLS pode ser muito complicada e costuma ser usada apenas por organizações governamentais.
Para saber a melhor opção para seu sistema, observe o arquivo /etc/sysconfig/selinux. Ele tem uma seção que mostra se o SELinux está no modo permissivo, no modo obrigatório ou desativado, além de indicar qual política deve ser carregada.
Rótulos e imposição de tipo do SELinux
No SELinux, a imposição de tipo e os rótulos são conceitos importantes.
O SELinux funciona como um sistema de rotulagem, ou seja, cada arquivo, processo e porta em um sistema têm um rótulo associado. Isso oferece uma forma lógica de agrupar os elementos. O kernel gerencia os rótulos durante a inicialização.
Os rótulos têm o formato usuário:função:tipo:nível, em que nível é opcional. O usuário, a função e o nível são usados em implementações mais avançadas do SELinux, como a MLS. Para a política direcionada, o tipo de rótulo é o mais importante.
O SELinux usa a imposição de tipo para aplicar uma política definida no sistema. Essa parte da política do SELinux define se o tipo de processo em execução pode acessar um arquivo rotulado de determinado tipo.
Como ativar o SELinux
Se o SELinux estiver desativado no seu ambiente, edite /etc/selinux/config e defina SELINUX=permissive. Como o SELinux não estava ativado, não coloque-o no modo obrigatório logo, pois o sistema provavelmente terá rótulos incorretos que podem impedir sua inicialização.
Para forçar o sistema a refazer os rótulos do sistema de arquivos, crie um arquivo vazio chamado .autorelabel no diretório raiz e execute a reinicialização. Se o sistema tiver muitos erros, reinicialize-o no modo permissivo para que a inicialização tenha êxito. Após refazer todos os rótulos, configure o SELinux para o modo obrigatório usando /etc/selinux/config e reinicialize ou execute setenforce 1.
Para um sysadmin menos familiarizado com a linha de comando, há ferramentas gráficas disponíveis para gerenciar o SELinux.
O SELinux também oferece uma camada extra de proteção para os sistemas que usam distribuições Linux. Ele deve permanecer ativado para proteger seu sistema caso ele seja comprometido.
Você conhece bem o Linux?
Teste seu conhecimento e ganhe selos no jogo de perguntas Legends of Linux.
Controle de acesso discricionário (DAC) e controle de acesso obrigatório (MAC)
Tradicionalmente, os sistemas Linux e UNIX usavam o DAC. O SELinux é um exemplo de sistema MAC para Linux.
No DAC, os arquivos e processos têm proprietários. Um arquivo pode ter um usuário, um grupo ou outro elemento como proprietário. Os usuários podem alterar as permissões nos próprios arquivos.
Em um sistema DAC, o usuário raiz tem controle de acesso total. Com o acesso raiz, é possível acessar os arquivos de todos os usuários e executar qualquer ação no sistema.
No entanto, em sistemas MAC como o SELinux, há uma política de acesso administrativo definida. Mesmo que as configurações do DAC sejam alteradas no diretório de usuário, para manter o sistema seguro, basta ter uma política do SELinux em vigor que impeça o acesso de outro usuário ou processo ao diretório.
As políticas do SELinux podem ser específicas e abranger um grande número de processos. Você pode fazer alterações no SELinux para limitar o acesso entre usuários, arquivos, diretórios e mais.
Como resolver erros do SELinux
Quando você recebe um erro no SELinux, isso indica que algo precisa ser ajustado. Provavelmente, será um destes quatro problemas:
- Os rótulos estão errados. Se for este o caso, use as ferramentas para corrigir os rótulos.
- Uma política precisa ser corrigida. Talvez você precise informar o SELinux sobre uma mudança feita ou ajustar uma política. Para isso, use booleanos ou módulos de política.
- Há um erro na política. Neste caso, o erro precisa ser resolvido.
- O sistema foi comprometido. Embora o SELinux proteja seus sistemas em vários cenários, ainda existe a possibilidade de que um deles seja corrompido. Se você suspeitar de que esse é o caso, tome medidas imediatamente.
O que são booleanos?
Os booleanos são configurações que ativam ou desativam as funções no SELinux. Há centenas de definições para recursos do SELinux, muitas delas já predefinidas. Execute getsebool -a para descobrir os booleanos configurados no seu sistema.
A Red Hat pode ajudar
O Red Hat Enterprise Linux é a principal plataforma open source Linux do mundo. Ela permite que você reduza riscos, reforce políticas e configurações de segurança e simplifique estratégias de conformidade. No
Red Hat Enterprise Linux, as funções do sistema são uma coleção de Ansible® roles que oferecem fluxos de trabalho consistentes para aperfeiçoar a execução de tarefas manuais. As funções do sistema ajudam a automatizar os fluxos de trabalho de segurança, mantê-los ao longo do tempo com recursos mínimos, além de simplificarem os requisitos de governança e conformidade. Com a função do sistema SELinux, você pode automatizar a implantação e o gerenciamento do SELinux. Isso inclui:
- Ativar o SELinux com modos obrigatório ou permissivo para garantir a consistência dos controles.
- Personalizar booleanos de política SELinux, contextos de arquivo, portas e logins para atender aos seus requisitos.
- Utilizar a função do sistema para reconciliar contextos de arquivo nos diretórios ou arquivos especificados.