5.5. 审计日志中的 SELinux 拒绝
Linux Audit 系统默认将日志条目存储在 /var/log/audit/audit.log
文件中。
要仅列出与 SELinux 相关的记录,请使用 ausearch
命令,并将 message type 参数设置为 AVC
和 AVC_USER
,例如:
# ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR
审计日志文件中的 SELinux 拒绝条目类似如下:
type=AVC msg=audit(1395177286.929:1638): avc: denied { read } for pid=6591 comm="httpd" name="webpages" dev="0:37" ino=2112 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
这个条目最重要的部分是:
-
avc: denied
- SELinux 执行的操作,并在 AVC 中记录 -
{ read }
- 被拒绝的操作 -
pid=6591
- 试图执行被拒绝操作的主体的进程识别符 -
comm="httpd"
- 用于调用分析进程的命令名称 -
httpd_t
- 进程的 SELinux 类型 -
nfs_t
- 受进程操作影响的对象的 SELinux 类型 -
tclass=dir
- 目标对象类
以前的日志条目可转换为:
SELinux 拒绝 PID 为 6591、以及从带有 nfs_t
类型的目录进行读取的 httpd_t
类型的 httpd
进程
当 Apache HTTP 服务器试图访问使用 Samba 套件类型标记的目录时,会出现以下 SELinux 拒绝信息:
type=AVC msg=audit(1226874073.147:96): avc: denied { getattr } for pid=2465 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file
-
{ getattr }
-getattr
条目表示源进程正在尝试读取目标文件的状态信息。这在读取文件前发生。SELinux 会拒绝这个操作,因为进程会访问该文件,且没有适当的标签。通常的权限包括getattr
,read
, 和write
。 -
path="/var/www/html/file1"
- 该进程试图访问的对象(目标)的路径。 -
scontext="unconfined_u:system_r:httpd_t:s0"
- 试图拒绝操作的进程(源)的 SELinux 上下文。在这种情况下,它是 Apache HTTP 服务器的 SELinux 上下文,它使用httpd_t
类型运行。 -
tcontext="unconfined_u:object_r:samba_share_t:s0"
- 试图访问的对象(目标)的 SELinux 上下文。在这种情况下,它是file1
的 SELinux 上下文。
这个 SELinux 拒绝信息可以被解释为:
SELinux 拒绝了 PID 为 2465 的 httpd
进程访问带有 samba_share_t
类型的 /var/www/html/file1
文件。除非有其他配置,在 httpd_t
域中运行的进程无法访问该文件。
其他资源
-
系统中的
auditd (8)
和ausearch (8)
手册页