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:分析指定的日志文件;