SELinux: Um importante aliado na Segurança de Servidores Linux (parte 3)

Muitas vezes, por diversas razões, não conseguimos impedir que o SELinux  interfira no funcionamento adequado de determinados softwares. Para solucionar casos deste tipo, podemos utilizar o audit2allow para entender melhor o problema ou para criar módulos de políticas para SELinux.

 

O primeiro passo é verificar os logs em /var/log/audit,log, que terá registros semelhantes a esse:

type=AVC msg=audit(1455199601.283:181376): avc:  denied  { setattr } for  pid=7489 comm=”mingetty” name=”tty6″ dev=devtmpfs ino=5354 scontext=system_u:system_r:getty_t:s0 tcontext=system_u:object_r:tmpfs_t:s0 tclass=chr_file
type=SYSCALL msg=audit(1455199601.283:181376): arch=c000003e syscall=92 success=no exit=-13 a0=7ffdf8b4b090 a1=0 a2=0 a3=7ffdf8b4acd0 items=0 ppid=1 pid=7489 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm=”mingetty” exe=”/sbin/mingetty” subj=system_u:system_r:getty_t:s0 key=(null)
type=AVC msg=audit(1455199606.148:181377): avc:  denied  { setattr } for  pid=7490 comm=”mingetty” name=”tty2″ dev=devtmpfs ino=5350 scontext=system_u:system_r:getty_t:s0 tcontext=system_u:object_r:tmpfs_t:s0 tclass=chr_file

Neste exemplo, SELinux está bloqueando a função “setattr”  para a  aplicação “mingetty”.  Iremos usar o audit2allow para criar um módulo de política SELinux para corrigir tal erros.

    Para gerar um relatórios “humano” dos eventos do SELinux, você pode utilizar o comando abaixo:
   # audit2allow -a 
    O comando acima irá analisar todos os registros contidos em /var/log/audit.log. Caso queira uma análise apenas para um erro específico, você pode usar o “grep” para filtrar os eventos:
   # grep “mingetty” /var/log/audit.log | audit2allow -w
    Para criar um modulo de política SELinux, utilze a opção “-M”:
   # audit2allow -a -M meumodulo
   Posso também utilizar o “grep”, como no exemplo anterior:
   # grep “mingetty” /var/log/audit.log | audit2allow -M meumodulo
   Ele irá criar um arquivo “.pp” e um .”te” no diretório corrente. Para instalar o módulo, você utilize o comando:
   # semodule -i meumodulo.pp

   Em seguinda, habilite o módulo:
   # semodule -e meumodulo

Referencia:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Fixing_Problems-Allowing_Access_audit2allow.html