Product SiteDocumentation Site

7.3.8. Permitiendo el Acceso: audit2allow

No use el ejemplo en esta sección en producción. Se usa sólo para mostrar el uso de audit2allow.
De la página de manual de audit2allow(1): "audit2allow - genera reglas para habilitar de la política de SELinux a partir de operaciones negadas"[19]. Después de analizar las negaciones como en Sección 7.3.7, “Mensajes sealert”, y si ningún cambio de etiqueta o de Booleano permitió el acceso, use audit2allow para crear un módulo de política local. Después de que el acceso es negado por SELinux, ejecutando el comando audit2allow presenta reglas de Obligación de Tipo que permitirían el acceso previamente negado.
El siguiente ejemplo muestra el uso de audit2allow para crear un módulo de política:
  1. Una negación y la llamada al sistema asociado se graban en /var/log/audit/audit.log:
    type=AVC msg=audit(1226270358.848:238): avc:  denied  { write } for  pid=13349 comm="certwatch" name="cache" dev=dm-0 ino=218171 scontext=system_u:system_r:certwatch_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=dir
    
    type=SYSCALL msg=audit(1226270358.848:238): arch=40000003 syscall=39 success=no exit=-13 a0=39a2bf a1=3ff a2=3a0354 a3=94703c8 items=0 ppid=13344 pid=13349 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="certwatch" exe="/usr/bin/certwatch" subj=system_u:system_r:certwatch_t:s0 key=(null)
    
    En este ejemplo, a certwatch (comm="certwatch") se le negó el acceso de escritura ({ write }) a un direcotiro etiquetado con el tipo var_t (tcontext=system_u:object_r:var_t:s0). Analice la negación como en Sección 7.3.7, “Mensajes sealert”. Si no hay cambios de etiquetas o Boleanos que permitan el acceso, use audit2allow para crear un módulo de política local.
  2. Con una negación grabada, tal como la negación de certwatch en el paso 1, corra el comando audit2allow -w -a para producir una descripción legible al humano sobre por qué el acceso fue negado. La opción -a hace que se lean todos los registros de autidoría. La opción -w produce una descripción legible al humano. La herramienta audit2allow accede a /var/log/audit/audit.log, y como tal, debe ser ejecutada como usuario root de Linux:
    # audit2allow -w -a
    type=AVC msg=audit(1226270358.848:238): avc:  denied  { write } for  pid=13349 comm="certwatch" name="cache" dev=dm-0 ino=218171 scontext=system_u:system_r:certwatch_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=dir
            Was caused by:
                    Missing type enforcement (TE) allow rule.
    
            You can use audit2allow to generate a loadable module to allow this access.
    
    Como se muestra, el acceso fue negado debido a que falta una regla de Obligación de Tipo.
  3. Ejecute el comando audit2allow -a para ver la regla de Obligación de Tipo que permite el acceso negado:
    # audit2allow -a
    
    
    #============= certwatch_t ==============
    allow certwatch_t var_t:dir write;
    

    Importante

    La falta de reglas de Ejecución de Tipos son usualmente causados por errores en la política de SELinux, y deben ser informadas en el Bugzilla de Red Hat. Para Fedora, crear informes sobre el producto Fedora, y seleccione el componente selinux-policy. Incluya la salida de los comandos audit2allow -w -a y audit2allow -a en el informe del error.
  4. Para usar la regla mostrada por audit2allow -a, ejecute el comando audit2allow -a -M mycertwatch como usuario root de Linux. La opción -M crea un archivo de Obligación de Tipo (.te) con el nombre especificado en -M, en su directorio actual de trabajo:
    # audit2allow -a -M mycertwatch
    
    ******************** IMPORTANT ***********************
    To make this policy package active, execute:
    
    semodule -i mycertwatch.pp
    
    # ls
    mycertwatch.pp  mycertwatch.te
    
    También, audit2allow compila la regla de Obediencia de Tipo en un paquete de política (.pp). Para instalar el módulo, ejecute el comando /usr/sbin/semodule -i mycertwatch.pp como usuario root de Linux.

    Importante

    Los módulos creados con audit2allow pueden permitir más acceso que el requerido. Se recomienda que la política creada con audit2allow sea enviada a una lista de SELinux, tal como fedora-selinux-list, para su revisión. Si cree que hay un error en la política, informe un error en Bugzilla de Red Hat.
Si tiene múltiples negaciones de múltiples procesos, pero solo quiere crear una política personalizada para un proceso único, use el comando grep para una búsqueda más refinada de audit2allow. El siguiente ejemplo muestra el uso de grep para sólo enviar negaciones de certwatch a audit2allow:
# grep certwatch /var/log/audit/audit.log | audit2allow -M mycertwatch2
******************** IMPORTANT ***********************
To make this policy package active, execute:

# /usr/sbin/semodule -i mycertwatch2.pp
Vaya a la entrada blog "Uso de audit2allow para construir módulos de políticas. Revisado." de Dan Walsh para información adicional sobre el uso de audit2allow para construir módulos de políticas.


[19] De la página man de audit2allow(1), tal como fue incluida en el paquete policycoreutils en Fedora 11.