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 pastabin
dos programas. Por exemplo, em execução:sudo aa-complain /usr/bin/firefox
colocará o Firefox no modo de reclamação. -
Você usa
sudo aa-enforce /path/to/bin
para 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.name
no 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.name
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
-
Você pode desativar o Apparmor com
sudo service apparmor stop
e remover o módulo do kernel usandosudo update-rc.d -f apparmor defaults
-
Inicie o Apparmor com
sudo service apparmor start
e 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_EXEC
commmap(2)
chamadas -
l
- link
FONTES:
link