O que é apparmor?

93

Eu ouço muita conversa sobre apparmor, quero saber o seguinte:

  • O que é apparmor?
  • Como o apparmor funciona?
Alvar
fonte

Respostas:

92

O que é isso

O Apparmor é um sistema de controle de acesso obrigatório (ou MAC). Ele usa aprimoramentos do kernel LSM para restringir os programas a determinados recursos. O AppArmor faz isso com perfis carregados no kernel quando o sistema é iniciado. O Apparmor tem dois tipos de modos de perfil: imposição e reclamação. Os perfis no modo de imposição aplicam as regras desse perfil e relatam tentativas de violação em syslogou auditd. Os perfis no modo de reclamação não impõem nenhuma regra de perfil, apenas tentativas de violação de log.

No Ubuntu, o Apparmor é instalado por padrão. Ele restringe aplicativos a perfis para determinar quais arquivos e permissões que um programa precisa acessar. Alguns aplicativos virão com suas próprias propriedades e mais podem ser encontrados no apparmor-profilespacote.

Você pode instalar apparmor-profilesexecutando sudo apt-get install apparmor-profiles.

Encontrei um bom exemplo de Apparmor nos fóruns do Ubuntu que reescrevi para este post.

Apparmor é uma estrutura de segurança que impede que os aplicativos se tornem mal. Por exemplo: Se eu executo o Firefox e visito um site ruim que tenta instalar malware que exclui minha homepasta, o Apparmor tem limites no Firefox, impedindo-o de fazer o que eu não quero (como acessar minhas músicas, documentos, etc.). Dessa forma, mesmo se seu aplicativo estiver comprometido, nenhum dano poderá ser causado.

Como funciona

O apparmor-utilspacote contém ferramentas de linha de comando para configurar o Apparmor. Com ele, você pode alterar o modo de execução do Apparmor, encontrar o status de um perfil, criar novos perfis, etc.

Estes são os comandos mais comuns:

