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

Selinux Vs Apparmor

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

Selinux Vs Apparmor 1 1

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.

ComandoUso
chcon -tMuda o contexto de um arquivo alvo
chcon -RMuda o contexto de um diretório alvo (essa mudança é recursiva)
restorecon -vRestaura o contexto de um arquivo para o padrão
restorecon -v -RRestaura o contexto de um diretório para o padrão (essa mudança é recursiva)
semanage fcontext -a -tDefine 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(/.*)”

Selinux Vs Apparmor 2 1

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.

Selinux Vs Apparmor 3

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.

Selinux Vs Apparmor 4

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.

Selinux Vs Apparmor 5

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

Selinux Vs Apparmor 6

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/man

Observe 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/man

Facilidade 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.