Eu ouço muita conversa sobre apparmor, quero saber o seguinte:
- O que é apparmor?
- Como o apparmor funciona?
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 syslog
ou 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-profiles
pacote.
Você pode instalar apparmor-profiles
executando 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
home
pasta, 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.
O apparmor-utils
pacote 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/
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. sudo aa-complain /path/to/bin
, onde /path/to/bin
é a programas bin
pasta. Por exemplo, executando: sudo aa-complain /usr/bin/firefox
colocará o Firefox no modo de reclamação.sudo aa-enforce /path/to/bin
para impor um perfil de programas. 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 -r
parâmetro
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
que efetivamente imprime o conteúdo profile.name
no analisador do Apparmor.-r
parâmetro da seguinte maneira:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
sudo service apparmor reload
Para desativar um perfil que você ligar -lo para /etc/apparmor.d/disable/
usar ln
assim: 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 -r
comapparmor_parser -R
ELES NÃO SÃO A MESMA COISA!
/etc/apparmor.d/disable/
e carregue-o usando o -a
parâmetrosudo rm /etc/apparmor.d/disable/profile.name
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
sudo service apparmor stop
e remover o módulo do kernel usandosudo update-rc.d -f apparmor defaults
sudo service apparmor start
e carregue os módulos do kernel comsudo update-rc.d apparmor defaults
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 ping
in /bin
.
Existem dois tipos principais de entradas usadas nos perfis:
As entradas de caminho determinam quais arquivos um aplicativo pode acessar.
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 global
no 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_raw
permite que o aplicativo acesse o CAP_NET_RAW Posix.1e
recurso.
/bin/ping mixr
permite que o aplicativo leia e execute o acesso ao arquivo.
/etc/modules.conf r,
Isso r
fornece 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_EXEC
com mmap(2)
chamadas l
- ligação
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ê.
fonte
Aqui está uma citação do wiki do Apparmor :
fonte