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.
From the audit2allow(1) manual page: "audit2allow - generate SELinux policy allow rules from logs of denied operations"[18]. After analyzing denials as per Sección 7.3.7, “Mensajes sealert”, and if no label changes or Booleans allowed access, use audit2allow to create a local policy module. After access is denied by SELinux, running the audit2allow command presents Type Enforcement rules that allow the previously denied access.
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)
    
    
    In this example, certwatch (comm="certwatch") was denied write access ({ write }) to a directory labeled with the var_t type (tcontext=system_u:object_r:var_t:s0). Analyze the denial as per Sección 7.3.7, “Mensajes sealert”. If no label changes or Booleans allowed access, use audit2allow to create a local policy module.
  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

Refer to Dan Walsh's "Using audit2allow to build policy modules. Revisited." blog entry for further information about using audit2allow to build policy modules.


[18] From the audit2allow(1) manual page, as shipped with the policycoreutils package in Fedora 13.