Como instalar o SELinux no Ubuntu 24.04/22.04/20.04

Security-Enhanced Linux (SELinux) é essencial para gerenciar políticas de segurança de controle de acesso em sistemas Linux. Usado principalmente por administradores de sistema, desenvolvedores e profissionais de segurança, o SELinux oferece segurança robusta no nível do kernel. Sua implementação em servidores Ubuntu, principalmente para as versões 24.04, 22.04 e 20.04 LTS, fortalece a segurança desses sistemas.

Os principais recursos do SELinux que melhoram a segurança de um Ubuntu incluem:

  • Controle de acesso obrigatório (MAC): Ao contrário dos sistemas tradicionais de controle de acesso discricionário, o SELinux impõe regras políticas estritas que limitam os processos e usuários do sistema, mitigando o risco de acesso não autorizado.
  • Controle refinado: Ele fornece controle detalhado sobre os processos do sistema e suas interações com arquivos e outros recursos.
  • Políticas de segurança aprimoradas: Políticas de segurança personalizadas ajudam a proteger contra ameaças externas e internas.
  • Auditoria e registro: Recursos abrangentes de registro facilitam o monitoramento e o rastreamento de eventos relacionados à segurança, auxiliando na rápida identificação e resolução de problemas.

A integração do SELinux em um ambiente de servidor Ubuntu, especialmente para aqueles que gerenciam aplicativos críticos ou dados confidenciais, aumenta significativamente a segurança do sistema. Este guia, com foco na instalação e uso básico do SELinux, tem como objetivo fornecer uma abordagem direta para aproveitar esses benefícios de segurança.

Desativar serviço AppArmor

Para garantir a compatibilidade, confirme se o AppArmor está ativo, pois executar o AppArmor e o SELinux juntos pode causar conflitos. Determine o status do AppArmor com:

sudo systemctl status apparmor

Se o AppArmor estiver operacional, desative-o para evitar qualquer interferência com o SELinux. Execute o seguinte comando para desativar o AppArmor:

sudo systemctl disable apparmor --now

Instale o SELinux via comando APT

Esta etapa envolve a instalação dos principais pacotes SELinux: policycoreutils, selinux-utils, e selinux-basics. Eles são essenciais para gerenciar políticas SELinux e fornecer suporte básico ao SELinux.

Inicie a instalação com este comando:

sudo apt install policycoreutils selinux-utils selinux-basics

Executar isso instalará os pacotes SELinux necessários em seu sistema Ubuntu.

Ativar SELinux

Após instalar os pacotes necessários, ative o SELinux para garantir que ele carregue na inicialização. Esta ativação é crítica para habilitar os recursos de segurança do SELinux. Execute o seguinte comando com privilégios de root:

sudo selinux-activate

Esta etapa configura seu sistema para inicializar o SELinux durante o processo de inicialização.

Aplicar modo SELinux

Configurar o SELinux em seu modo de aplicação é crucial. Neste modo, o SELinux aplica ativamente as suas políticas de segurança, negando acesso com base em regras predefinidas. Mude para o modo de aplicação usando:

sudo selinux-config-enforcing

Esta ação modifica sua configuração do SELinux para operar no modo de aplicação.

Reinicialização do sistema para ativação do SELinux

Finalize o processo de configuração reiniciando o sistema. Isso garante que todas as alterações sejam aplicadas e o SELinux comece a operar no modo definido:

sudo reboot

Após a reinicialização, seu sistema funcionará com o SELinux instalado, ativado e configurado para aplicar suas políticas de segurança. As seções a seguir irão guiá-lo na personalização adicional do SELinux para atender às suas necessidades de segurança.

Configurar SELinux

Compreendendo os modos SELinux

O SELinux funciona em três modos distintos:

  • Modo de aplicação: A configuração padrão, onde o SELinux aplica rigorosamente suas políticas de segurança, negando acesso conforme as regras estabelecidas.
  • Modo Permissivo: aqui, o SELinux registra violações de políticas, mas não as aplica ativamente. Este modo é útil para testar e solucionar problemas de políticas.
  • Modo desativado: Neste modo, o SELinux está completamente desligado, sem nenhuma política sendo aplicada.

Edite o arquivo de configuração do SELinux

Para personalizar as configurações do SELinux, edite o arquivo /etc/selinux/config arquivo. Use um editor de texto preferido, como o nano, para esta tarefa:

sudo nano /etc/selinux/config

Dentro do arquivo, modifique o SELINUX linha para definir seu modo preferido. Por exemplo, para ativar o modo de aplicação:

SELINUX=enforcing

Aplicando as alterações de configuração

Para que as alterações tenham efeito, reinicie o sistema:

sudo reboot

Personalizando opções adicionais de configuração do SELinux

SELinux oferece várias opções de personalização:

  • SETLOCALDEFS: determina o uso de contextos de arquivo definidos localmente. Para usar contextos padrão, defina como 0. Modifique o /etc/selinux/config arquivo de acordo:
SETLOCALDEFS=0
  • SELINUXTYPE: define o tipo de política. O tipo de política comum “direcionada” centra-se na proteção de serviços de sistema específicos. Para definir isso, atualize o SELINUXTYPE linha no arquivo de configuração:
SELINUXTYPE=targeted

Exemplo: Configurando SELinux para um servidor Web

