AppArmor

Tutorial do Debian AppArmor

Tutorial do Debian AppArmor
AppArmor é um sistema de controle de acesso obrigatório para Linux. Em um sistema de controle de acesso obrigatório (MAC), o kernel impõe restrições sobre caminhos, soquetes, portas e vários mecanismos de entrada / saída. Foi desenvolvido pela Immunex e agora é mantido pela SUSE. Faz parte do kernel Linux desde a versão 2.6.36.

Enquanto o kernel do Linux oferece bom isolamento de usuários e forte controle de permissão de arquivo, um MAC como o AppArmor oferece permissões mais refinadas e proteção contra muitas ameaças desconhecidas. Se uma vulnerabilidade de segurança for encontrada no kernel do Linux ou outro daemon do sistema, um sistema AppArmor bem configurado pode impedir o acesso a caminhos críticos que podem ser vulneráveis ​​ao problema.

O AppArmor pode funcionar efetivamente em dois modos - aplicar e reclamar. Enforce é o status de produção padrão do AppArmor, enquanto reclamar é útil para desenvolver um conjunto de regras com base em padrões de operação reais e para registrar violações. Ele é configurado por meio de arquivos de texto simples em um formato relativamente amigável e tem uma curva de aprendizado mais curta do que a maioria dos outros sistemas de controle de acesso obrigatórios.

Instalação

Para instalar o AppArmor no Debian, execute (como root):

apt install apparmor apparmor-utils auditd

Você pode omitir o auditd se não precisar de ferramentas de geração de perfil.

Se você deseja instalar perfis iniciais e adicionais, execute:

apt install apparmor-profiles apparmor-profiles-extra

Como o AppArmor é um módulo do kernel Linux, você deve habilitá-lo com os seguintes comandos:

mkdir -p / etc / default / grub.d

Crie o arquivo / etc / default / grub.d / apparmor.cfg com o seguinte conteúdo:

GRUB_CMDLINE_LINUX_DEFAULT = "$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 1 security = apparmor"

Salve, saia e execute:

update-grub

Em seguida, reinicie.

Há um debate se isso deve ser feito automaticamente. Você pode desejar consultar o final deste relatório de bug para ver se ele foi alterado desde o momento em que este artigo foi escrito.

Depois de reiniciar, você pode verificar se o AppArmor está habilitado executando:

status aa

Este comando listará os perfis do AppArmor carregados e seu estado atual de conformidade (aplicada, reclamar, etc.)

Se você executar:

ps auxZ | grep -v '^ não confinado'

Você verá uma lista de programas que são limitados por um perfil do AppArmor. Um programa confinado é aquele que é afetado e limitado (passivamente, no modo de reclamação ou ativamente no modo forçado) pelo AppArmor.

Alterando modos / desativando o AppArmor

Se você deseja desabilitar o AppArmor porque um programa não está funcionando, você pode considerar colocar o perfil no modo de reclamação em vez do modo forçado. Para fazer isso, execute (como root ou via sudo):

aa-reclamar / caminho / para / programa

Por exemplo, se o ping não funcionar corretamente, use:

reclamar aa / usr / bin / ping

Uma vez que um perfil está no modo de reclamação, você pode examinar o registro via / var / log / syslog ou com journalctl -xe em sistemas systemd (Debian 8.x, Jessie e superior).

Depois de editar o perfil para remover ou ajustar a restrição, você pode ativar o modo forçado novamente para o binário com:

aa-impor / caminho / para / programa

No exemplo acima, substitua / caminho / para / programa pelo caminho completo para o binário afetado pelo perfil em questão.

Se você tiver um problema com um programa e ele estiver em modo de reclamação, os registros fornecerão informações específicas sobre qual ação foi negada. O campo de operação explicará o que o programa tentou fazer, o campo de perfil o perfil específico afetado, o nome especificará o destino da ação (i.e. qual arquivo foi interrompido em uma operação de leitura ou gravação), e as máscaras solicitadas e negadas indicam se a operação, tanto solicitada pelo programa quanto negada pelo perfil, foi de leitura ou leitura / gravação.

Você pode desativar um perfil totalmente executando:

aa-desabilitar / caminho / para / programa

