AppArmor
O que é AppArmor?
AppArmorSistema de controlo de acesso obrigatório baseado em caminhos para Linux, usado pelo Ubuntu e pela SUSE como alternativa mais simples ao SELinux para confinar programas individuais.
O AppArmor é um Linux Security Module (LSM) que impõe controlo de acesso obrigatório através de perfis por programa expressos em termos de caminhos de ficheiro, capabilities e primitivas de rede, em vez das etiquetas de inode usadas pelo SELinux. Originário do Immunix e mantido pela SUSE e pela Canonical, o AppArmor é a framework MAC predefinida no Ubuntu e no openSUSE desde o final da década de 2000 e faz parte do kernel principal desde a versão 2.6.36. Os perfis residem em /etc/apparmor.d e podem ser carregados em modo enforce ou complain (apenas registo), com auxiliares como aa-genprof, aa-logprof e aa-easyprof. O seu desenho baseado em caminhos costuma ser mais fácil de escrever e auditar do que a política do SELinux, à custa de uma semântica mais fraca perante mudanças de nome, bind mounts e chroots.
Em contentores, o Docker gera e carrega um perfil docker-default em tmpfs para cada contentor em modo enforce, salvo se for substituído com --security-opt apparmor=; este bloqueia escritas em caminhos sensíveis como /proc/sysrq-trigger e /sys, atuando em conjunto com o seccomp e a remoção de capabilities como defesa em profundidade. O AppArmor é também usado pelo snapd, libvirt, LXD e Firefox. Os seus limites são reais: como as regras correspondem a caminhos e não ao objeto subjacente, os hard links e os truques de montagem podem por vezes contornar um perfil, e um perfil só é tão bom quanto as suas regras — globs demasiado abrangentes (por exemplo, permitir /** rwk) anulam todo o propósito. A CVE-2019-5736 (a sobrescrita do binário host do runc) ilustrou que as fugas de contentor podem ocorrer em áreas que um perfil predefinido não cobre, razão pela qual o AppArmor é combinado com seccomp, espaços de nomes de utilizador e montagens só de leitura, em vez de se confiar nele isoladamente.
flowchart TB
P[Execução de processo] --> K[Hook LSM do kernel]
K --> Q{Perfil carregado?}
Q -- No --> U[Não confinado: DAC normal]
Q -- Yes --> M{Ação no perfil?}
M -- Modo enforce --> R{Permitida?}
R -- Yes --> A[Permitir]
R -- No --> D[Negar + registo de auditoria]
M -- Modo complain --> L[Permitir + registar violação]Um fluxo de trabalho típico executa um novo perfil em modo complain, exercita a aplicação e depois usa aa-logprof para transformar os acessos registados em regras antes de passar para enforce.
● Exemplos
- 01
O Ubuntu inclui por predefinição perfis AppArmor para Firefox, MySQL e Evince.
- 02
O snapd usa AppArmor (além de seccomp) para confinar cada pacote snap instalado.
● Perguntas frequentes
O que é AppArmor?
Sistema de controlo de acesso obrigatório baseado em caminhos para Linux, usado pelo Ubuntu e pela SUSE como alternativa mais simples ao SELinux para confinar programas individuais. Pertence à categoria Criptografia da cibersegurança.
O que significa AppArmor?
Sistema de controlo de acesso obrigatório baseado em caminhos para Linux, usado pelo Ubuntu e pela SUSE como alternativa mais simples ao SELinux para confinar programas individuais.
Como se defender contra AppArmor?
As defesas contra AppArmor costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para AppArmor?
Nomes alternativos comuns: AA.