Controle de Acesso Mandatório — SELinux e AppArmor
Aula 2 de 6
DAC vs MAC
- DAC (Discretionary Access Control): permissões Unix tradicionais (r/w/x)
- MAC (Mandatory Access Control): políticas do sistema que prevalecem sobre o dono
SELinux (Security-Enhanced Linux)
Modos:
| Modo | Comportamento |
|---|---|
| Enforcing | Aplica políticas, nega violações |
| Permissive | Loga violações mas não bloqueia |
| Disabled | SELinux desligado |
# Status
getenforce # Enforcing / Permissive / Disabled
sestatus # informações detalhadas
# Modos
setenforce 1 # Enforcing (imediato)
setenforce 0 # Permissive (imediato)
# /etc/selinux/config para permanente
SELINUX=enforcing
SELINUXTYPE=targeted
Contextos
ls -Z /var/www/html
# system_u:object_r:httpd_sys_content_t:s0
# Usuário:Role:Tipo:Nível
# O tipo (type) é o mais importante no targeted policy
chcon -t httpd_sys_content_t /var/www/html/index.html
restorecon -Rv /var/www/html # restaurar contexto padrão
Políticas e Logs
# Log de negações
ausearch -m avc -ts recent
ausearch -m avc -c httpd # por comando
sealert -l ID_DA_NEGACAO # análise human-readable
# Criar política personalizada
audit2allow -a -M mypol # gera módulo .pp
semodule -i mypol.pp
AppArmor (Ubuntu/Debian)
# Status
aa-status
apparmor_status
# Modos
aa-enforce /caminho/binario
aa-complain /caminho/binario
# Perfis (em /etc/apparmor.d/)
cat /etc/apparmor.d/usr.sbin.nginx
# Criar perfil (modo aprendizado)
aa-genprof /usr/sbin/nginx
# Em modo learn: executar a aplicação, depois aa-logprof
aa-logprof
Comparação
| Aspecto | SELinux | AppArmor |
|---|---|---|
| Política | Label-based (todos os objetos) | Path-based (arquivos) |
| Complexidade | Alta | Média |
| Manutenção | audit2allow + semodule | aa-genprof + aa-logprof |
| Padrão em | RHEL/Fedora/CentOS | Ubuntu/Debian/SUSE |
MAC é a camada mais crítica de defesa. Configure SELinux ou AppArmor — nunca desabilite em produção.