Pesquisa de site

Como habilitar o SELinux no CentOS/RHEL 7?


Introdução

A segurança é a principal preocupação de qualquer administrador de sistema. SELinux (Security-Enhanced Linux) é um mecanismo de segurança de controle de acesso obrigatório (MAC) que fornece uma camada adicional de segurança ao kernel Linux.

Por padrão, o SELinux está habilitado no CentOS/RHEL 7, mas funciona em modo permissivo, o que significa que não bloqueia as atividades do sistema, apenas as registra. Neste artigo, aprenderemos como habilitar o SELinux no CentOS/RHEL 7.

Importância de habilitar o SELinux no CentOS/RHEL 7

A ativação do SELinux fornece melhor proteção ao seu servidor contra ataques e acesso não autorizado. Ele adiciona uma camada extra de defesa contra diferentes tipos de atividades maliciosas, como ataques de negação de serviço (DoS) ou tentativas de escalonamento de privilégios. Desativar o SElinux pode fazer com que alguns aplicativos funcionem de maneira mais suave, porque eles não precisam trabalhar com restrições adicionais impostas pelas políticas e regras do SELinux.

O que é SELinux?

SELinux é um módulo de segurança para o kernel Linux que fornece controle de acesso obrigatório por meio de aplicação de políticas. Ele foi desenvolvido pela NSA em parceria com a Red Hat como uma camada adicional de proteção além do controle de acesso discricionário tradicional no estilo Unix. Ao aplicar políticas que restringem as ações que podem ser executadas por processos e usuários, o SELinux ajuda a mitigar os riscos associados a software malicioso ou atividades não autorizadas.

Como funciona?

O SELinux funciona aplicando políticas que governam quais ações podem ser executadas por processos e usuários no sistema com base em rótulos predefinidos atribuídos a recursos como arquivos, diretórios, soquetes, dispositivos, etc. permitindo um controle refinado sobre quais recursos eles podem acessar e quais ações podem executar. A política SELinux define regras sobre como esses contextos interagem entre si com base em seus rótulos. Para aplicar essas políticas, o SELinux usa uma combinação de controles em nível de kernel, como restrições de chamadas do sistema e verificações de permissão de arquivos, em conjunto com ferramentas de espaço do usuário, como setroubleshootd ou auditd.

Benefícios de usar o SELinux:

  • Melhor segurança - Ao implementar controles de acesso obrigatórios tanto no nível do kernel quanto no nível do usuário, o selinux fornece um nível mais alto de segurança em comparação aos controles de acesso discricionários tradicionais.

  • Capacidade de restringir processos - Os processos podem ser restritos para acessar apenas recursos específicos no sistema, o que reduz o risco de acesso não autorizado ou manipulação por software malicioso.

  • Auditoria e responsabilidade aprimoradas - O Selinux gera entradas de log detalhadas que podem ser usadas para identificar e rastrear atividades suspeitas no sistema, proporcionando melhor visibilidade e responsabilidade em comparação aos controles de acesso discricionário tradicionais.

Verificando o status atual do SELinux

Verificar o status atual do SELinux é uma etapa crucial antes de habilitá-lo em seu sistema. Esta etapa garante que o sistema não tenha nenhum problema pré-existente com o SELinux, o que pode causar problemas durante o processo de habilitação. Uma maneira de verificar o status atual do SELinux é usando o comando getenforce.

Usando o comando getenforce

O comando getenforce é uma ferramenta integrada no CentOS/RHEL 7 que exibe o modo de operação atual do SELinux. Para usá-lo, abra uma janela de terminal e digite “getenforce” seguido de pressionar enter.

O comando exibirá então uma das três saídas possíveis -

  • Enforcing - Isso significa que o SELinux está sendo executado no modo de imposição, o que impede qualquer acesso não autorizado a arquivos e processos em seu sistema.

  • Permissivo -Isso significa que o SELinux está rodando em modo permissivo, que permite acesso não autorizado, mas registra quaisquer violações.

  • Disabled - Isso significa que o SELinux não está habilitado no seu sistema.

Habilitando SELinux no CentOS/RHEL 7

Editando o arquivo /etc/selinux/config

