audit2allow
.
audit2allow
- generate SELinux policy allow rules from logs of denied operations"[17]. After analyzing denials as per Section 8.3.7, “sealert Messages”, 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.
audit2allow
to create a policy module:
/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)
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 Section 8.3.7, “sealert Messages”. If no label changes or Booleans allowed access, use audit2allow
to create a local policy module.
certwatch
denial in step 1, run the audit2allow -w -a
command to produce a human-readable description of why access was denied. The -a
option causes all audit logs to be read. The -w
option produces the human-readable description. The audit2allow
tool accesses /var/log/audit/audit.log
, and as such, must be run as the Linux root user:
# 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.
audit2allow -a
command to view the Type Enforcement rule that allows the denied access:
# audit2allow -a #============= certwatch_t ============== allow certwatch_t var_t:dir write;
Red Hat Enterprise Linux
product, and select the selinux-policy
component. Include the output of the audit2allow -w -a
and audit2allow -a
commands in such bug reports.
audit2allow -a
, run the audit2allow -a -M mycertwatch
command as the Linux root user to create custom module. The -M
option creates a Type Enforcement file (.te
) with the name specified with -M
, in your current working directory:
# audit2allow -a -M mycertwatch ******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i mycertwatch.pp # ls mycertwatch.pp mycertwatch.te
audit2allow
compiles the Type Enforcement rule into a policy package (.pp
). To install the module, run the /usr/sbin/semodule -i mycertwatch.pp
command as the Linux root user.
audit2allow
may allow more access than required. It is recommended that policy created with audit2allow
be posted to an SELinux list, such as fedora-selinux-list, for review. If you believe their is a bug in policy, create a bug in Red Hat Bugzilla.
grep
command to narrow down the input for audit2allow
. The following example demonstrates using grep
to only send denials related to certwatch
through 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
audit2allow
to build policy modules.
[17] From the audit2allow(1) manual page, as shipped with the policycoreutils package in Red Hat Enterprise Linux 6.