Jump to section

SELinux

Copiar URL

Security-Enhanced Linux (SELinux) é uma arquitetura de segurança para sistemas Linux® que permite que administradores tenham 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.

O SELinux define controles de acesso para as aplicações, processos e arquivos de um sistema. Ele usa políticas de segurança, um conjunto de regras que dizem ao SELinux o que pode ou não ser acessado, para impor o acesso permitido por uma determinada política. 

Quando uma aplicação ou processo, também conhecidos como entidade, solicita acesso a um objeto, como por exemplo um arquivo, o SELinux executa uma verificação com um cache de vetor de acesso (AVC), local onde as permissões para entidades e objetos ficam armazenadas.

Se o SELinux não conseguir tomar uma decisão sobre o acesso baseado nas permissões armazenadas em cache, ele enviará uma solicitação para o servidor de segurança. Esse servidor verifica o contexto de segurança da entidade e o arquivo. O contexto é aplicado do banco de dados de políticas do SELinux. Em seguida, a permissão é concedida ou negada. 

Se a permissão for negada, a mensagem "avc: denied" aparecerá em /var/log.messages.

Como configurar o SELinux 

Há várias maneiras de configurar o SELinux para proteger seu sistema. As mais comuns são via política direcionada (targeted policy) ou segurança multinível (MLS).

A política direcionada é a opção padrão e abrange uma variedade de processos, tarefas e serviços. A MLS pode ser muito complicada e normalmente só é usada por organizações governamentais. 

É possível saber o que o sistema deveria estar executando olhando o arquivo /etc/sysconfig/selinux. O arquivo terá uma seção que mostra se o SELinux está no modo de permissão, modo de imposição ou desativado e qual política deveria ser carregada.

Identificação e imposição de tipo do SELinux 

Imposição de tipo e identificação são os conceitos mais importantes do SELinux.

O SELinux funciona como um sistema de identificação, o que significa que todos os arquivos, processos e portas em um sistema têm um rótulo do SELinux associado a eles. A identificação é uma maneira lógica de agrupar as coisas. O kernel gerencia os rótulos durante a inicialização.

Os rótulos estão no formato usuário:função:tipo:nível (nível é opcional). Usuário, função e nível são usados em implementações mais avançadas do SELinux, como as com MLS. A identificação de tipo é o mais importante para a política direcionada. 

O SELinux usa imposição de tipo para aplicar uma política definida no sistema. A imposição de tipo faz parte de uma política do SELinux para definir a compatibilidade entre os rótulos de determinados processos e certos arquivos.

Ativação do SELinux

Se o SELinux foi desativado no seu ambiente, você pode ativá-lo editando /etc/selinux/config e definindo SELINUX=permissive. Como o SELinux não estava ativado, é melhor não configurá-lo ainda para imposição. É possível que haja elementos identificados incorretamente, e isso pode impedir o sistema de ser reiniciado.  

É possível forçar o sistema a reidentificar o sistema de arquivos automaticamente. Basta criar um arquivo vazio chamado .autorelabel no diretório raiz e depois reiniciar. Se o sistema tiver muitos erros, será necessário iniciá-lo no modo de permissão para que a inicialização ocorra com sucesso. Após tudo ser identificado novamente, configure o SELinux para impor (usando /etc/selinux/config) e reinicie, ou execute o setenforce 1. 

Caso o administrador de sistemas não conheça bem a linha de comando, há ferramentas gráficas que podem ser usadas para gerenciar o SELinux. 

O SELinux oferece uma camada adicional de segurança para o sistema que é integrada às distribuições Linux. Ela deve permanecer no sistema para que possa protegê-lo caso haja alguma falha.

Tradicionalmente, os sistemas Linux e UNIX usam o DAC. O SELinux é um exemplo de sistema MAC para o Linux. 

No DAC, arquivos e processos têm proprietários. Um usuário, um grupo ou qualquer outra pessoa pode ser o proprietário de um arquivo. Os usuários podem mudar as permissões em seus próprios arquivos.

O usuário raiz tem controle de acesso completo com um sistema DAC. Se você tiver acesso raiz, poderá entrar nos arquivos de qualquer outro usuário ou fazer o que quiser no sistema. 

No entanto, em sistemas MAC, como o SELinux, há uma política definida administrativamente para o acesso. Mesmo que as configurações DAC no seu diretório home estejam diferentes, uma política do SELinux criada para prevenir que outro usuário ou processo acesse o diretório protegerá o sistema. 

As políticas do SELinux permitem que você seja específico e contemple um grande número de processos. Você pode fazer alterações com o SELinux para limitar o acesso entre usuários, arquivos, diretórios e muito mais.

Quando você encontra um erro no SELinux, é porque algo precisa ser corrigido. Provavelmente trata-se de um desses quatro problemas comuns:

  1. Os rótulos estão errados: se a identificação estiver incorreta, você poderá usar as ferramentas para corrigi-los.
  2. Uma política precisa ser corrigida: significa que você precisa informar ao SELinux sobre uma mudança feita ou talvez precise ajustar uma política. Você pode corrigir isso usando módulos de política ou booleanos.
  3. Há um bug na política: se existe algum bug na política, ele precisa ser resolvido.
  4. O sistema foi invadido: embora o SELinux possa proteger seus sistemas em vários cenários, a possibilidade do sistema estar comprometido existe. Se você suspeitar que este é o caso, aja imediatamente.

O que são booleanos?

Booleanos são configurações de ativação/desativação para funções no SELinux. Há centenas de configurações que podem ativar ou desativar os recursos do SELinux e muitas já vêm predefinidas. É possível descobrir quais booleanos já foram configurados no sistema executando getsebool -a.

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órios ou permissivos 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 em diretórios ou arquivos especificados.

Leitura recomendada

Artigo

O que é Linux?

O Linux é um sistema operacional open source composto por um kernel, que é sua base, e ferramentas, aplicações e serviços empacotados com ele.

Artigo

O que é SELinux?

O Security-Enhanced Linux (SELinux) é uma arquitetura de segurança para sistemas Linux® que permite que administradores tenham mais controle sobre quem pode acessar o sistema.

Artigo

O que é o kernel do Linux?

O kernel é o componente principal de um sistema operacional Linux e a interface central entre o hardware e os processos executados por um computador.

Leia mais sobre o Linux

Soluções Red Hat

Uma plataforma estável e comprovada, versátil o suficiente para lançar novas aplicações, virtualizar ambientes e criar uma nuvem híbrida mais segura.

Conteúdo adicional

EBOOK

Inovação e eficiência operacional com o Linux

Faça o download deste ebook se quiser ver mais informações sobre o Red Hat Enterprise Linux versão 9.