Considere configurar o SELinux para permitir tráfego HTTP e HTTPS em um servidor web Ubuntu. O semanage O comando é usado para gerenciamento de políticas.

Primeiro, instale o semanage Utilitário:

sudo apt install policycoreutils-python-utils

Em seguida, permita o tráfego HTTP na porta 80:

sudo semanage port -a -t http_port_t -p tcp 80

E tráfego HTTPS na porta 443:

sudo semanage port -a -t http_port_t -p tcp 443

Esses comandos atualizarão a política SELinux, permitindo que seu servidor web receba conexões de entrada nas portas 80 (HTTP) e 443 (HTTPS), garantindo a operação segura do serviço web.

Verificando o modo SELinux

Verificando o status do SELinux após a reinicialização

Após reiniciar o sistema Ubuntu, é crucial confirmar o status operacional do SELinux. Esta verificação garante que o sistema aplica corretamente as definições de configuração do SELinux.

Execute o seguinte comando para verificar o status atual:

sestatus

Este comando fornece detalhes abrangentes sobre o SELinux, incluindo seu status operacional atual, o modo em que está sendo executado (aplicativo, permissivo ou desabilitado) e a política que está sendo usada. Faça referência cruzada desta saída com suas configurações no /etc/selinux/config arquivo para confirmar se o SELinux está funcionando conforme esperado.

Solução de problemas comuns do SELinux

Restaurando contextos de arquivo padrão

Contextos de arquivos incorretos geralmente levam a negações de acesso pelo SELinux, interrompendo a funcionalidade do aplicativo. Para corrigir isso, use o restorecon comando. Por exemplo, para resolver problemas no /var/www/html diretório, execute:

sudo restorecon -Rv /var/www/html

Este comando restaura recursivamente o contexto padrão para todos os arquivos e diretórios dentro /var/www/html, com saída detalhada detalhando as alterações.

Mudando temporariamente para o modo permissivo para solução de problemas

Não tem certeza se o SELinux está causando um problema específico? Mude temporariamente para o modo permissivo para diagnosticar. Este modo registra violações sem aplicá-las. Ative o modo permissivo com:

sudo setenforce 0

Teste seu aplicativo agora. Se os problemas cessarem, provavelmente resultarão das políticas do SELinux. Lembre-se de reverter para o modo de aplicação após o teste:

sudo setenforce 1

Revendo logs do SELinux para diagnóstico de problemas

Os logs do SELinux são vitais para identificar violações de políticas. No Ubuntu, o log principal do SELinux é /var/log/audit/audit.log. Para visualizar entradas recentes, use:

sudo tail /var/log/audit/audit.log

Pesquise “negado” ou “AVC” nos registros para identificar possíveis violações.

Gerando módulos de política personalizados com audit2allow

Encontrando questões relacionadas a políticas? Utilizar audit2allow para analisar logs de auditoria e criar um módulo de política personalizado. Por exemplo:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

O primeiro comando gera uma política chamada “mycustommodule” a partir de entradas “negadas” no log de auditoria. A segunda instala esta política, potencialmente resolvendo o problema.

Gerenciando Booleanos SELinux

Os booleanos do SELinux controlam funcionalidades específicas. Para listar todos os booleanos e seus estados, use:

sudo getsebool -a

Para modificar um booleano, como habilitar httpd_can_network_connect, execute:

sudo setsebool -P httpd_can_network_connect 1

O -P flag garante persistência entre reinicializações.

Configurando SELinux para aplicativos da Web: permitindo tráfego HTTP e HTTPS

Para aplicações web como WordPress, abrir as portas de rede necessárias no SELinux é crucial. Habilite as portas 80 (HTTP) e 443 (HTTPS) com:

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

Configuração SELinux para WordPress

Ajuste as políticas do SELinux para uma operação perfeita do WordPress:

  • Conexões de rede para scripts e módulos HTTPD: Habilite isto para atualizações de plugins e temas:
sudo setsebool -P httpd_can_network_connect 1
  • Acesso de leitura e gravação no diretório WordPress: Certifique-se de que o HTTPD possa interagir com os arquivos do WordPress:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

Opções adicionais de configuração de solução de problemas do SELinux

Personalize o SELinux para vários requisitos de software:

  • Acesso a diretórios personalizados: Modifique contextos de arquivo para diretórios da web personalizados, por exemplo, /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • Acesso FTP para servidor Web: Habilite o acesso FTP, se necessário:
sudo setsebool -P allow_ftpd_full_access 1
  • Funcionalidade de e-mail do servidor Web: se seu aplicativo precisar de recursos de envio de e-mail:
sudo setsebool -P httpd_can_sendmail 1

Essas configurações ilustram a flexibilidade do SELinux em atender às necessidades operacionais e de segurança específicas.

Conclusão

Isso encerra nosso guia para instalação do SELinux no Ubuntu 24.04, 22.04 ou 20.04. Percorremos o processo de instalação, abordamos alguns comandos básicos e exploramos algumas dicas importantes de configuração. Lembre-se de que atualizações regulares e monitoramento contínuo são cruciais para manter a segurança do seu sistema. Sinta-se à vontade para experimentar as políticas do SELinux para melhor atender às necessidades do seu servidor, mas sempre faça backup de suas configurações antes de fazer alterações.

Joshua James
Me siga
Últimos posts por Joshua James (exibir todos)