O que é
O Apparmor é um sistema de Controle de Acesso Obrigatório (ou MAC). Ele usa aprimoramentos de kernel do LSM para restringir programas a determinados recursos. O AppArmor faz isso com perfis carregados no kernel quando o sistema é iniciado. Apparmor tem dois tipos de modos de perfil, fiscalização e reclamação. Os perfis no modo de imposição impõem as regras do 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 confina os aplicativos aos 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 pacote apparmor-profiles .
Você pode instalar apparmor-profiles executando sudo apt-get install apparmor-profiles .
Encontrei um bom exemplo do Apparmor nos fóruns do Ubuntu que reescrevi para este post.
Apparmor é uma estrutura de segurança que impede que aplicativos se tornem malignos. Por exemplo: Se eu rodar o Firefox e visitar um site ruim que tenta instalar um malware que excluirá minha pasta
home, o Apparmor tem limites no Firefox que o impedem de fazer qualquer coisa que eu não queira (como acessar minha música, documentos, etc). Dessa forma, mesmo que seu aplicativo seja comprometido, nenhum dano pode ser causado.
Como funciona
O pacote apparmor-utils contém ferramentas de linha de comando para configurar o Apparmor. Ao usá-lo, 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ê obterá 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 aplicação / reclamação, etc. -
Para colocar um perfil no modo reclamar , use
sudo aa-complain /path/to/bin, em que/path/to/biné a pastabindos programas. Por exemplo, em execução: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 em modos de reclamação / imposição com
sudo aa-complain /etc/apparmor.d/*esudo aa-enforce.d/*, respectivamente.
Para carregar um perfil no kernel, você usaria apparmor_parser . Você pode recarregar os perfis usando o parâmetro -r .
-
Para carregar um perfil, use:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a, que efetivamente imprime o conteúdo deprofile.nameno analisador do Apparmor. -
Para recarregar um perfil, use o parâmetro
-r, assim: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, vincule-o a /etc/apparmor.d/disable/ usando ln da seguinte forma: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ , em seguida, execute: sudo apparmor_parser -R /etc/apparmor.d/profile.name .
NOTA: Não confunda apparmor_parser -r com apparmor_parser -R NÃO SÃO A MESMA COISA!
-
Para reativar um perfil, remova o link simbólico para ele em
/etc/apparmor.d/disable/e carregue-o usando o parâmetro-a.sudo rm /etc/apparmor.d/disable/profile.namecat /etc/apparmor.d/profile.name | sudo apparmor_parser -a -
Você pode desativar o Apparmor com
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 em /etc/apparmor.d/ e são nomeados após o caminho completo para o executável que eles criam, substituindo '/' por '.'. Por exemplo, /etc/apparmor.d/bin.ping é o perfil para ping em /bin .
Existem dois tipos principais de entradas usadas nos perfis:
-
Entradas de caminho determinam quais arquivos um aplicativo pode acessar.
As entradas -
Capability determinam quais privilégios um processo pode usar.
Vamos ver o perfil de ping , localizado em etc/apparmor.d/bin.ping , como 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 , o que permite que instruções pertencentes a vários aplicativos sejam colocadas em um arquivo comum.
/bin/ping flags=(complain) define o caminho para o programa analisado e define o modo para reclamar.
capability net_raw permite que o aplicativo acesse a capacidade CAP_NET_RAW Posix.1e .
/bin/ping mixr permite que o aplicativo leia e execute o acesso ao arquivo.
/etc/modules.conf r, O r fornece os privilégios de leitura do aplicativo para /etc/modules.conf
NOTA: Depois de criar / editar um perfil, você precisa recarregar o perfil para que as alterações entrem em vigor.
Aqui está uma lista de permissões que você pode usar:
-
r- leia -
w- escreva -
ux- Execução sem restrições -
Ux- Executar sem restrições - esfregue o ambiente -
px- Perfil discreto executado -
Px- Perfil discreto execute - esfregue o ambiente -
ix- herda a execução -
m- permitePROT_EXECcommmap(2)chamadas -
l- link
FONTES:
link