Ou você pode desativar o AppArmor completamente editando o arquivo: / etc / default / grub.d / apparmor.cfg para conter:

GRUB_CMDLINE_LINUX_DEFAULT = ”$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 0”

Em seguida, executando:

update-grub

E reiniciando seu sistema.

Trabalho com perfis do AppArmor

Os perfis do AppArmor residem em / etc / apparmor.d / diretório. Se você instalar os pacotes apparmor-profiles e apparmor-profiles-extra, você encontrará perfis em / usr / share / doc / apparmor-profiles e / usr / share / doc / apparmor-profiles / extra. Para ativá-los, copie os arquivos em / etc / apparmor.Em seguida, edite-os para garantir que contenham os valores desejados, salve e execute:

recarregar aparelho de serviço

Se você deseja recarregar apenas um perfil, execute:

apparmor_parser -r / etc / apparmor.d / perfil

Onde “perfil” é o nome do perfil em questão.

Não é recomendado apenas copiar os perfis e perfis extras para o / etc / apparmor.d diretório sem editá-los manualmente. Alguns perfis podem ser antigos e alguns certamente não conterão os valores que você deseja. Se você copiar todos eles, pelo menos configure-os para reclamar para que você possa monitorar as violações sem quebrar os programas em produção:

cd / etc / apparmor.d
para f em *.*; faça aa-reclamar / etc / apparmor.d / $ f; feito

Você pode usar o comando aa-enforce individualmente para habilitar os perfis que deseja manter, ajustar aqueles que causam problemas e reforçá-los, ou remover aqueles que você não precisa executando aa-disable ou removendo o arquivo de perfil de / etc / apparmor.d.

Criação de um perfil AppArmor

Antes de criar um perfil personalizado, você vai querer pesquisar o / etc / apparmor.d e / usr / share / doc / apparmor-profiles diretórios para um perfil existente que cobre o binário em questão. Para pesquisá-los, execute:

find / usr / share / doc / apparmor-profiles | grep “programa” -i

Substituir programa com o programa que você deseja proteger com o AppArmor. Se você encontrar um, copie-o para / etc / apparmor.de edite o arquivo em seu editor de texto favorito.

Cada perfil é composto por três seções principais: inclui, recursos e caminhos. Você pode encontrar uma referência útil na documentação do SuSE.

Inclui

Inclui fornece sintaxe que você pode usar dentro do arquivo. Eles usam a sintaxe C / C ++ #include <> e geralmente fazem referência a abstrações encontradas em / etc / apparmor.diretório d / abstrações.

Capacidades

A seção de recursos, normalmente encontrada após o includes, lista os recursos específicos que o programa pode executar. Por exemplo, você pode permitir que um programa execute uma operação setuid com:

capacidade setuid

A capacidade net_bind_service permite que um programa se ligue a uma porta de rede. Se você não conceder isso, um daemon de servidor como o Apache não pode abrir a porta 80 e escutar. No entanto, omitir esse recurso pode fornecer excelente segurança para processos em que você não confia na rede.

Caminhos

Você pode listar caminhos que o programa é capaz de ler (e possivelmente escrever). Por exemplo, se você deseja permitir que o programa acesse o arquivo / etc / passwd, adicione:

/ etc / passwd r

No perfil. Observe o “r” - isso significa somente leitura. Se você alterar para "w", a gravação neste caminho ou arquivo será permitida.

Mesmo se você permitir um caminho no AppArmor, ele ainda estará sujeito às restrições do sistema de arquivos do Linux (i.e. definido com chmod, chgrp e chown). No entanto, o AppArmor ainda fornecerá uma camada extra de proteção caso esses mecanismos sejam comprometidos.

Conclusão

A chave para uma implantação bem-sucedida do AppArmor é definir perfis para reclamar e, em seguida, impor. O exame cuidadoso do registro fornecerá os caminhos e recursos mínimos necessários para a operação bem-sucedida do programa. Ao atribuir estes e nada mais, você aumentará drasticamente a segurança do seu sistema.

OpenTTD vs Simutrans
Criar sua própria simulação de transporte pode ser divertido, relaxante e extremamente atraente. É por isso que você precisa ter certeza de experiment...
Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...