1 、audit2why 命令用来分析 audit.log 日志文件,并分析 SELinux 为什么会拒绝进程的访问。也就是说,这个命令显示的都是 SELinux 的拒绝访问信息,而正确的信息会被忽略。命令的格式也非常简单,如下:
[root@localhost ~]# audit2why < 日志文件名
例如:
[root@localhost ~]# audit2why < /var/log/audit/audit.log type=AVC msg=audit(1370412789.400:858): avc: denied { getattr ) for pid=25624 comm="httpd" path="/var/www/htirl/index.html" dev=sda3 ino=918426 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file #这条信息的意思是拒绝7 PID 是 25624的进程访间"/var/uww/html/Index.html",原因是主体的安全上下文和目标的安全上下文不匹配。
#其中,denied代表拒绝,path指定目标的文件名,scontext代表进程的安全上下文。tcontext代表目标的安全上下文,
#仔细看看,其实就是主体的安全上下文类型httpd_t和目标的安全上下文类型var_t不匹配导致的 Was caused by: Missing type enforcement (TE) allow rule. You can use audit2allow to generate a loadable module to allow this access. #给你的处理建议是使用audi t2allow命令来再次分析这个曰志文件
2 、audit2allow 命令的作用是分析日志,并提供允许的建议规则或拒绝的建议规则。这么说很难理解,我们还是尝试一下吧,命令如下:
[root@localhost ~]# audit2allow -a /var/log/audit/audit.log #选项-a:指定日志文件名 #============= httpd_t ============== allow httpd_t var_t:file getattr; #提示非常简单,我们只需定义一个规则,允许httpd_t类型对var_t类型拥有getattr权限,即可解决这个问题
3 、sealert命令
sealert 命令是 setroubleshoot 客户端工具,也就是 SELinux 信息诊断客户端工具。虽然 setroubleshoot 服务已经不存在了,但是 sealert 命令还是可以使用的。命令格式如下:
[root@localhost ~]# sealert [选项] 日志文件名
选项:
- -a:分析指定的日志文件;