SELinux使用及审计日志解释

虽然在测试环境我们经常将SELinux关闭,但在生产环境SELinux通常是必须要打开的。但是目前很多同学对SELinux知之甚少,因此本号解释一下关于SELinux的相关内容。

更多关于SELinux及Linux权限管理的内容请参考下面专栏。

SELinux的配置管理与关键文件

如果想开启SELinux特性,只需要将配置文件/etc/selinux/config中的SELINUX的值改为enforcing即可。修改完成后重启计算机SELinux就生效了。

SELinux的管理与模式

可以通过/etc/selinux/config文件中的配置项实现对SELinux的管理,包括启动、停止和修改策略类型等。

SELinux使用及审计日志解释

如图所示,这里有2个配置项,也就是SELINUX和SELINUXTYPE。其中SELINUX表示SELinux的启用状态,可以有3种模式。

  • Enforcing: 此选项会在系统上启用并实施 SELinux 的安全性政策,拒绝存取及记录审计日志
  • Permissive: 在 Permissive 模式下,SELinux 会被启用但不会实施安全性政策,而只会发出警告及记录审计日志
  • Disabled: 该选项表示SELinux 处于非工作状态

SELinux的类型

从上述配置文件还可以看出SELinux有2中类型,分别是targeted和mls。目前SELinux默认使用targeted类型。前文我们介绍过,对于SELinux最主要的是有一个策略数据库,而这里targeted就是一个具体的策略数据库。如果深入到该目录内部(/etc/selinux/targeted/modules/active/),就可以看到这里面有很多策略文件。

为了让大家有个感性的认识,我们将SELinux相关的目录树列在这里。这里面核心的地方有两个,一个是config配置文件,另外一个是目录targeted下面的所有内容。

SELinux使用及审计日志解释

SELinux的审计日志

在开启SELinux的情况下,如果某些组件对资源的访问没有权限,则会出现如下格式的日志。日志文件的路径为/var/log/auditor/auditor.log。

type=AVC msg=audit(1363289005.532:184): avc: denied { read } for pid=29199 comm="Trace" 
name="online" dev="sysfs" ino=30 scontext=staff_u:staff_r:googletalk_plugin_t 
tcontext=system_u:object_r:sysfs_t tclass=file

初次看到该日志时通常是一脸懵逼,不知道该日志想表达什么意思。

SELinux使用及审计日志解释

下面我们分别解释一下该日志中各个条目的含义。这样大家在日后遇到类似问题的时候就可以进行分析,并找到解决问题的方法。能够知其然,并且知其所以然。

type=AVC

日志类型,该日志仅仅在audit.log文件中现实,它告诉用户该审计日志的具体类型。本例中类型为AVC。

msg=audit(1363289005.532:184)

时间戳,起始于1970年1月1日的记秒数。当然,我们可以通过date命令将其转换为墙钟时间。具体放入如下:

date -d @1363292159.532

avc:

日志类型,这里有些重复了。

denied

SELinux采取的动作,可以是denied或者granted。如果系统配置的是permissive模式,那么虽然SELinx会放行,但在审计日志中仍然是denied。

{ read }

请求获得的许可。本例中是一个读请求。有时请求的类型可能不止一个,比如{ read write },但通常只有一个。

for pid=29199

期望获取许可的进程ID信息。

comm="Trace"

进程的名称。有些进程是非常住进程,这时后我们无法获得进程的ID,因此可以通过该参数获得具体是那个进程。

name="online"

目标的名称,本例中是一个文件名称。

dev="sysfs"

目标所位于的设备。本例中我们知道文件所在的位置应该是/sys目录

ino=30

目标文件的inode id。可以根据该id获得文件的具体路径。

scontext=staff_u:staff_r:googletalk_plugin_t

源上下文,进程(访问者)的安全上下文。这里其实就是关于SELinux访问者的标签信息,SELinux正是根据源和目的标签及策略来实现访问控制的。

tcontext=system_u:object_r:sysfs_t

目的上下文,目标资源(被访问者)的安全上下文。

tclass=file

目标的类型,本例是文件。SELinux支持的类型很多,比如文件、套接字或者信号量等等。

本文对SELinux的使用和审计日志做了简要的介绍,更多的内容还请关注如下专栏,里面会介绍的更加细致。

相关推荐