Para habilitar o SELinux no CentOS/RHEL 7, você precisa editar o arquivo /etc/selinux/config. Para fazer isso, você pode usar qualquer editor de texto de sua preferência.

Neste exemplo, usaremos o editor vi. Abra o terminal e digite o seguinte comando -

sudo vi /etc/selinux/config 

Isso abrirá o arquivo de configuração no editor vi.

Você verá algo assim -

# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. 
# permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. 
SELINUX=enforcing 

Como você pode ver, existem três valores possíveis que o SELINUX pode assumir: obrigatório, permissivo ou desativado.

O valor atual está definido como obrigatório, o que significa que o SELinux já está habilitado. No entanto, se não estiver habilitado em seu sistema, você precisará alterar este valor.

Alterando o valor do SELINUX para impor

Para habilitar o SELinux e garantir que ele permaneça habilitado mesmo após uma reinicialização, você precisa alterar o valor do SELINUX para impor. Para fazer isso, mova o cursor sobre `enforcing` e pressione a tecla `i` (inserir) no teclado.

Isso colocará o vi no modo de inserção, permitindo editar texto dentro de um arquivo. Agora exclua qualquer valor (aplicativo/permissivo/desativado) que existia antes e digite `aplicativo`.

Agora salve suas alterações e saia do editor vi pressionando `ESC` seguido de `:wq` e pressione Enter.

Verificando se o SELinux está habilitado e em execução

Depois de habilitar o SELinux com sucesso em seu sistema CentOS/RHEL 7, você precisará verificar se ele está funcionando corretamente. Uma maneira de verificar o status do SELinux é usando o comando ‘getenforce’.

Este comando exibe o status atual do SELinux em seu sistema – seja ele obrigatório ou permissivo. Para usar o comando ‘getenforce’, basta abrir uma nova janela de terminal e digitar ‘getenforce’.

A saída será um dos três valores possíveis: obrigatório, permissivo ou desabilitado. Se você vir 'aplicando', então o SELinux está aplicando ativamente políticas em seu sistema.

Se você vir 'permissivo', então o SELinux ainda está em execução, mas não está aplicando políticas ativamente – ele apenas registrará violações em vez de bloqueá-las. Se você vir 'desativado', o SELinux não está funcionando.

Usando o comando getenforce novamente para verificar a mudança de status

É importante observar que alterar o valor do SELINUX no arquivo /etc/selinux/config requer uma reinicialização para que as alterações tenham efeito. Após reinicializar o servidor e fazer login novamente, execute o comando getenforce novamente para garantir que as alterações foram aplicadas corretamente. Se você ainda estiver vendo "permissivo" como saída após fazer alterações na configuração e reinicializar de acordo com a etapa 4 acima, isso pode indicar um problema com um ou mais serviços em seu servidor CentOS/RHEL 7 que não estão configurados corretamente com as políticas SElinux.

Verificando se todos os serviços estão funcionando corretamente

Depois de verificar se o SELinux está configurado para “aplicar”, certifique-se de que todos os serviços estejam funcionando corretamente, verificando os logs ou usando ferramentas de linha de comando, como systemctl. Preste atenção a quaisquer alertas ou mensagens de erro relacionadas às políticas do SElinux que possam indicar etapas adicionais necessárias para cada serviço específico. É importante que todos os serviços em seu sistema CentOS/RHEL 7 estejam configurados com políticas SElinux.

Se algum serviço não estiver configurado corretamente, ele poderá não funcionar corretamente e até causar vulnerabilidades de segurança em seu sistema. Portanto, é necessário verificar se cada serviço está funcionando perfeitamente e se seu arquivo de configuração foi atualizado com as políticas do SELinux.

Conclusão

O Selinux vem instalado com CentOS/RHEL 7 por padrão, mas pode não ser habilitado imediatamente. Ele adiciona uma camada extra de proteção contra vários tipos de ataques predominantes hoje.

A ativação do selinux garante um forte isolamento entre aplicativos e serviços em execução em um servidor. Existem várias conveniências oferecidas pelo selinux, como controle de acesso baseado em funções (RBAC), controle de acesso obrigatório (MAC), separação de processos, etc.

Artigos relacionados: