Como Proteger Seus Servidores Linux Com SELinux

SELinux pode ajudar a proteger seu servidor de processos ou aplicativos com falha. Desenvolvido pela NSA (Agência de Segurança Nacional) para proteger dispositivos governamentais de invasores, a arquitetura de Linux com segurança aprimorada (SE) utiliza protocolos de segurança para restringir o acesso a recursos do sistema. Descubra como você pode usá-lo para seu servidor.
Índice
- Arquitetura do SELinux
- Como Instalar ou Ativar o SELinux
- Como Configurar o SELinux
- Políticas do SELinux
- Como Lidar com Erros do SELinux
- Como Desativar o SELinux
- Perguntas Frequentes
Leia também: O que é o Shell Rc e como instalá-lo no Linux
Arquitetura do SELinux
SELinux é um módulo de kernel que pode ser ativado ou desativado pelo administrador do sistema. Como o acesso a arquivos e portas de rede é limitado seguindo uma política de segurança, um programa com falha ou um daemon mal configurado não pode causar um grande impacto na segurança do sistema.
Quando um aplicativo ou processo solicita acesso a arquivos no sistema SELinux, ele primeiro verifica o cache do vetor de acesso (AVC). Se a permissão estiver previamente em cache, ela é retornada com o arquivo solicitado para o aplicativo. Se a permissão não estiver em cache, a solicitação é enviada ao servidor de segurança. O servidor de segurança verifica todas as políticas de segurança em seu banco de dados. Dependendo da política de segurança, a permissão é então concedida ou negada.
Não existe o conceito de root ou superusuário no SELinux. A segurança de uma distribuição Linux não modificada sem o SE Linux depende da correção do kernel, de todos os aplicativos privilegiados e de suas configurações. Falhas ou bugs em qualquer um desses componentes podem criar uma superfície de ataque e comprometer o sistema.
Por outro lado, um sistema Linux modificado com SELinux depende principalmente da correção do kernel e das políticas de segurança.
Leia também: Como Usar o Comando Rm no Linux
Como Instalar ou Ativar o SELinux
SELinux significa Linux com Segurança Aprimorada. O SELinux faz parte do kernel do Linux desde 2003. Portanto, você não precisa instalá-lo separadamente. Na maioria das distribuições de desktop Linux, no entanto, está desativado por padrão.

O SELinux possui três modos principais: Aplicado, Permissivo e Desativado. Vamos discuti-los brevemente:
- Aplicado: Isso ativa e protege o sistema Linux usando políticas de segurança.
- Permissivo: Não aplica as políticas de segurança, mas registra tudo. Este modo é útil para fins de solução de problemas.
- Desativado: Isso desativa o SELinux. Esta opção não é recomendada e, se você reativar o SELinux em seu sistema, isso pode levar a erros devido a alterações na rotulagem.
Nota: O Ubuntu é fornecido com o AppArmor, uma alternativa ao SELinux. Embora o SELinux esteja disponível no Ubuntu, ele não é compatível com o AppArmor e pode prejudicar seu sistema se ativado. Se você realmente precisar usar o SELinux no Ubuntu, certifique-se de desativar o AppArmor e faça testes rigorosos (comece com o modo permissivo primeiro) antes de usá-lo para uso em produção.
- Para ativar o SELinux em seu sistema, você precisa editar o arquivo “/etc/selinux/config”. Abra este arquivo em seu editor de texto.
sudonano/etc/selinux/config- Dentro do arquivo de configuração, defina
SELINUX=permissivo. Pressione Ctrl + O e pressione Enter para salvar o arquivo e pressione Ctrl + X para sair do editor. O SELinux agora está ativado em seu sistema.
Nota: se você tentar forçar o SELinux diretamente antes de torná-lo permissivo, ele pode rotular incorretamente arquivos e processos e impedir que você inicie o sistema.
- Para rotular automaticamente o sistema de arquivos, crie um arquivo chamado “.autorelabel” em seu sistema de arquivos root. Agora, quando você iniciar seu sistema, o SELinux irá rotular automaticamente seu sistema de arquivos. Para reduzir erros, mantenha a opção
SELINUX=permissivocomo está na pasta de configuração. Após tudo ser rotulado, defina o SELinux paraSELINUX=aplicadoem “/etc/selinux/config” e reinicie.
O SELinux será aplicado com sucesso em seu sistema.
Leia também: Como Personalizar Seu Prompt de Terminal Linux Usando Starship
Como Configurar o SELinux
SELinux é uma arquitetura que permite que administradores de sistema controlem o que pode acessar os recursos do sistema. O SELinux limita o acesso ao sistema usando políticas de segurança. Existem várias maneiras de configurar o SELinux para proteger seu sistema, sendo as mais populares a “política direcionada” e a “segurança de múltiplos níveis” (MLS).
Uma política direcionada é a política de segurança padrão. Ela cobre uma gama de políticas de segurança, como acesso a arquivos, tarefas, serviços, etc. A segurança de múltiplos níveis (MLS) é geralmente usada por governos e grandes organizações, é muito complicada de configurar e requer uma equipe dedicada para gerenciá-la.
Você pode verificar seu modo atual do SELinux com o comando getenforce e sestatus.
Se você apenas precisa mudar o modo do SELinux na sessão atual, pode executar os seguintes dois comandos.
sudo setenforce 0: Definindo o SELinux para o modo permissivo para a sessão atual.sudo setenforce 1: Definindo o SELinux para o modo aplicado para a sessão atual.
Políticas do SELinux
O SELinux funciona como um sistema de rotulagem. Ele associa cada arquivo, porta e processo a um rótulo. Os rótulos são uma forma lógica de agrupar as coisas. O kernel é responsável por gerenciar o rótulo durante a inicialização.

As políticas do SELinux podem ser gerenciadas por booleans. Por exemplo, vamos definir um booleano para um daemon chamado httpd. httpd é um daemon do servidor HTTP Apache que usamos para executar servidores web no Linux.
Para listar todos os módulos específicos do httpd, execute o seguinte comando no seu terminal:
getsebool -a|grep httpdAqui, a opção -a lista todos os booleans, e usamos grep para filtrar apenas o booleano relacionado ao httpd. Leia este artigo para saber mais sobre grep no Linux.
A saída do comando acima se parece com a imagem abaixo.
httpd_builtin scripting --> on
httpd_can_check_spam --> off
httpd pode conectar ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd dbus sssd--> offDa lista acima, pegamos o booleano httpd_can_connect_ftp e mudamos seu valor. Primeiro, leia o valor de httpd_can_connect_ftp, se está ligado ou desligado:
getsebool httpd_can_connect_ftpVamos definir o valor de httpd_can_connect_ftp como permitir.
setsebool -P httpd_can_connect_ftp 1Aqui, 1 representa allow ou ligado. A tag -P é usada para tornar a alteração permanente. Se você listar os booleans relacionados ao httpd novamente, poderá ver a mudança no valor de httpd_can_connect_ftp para ligado.
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd pode conectar ftp --> on
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd dbus sssd--> offLeia também: Como Configurar o WordPress Usando Docker no Ubuntu
Como Lidar com Erros do SELinux
O SELinux tem 4 tipos de erros em geral:
- O sistema foi comprometido: O SELinux protege seu sistema restringindo o acesso, mas às vezes isso não é suficiente. Se você receber esses erros, então seu sistema pode estar comprometido. Tome as medidas necessárias o mais rápido possível.
- Erro na política: se houver um erro na política que precisa ser corrigido, essa mensagem de erro aparece.
- Os rótulos estão errados: Esta mensagem de erro aparece durante a personalização de rotulagem pelo usuário ou quando a rotulagem automática pelo SELinux falha. Existem muitas ferramentas no mercado para corrigir esses erros de rótulo.
- Uma política precisa ser corrigida: Esses erros surgem quando você faz algumas alterações no sistema e não informa o SELinux sobre isso. Você pode corrigir esse erro usando booleanos ou módulos de política.
Como Desativar o SELinux
Desativar o SELinux nunca é uma boa opção para servidores empresariais e governamentais e dispositivos expostos publicamente que estão muito sujeitos a ataques. Mas se você deseja desativar o SELinux em seu sistema, siga estas instruções.
- Vá até o arquivo de configuração do SE Linux em “/etc/selinux” e mude o modo de configuração do SE Linux de
aplicadoparapermissivo, em seguida, reinicie seu sistema. - Mude o modo do SELinux de
permissivoparadesativado.
Após o próximo reinício, o SELinux em seu sistema estará desativado e se tornará uma máquina Linux normal.
Leia também: Como Configurar um Firewall no Linux
Perguntas Frequentes
O SELinux está presente no Android?
Sim, o SELinux é implementado no Android a partir da versão 4.3. Ele aprimorou a segurança do Android para proteger os usuários do Android de ataques cibernéticos.
O SELinux é um firewall?
O SELinux não é um firewall. O firewall controla o tráfego entre o computador e a rede. Enquanto o SELinux controla e governa o acesso ao sistema de arquivos e à rede de diferentes programas dentro do sistema, podemos pensar no SELinux como um firewall interno para proteger o sistema de seus programas.
O SELinux é um sistema operacional?
O SELinux não é um sistema operacional. É um módulo de segurança do kernel que existe no kernel do Linux. Ele fornece suporte para políticas de segurança de controle de acesso e controles de acesso obrigatórios (MAC). Para ser considerado um sistema operacional, precisa de mais do que o próprio kernel. Na maioria dos sistemas operacionais baseados em Linux, você pode usar o SELinux.
Você deve usar SELinux?
Se você é um administrador de sistema e conhece o sistema Unix, você deve usar o SELinux, pois ele aumenta a segurança do seu servidor e minimiza a superfície de ataque. Se você não está muito familiarizado com sistemas Unix, pode também usar o AppArmor. Este é relativamente mais fácil do que o SELinux. Se você é um usuário doméstico e usa Linux apenas em seu computador desktop, não há necessidade de usar o SELinux. Isso apenas causará dor de cabeça na configuração e reduzirá sua produtividade.