Nota: Os perfis são armazenados em/etc/apparmor.d/

  • Você pode verificar o status do Apparmor com sudo apparmor_status. Você receberá uma lista de todos os perfis * carregados, todos os perfis no modo de imposição, todos os perfis no modo de reclamação, quais processos são definidos na imposição / reclamação, etc.
  • Para colocar um perfil em reclamar modo que você utiliza sudo aa-complain /path/to/bin, onde /path/to/biné a programas binpasta. Por exemplo, executando: sudo aa-complain /usr/bin/firefoxcolocará o Firefox no modo de reclamação.
  • Você usa sudo aa-enforce /path/to/binpara impor um perfil de programas.
  • Você pode carregar todos os perfis nos modos de reclamação / aplicação com sudo aa-complain /etc/apparmor.d/*e sudo aa-enforce.d/*respectivamente.

Para carregar um perfil no kernel você usaria apparmor_parser. Você pode recarregar perfis usando o -rparâmetro

  • Para carregar um perfil, use :, cat /etc/apparmor.d/profile.name | sudo apparmor_parser -aque efetivamente imprime o conteúdo profile.nameno analisador do Apparmor.
  • Para recarregar um perfil, use o -rparâmetro da seguinte maneira:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • Para recarregar todos os perfis do Apparmor, use: sudo service apparmor reload

Para desativar um perfil que você ligar -lo para /etc/apparmor.d/disable/usar lnassim: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/depois executar: sudo apparmor_parser -R /etc/apparmor.d/profile.name.

Nota: Não confundaapparmor_parser -rcomapparmor_parser -R ELES NÃO SÃO A MESMA COISA!

  • Para reativar um perfil, remova o link simbólico /etc/apparmor.d/disable/e carregue-o usando o -aparâmetrosudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • Você pode desativar o Apparmor sudo service apparmor stope remover o módulo do kernel usandosudo update-rc.d -f apparmor defaults
  • Inicie o Apparmor com sudo service apparmor starte carregue os módulos do kernel comsudo update-rc.d apparmor defaults

Perfis

Os perfis são armazenados /etc/apparmor.d/e recebem o nome do caminho completo para o executável que eles perfilam, substituindo '/' por '.'. Por exemplo, /etc/apparmor.d/bin.pingé o perfil para pingin /bin.

Existem dois tipos principais de entradas usadas nos perfis:

  1. As entradas de caminho determinam quais arquivos um aplicativo pode acessar.

  2. As entradas de capacidade determinam quais privilégios um processo pode usar.

Vamos olhar para o perfil ping, localizado em etc/apparmor.d/bin.ping, como um exemplo.

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}  

#include <tunables/global>Inclui o arquivo globalno diretório tunables, isso permite que instruções referentes a vários aplicativos sejam colocadas em um arquivo comum.

/bin/ping flags=(complain)define o caminho para o programa com perfil e define o modo para reclamar.

capability net_rawpermite que o aplicativo acesse o CAP_NET_RAW Posix.1erecurso.

/bin/ping mixr permite que o aplicativo leia e execute o acesso ao arquivo.

/etc/modules.conf r,Isso rfornece ao aplicativo privilégios de leitura para/etc/modules.conf

Nota: Após criar / editar um perfil, é necessário recarregar o perfil para que as alterações entrem em vigor.

Aqui está uma lista de permissões que você pode usar:

  • r - ler
  • w - Escreva
  • ux - Execução sem restrições
  • Ux - Execução sem restrições - limpe o ambiente
  • px - Execução de perfil discreto
  • Px - Perfil discreto executado - limpe o ambiente
  • ix - Herdar execução
  • m - permitir PROT_EXECcom mmap(2)chamadas
  • l - ligação

Fontes

Seth
fonte
Portanto, é como um programa que age como usuário e não tem permissões para modificar a maioria dos arquivos no sistema?
Izkata
Sim e não. Você configura um perfil que define o que certos aplicativos podem fazer. Você adiciona programas a esse perfil e limita o que os programas nesse perfil têm permissão para fazer. Portanto, é como um usuário, porque eles só podem acessar o que o administrador (você) diz que podem no perfil.
Seth
Ah, então perfis são como grupos de usuários para programas;)
Izkata
Sim, muito parecido com isso;)
Seth
Você acha que o apparmor poderia ser usado para bloquear todas as conexões à Internet e dizer quem está tentando acessá-las? e com base nesse log, criamos permissões para cada aplicativo? a idéia é fazê-lo funcionar como o Zonalarm na janela $ e como os antigos "firewalls por aplicativo" no linux como o LeopardFlower e o ProgramGuard (eles parecem não ser mais compiláveis, eu acho), e também existe um novo chamado Douane, que usa um módulo do kernel para fazer as coisas funcionarem.
Aquarius Power
6

O AppArmor é um sistema de controle de acesso obrigatório (MAC) que é um aprimoramento do kernel (LSM) para limitar os programas a um conjunto limitado de recursos. O modelo de segurança do AppArmor é vincular atributos de controle de acesso a programas e não a usuários. O confinamento do AppArmor é fornecido por meio de perfis carregados no kernel, normalmente na inicialização. Os perfis do AppArmor podem estar em um de dois modos: imposição e reclamação. Os perfis carregados no modo de imposição resultarão na imposição da política definida no perfil, bem como no relato de tentativas de violação da política (via syslog ou auditd). Os perfis no modo de reclamação não aplicam a política, mas relatam tentativas de violação da política.

O AppArmor é diferente de alguns outros sistemas MAC no Linux, pois é baseado em caminho, permite misturar perfis de aplicação e modo de reclamação, usa arquivos de inclusão para facilitar o desenvolvimento e possui uma barreira à entrada muito menor do que outros sistemas MAC populares.

O AppArmor é uma tecnologia estabelecida, vista pela primeira vez no Immunix, e posteriormente integrada ao Ubuntu, Novell / SUSE e Mandriva. A funcionalidade principal do AppArmor está no kernel Linux principal a partir da 2.6.36; o trabalho está em andamento pelo AppArmor, Ubuntu e outros desenvolvedores para mesclar funcionalidades adicionais do AppArmor no kernel da linha principal.

Eu tenho alguns links mais úteis para você: Wiki.Ubuntu.com Ubuntuforums.org

Guias Apparmor para Ubuntu 12.04 e Ubuntu 12.10

Espero que ajude você.

rɑːdʒɑ
fonte
3

Aqui está uma citação do wiki do Apparmor :

O AppArmor é um sistema de segurança de aplicativos Linux eficaz e fácil de usar. O AppArmor protege proativamente o sistema operacional e os aplicativos de ameaças externas ou internas, mesmo ataques de dia zero, reforçando o bom comportamento e impedindo a exploração de falhas desconhecidas de aplicativos. As políticas de segurança do AppArmor definem completamente quais recursos do sistema os aplicativos individuais podem acessar e com quais privilégios. Várias políticas padrão estão incluídas no AppArmor e, usando uma combinação de análise estática avançada e ferramentas baseadas em aprendizado, as políticas do AppArmor para aplicativos muito complexos podem ser implantadas com êxito em questão de horas.

Adeline Dale
fonte