SELinux vs AppArmor: Quais São as Diferenças e Qual Você Deveria Usar?

SELinux (abreviação de Security Enhanced Linux) é um módulo de segurança do kernel Linux que é usado para aumentar a segurança em distribuições Linux, endurecendo o acesso a arquivos e processos. Outro módulo de segurança do kernel Linux semelhante usado para esse propósito é o AppArmor. Há um grande interesse nesses dois módulos devido aos seus papéis sobrepostos no controle de acesso para sistemas operacionais Linux. Este artigo aborda as diferenças entre SELinux e AppArmor, permitindo que os usuários determinem qual desses módulos é o melhor para suas necessidades através de uma comparação de recursos e facilidade de uso.
Índice
- O Que É SELinux?
- Operações e Comandos do SELinux
- O Que É AppArmor?
- Facilidade de Uso Entre SELinux e AppArmor
- Perguntas Frequentes
Leia também: 5 Melhores Distribuições Linux-Livre para Melhor Segurança
O Que É SELinux?
Proteger servidores com SELinux elimina a dependência do acesso baseado no estilo DAC, que se baseia em usuários e funções reais do sistema. Em vez disso, ele introduz um sistema de contexto de três cadeias para cada processo ou usuário do sistema. As três cadeias, a saber, nome de usuário, papel e domínio, permitem mais flexibilidade e controle sobre o acesso ao sistema.
Um processo pode ser permitido em um domínio específico através da configuração de políticas no SELinux. A única exceção é quando um processo é iniciado em um contexto definido explicitamente através do comando runcon. No entanto, se políticas conflitantes existirem para tal processo já na configuração, o SELinux pode negar tal transição para outro contexto. Isso garante que o SELinux opere com o princípio de negar por padrão. Qualquer processo ou usuário precisa ter uma configuração de acesso explícita para um arquivo ou recurso do sistema antes de acessá-lo.
Operações e Comandos do SELinux
Como uma extensão dos comandos comuns de utilitário no terminal, o SELinux oferece o switch -Z, que permite a exibição do contexto de segurança dos arquivos e processos. Comandos como ps e ls se beneficiam desse switch para depuração rápida ou identificação de erros na configuração. Abaixo, uma captura de tela do comando ls é mostrada.
ls-Z
A primeira parte de cada linha de saída é o domínio, a segunda é o tipo de objeto e a terceira é o nome de usuário na configuração do SELinux. Desta forma, o SELinux pode fornecer controle total sobre o acesso a cada arquivo e processo. Os seguintes comandos são usados para manipular o contexto de arquivos e diretórios.
| Comando | Uso |
|---|---|
| chcon -t | Muda o contexto de um arquivo alvo |
| chcon -R | Muda o contexto de um diretório alvo (essa mudança é recursiva) |
| restorecon -v | Restaura o contexto de um arquivo para o padrão |
| restorecon -v -R | Restaura o contexto de um diretório para o padrão (essa mudança é recursiva) |
| semanage fcontext -a -t | Define o contexto padrão de um diretório para ser o que o REGEX avalia |
Por exemplo, se houver necessidade de mudar o contexto de todos os arquivos no diretório “/srv/web” para “httpd_sys_content_t”, o seguinte comando pode ser usado:
sudo semanage fcontext -a-t httpd_sys_content_t “/srv/web(/.*)”
Como esse contexto visto na captura de tela já está definido para o diretório “/srv/web” de forma recursiva, o SELinux exibe uma mensagem para informar o usuário. Se não estiver definido, uma operação semanage bem-sucedida não mostrará nenhuma saída.
Administradores de sistema e usuários podem habilitar, desabilitar ou tornar o SELinux permissível através do comando setenforce. Da mesma forma, para verificar qual é o status de aplicação no momento, os usuários podem usar o comando getenforce, conforme mostrado na captura de tela abaixo.

Leia também: Como Transferir Arquivos de Forma Segura no Linux Usando SCP
O Que É AppArmor?
AppArmor é suportado em desenvolvimento pela Canonical, a empresa mãe que desenvolve a distribuição Ubuntu do Linux. O AppArmor visa ser mais simples e fácil de usar do que o SELinux e seus perfis são criados no diretório “/etc/apparmor.d/”. Um perfil do AppArmor para o processo “/usr/bin/man” é mostrado na captura de tela abaixo.

Operações e Comandos do AppArmor
Para ver o status do AppArmor, o comando aa-status é usado. Uma saída de amostra do comando é mostrada abaixo.

Os perfis do AppArmor podem ser listados pelo conteúdo do diretório “/etc/apparmor.d/”, conforme mostrado abaixo.

A partir da lista acima de perfis, se um usuário quiser desabilitar o perfil usr.bin.man, ele pode usar o seguinte comando:
sudo aa-complain /usr/bin/manObserve que um perfil desabilitado está localizado no subdiretório de desativação do diretório principal de perfis do AppArmor. Para reabilitar um perfil que foi desabilitado, o seguinte comando é usado:
sudo aa-enforce /usr/bin/manFacilidade de Uso Entre SELinux e AppArmor
O AppArmor trabalha com caminhos de arquivo no sistema de arquivos em vez de trabalhar com cadeias para cada arquivo como o SELinux faz. Uma vantagem do AppArmor é que as operações de leitura, gravação, bloqueio e outras operações de arquivo são mais fáceis de configurar do que no SELinux. Por outro lado, enquanto o SELinux fornece mais recursos para controle de acesso a arquivos, os recursos são implementados em um nível muito mais baixo no sistema.
Portanto, os usuários têm que aprender como usar mknod, soquetes de rede e outras operações do sistema para trabalhar com o SELinux. Para todos que não são administradores de sistema, é muito mais fácil aprender a usar o AppArmor.
O AppArmor também oferece um modo de aprendizado que é usado para registrar violações de controle de acesso. Esse modo não restringe ou impede o acesso em caso de violação, mas coleta dados ao longo do tempo para permitir a criação de um perfil separado do AppArmor com base no comportamento dos programas para cada infração de acesso registrada. Não há modo semelhante disponível no SELinux.
Leia também: Como Proteger um Servidor Linux em Casa
Perguntas Frequentes
Quais distribuições Linux vêm pré-instaladas com SELinux e AppArmor?
Todas as distribuições Linux sob a tutela da RedHat vêm pré-instaladas com ou oferecem uma configuração do SELinux, incluindo RHEL, CentOS e Fedora. O AppArmor vem pré-instalado no Debian, Ubuntu, suas distribuições derivadas, SUSE Enterprise Server e distribuições OpenSUSE.
Qual módulo de segurança é o melhor para um novo usuário Linux?
A maioria das principais distribuições Linux vem com um dos módulos de segurança instalados por padrão. Portanto, é improvável que um novo usuário Linux não tenha um módulo de segurança de imediato. A comparação de recursos e facilidade de uso entre SELinux e AppArmor mostra que, para usuários avançados ou administradores de sistema que desejam um controle mais refinado sobre seu sistema operacional, o SELinux é o melhor, mas para todos os outros, o AppArmor é a melhor escolha.
SELinux e AppArmor são alternativas a firewalls, antivírus e outros softwares de segurança de usuário ou de dados?
SELinux e AppArmor não são alternativas a antivírus ou firewalls bem configurados para a segurança do sistema e integridade dos dados. Portanto, é recomendado complementar seu sistema com um programa antivírus para melhor proteção dos dados.
Créditos das imagens: Página Wiki do AppArmor e Página Wiki do SELinux. Todas as capturas de tela por Zeeman Memon.