kb.erickguedes.com
Linux Segurança: Hardening e Proteção

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:

ModoComportamento
EnforcingAplica políticas, nega violações
PermissiveLoga violações mas não bloqueia
DisabledSELinux 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

AspectoSELinuxAppArmor
PolíticaLabel-based (todos os objetos)Path-based (arquivos)
ComplexidadeAltaMédia
Manutençãoaudit2allow + semoduleaa-genprof + aa-logprof
Padrão emRHEL/Fedora/CentOSUbuntu/Debian/SUSE

MAC é a camada mais crítica de defesa. Configure SELinux ou AppArmor — nunca desabilite em produção.