avc log分析:

SeLinux的AVC log的详细分析 eg:

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

整体翻译:SELinux拒绝PID为6591且httpd_t类型的httpd进程从nfs_t类型的目录读取数据。

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

整体翻译:SELinux禁止PID为2465的httpd进程访问samba_share_t类型的/var/www/html/file1文件,除非配置为其他类型,否则httpd_t域中的进程不能访问该文件。

各个参数详解

type=AVC

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

msg=audit(1363289005.532:184)

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

avc:

日志类型,这里有些重复了。SELinux 执行并记录在访问向量缓存 (AVC) 中的操作

denied

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

{ read }

被拒绝的动作。有getattr, read,write.等。本例中是一个读请求。有时请求的类型可能不止一个,比如{ 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支持的类型很多,比如文件、套接字或者信号量等等。

scontext="unconfined_u:system_r:httpd_t:s0" - 尝试拒绝操作的进程(源)的 SELinux 上下文。 在这种情况下,它是使用 httpd_t 类型运行的 Apache HTTP 服务器的 SELinux 上下文。

tcontext="unconfined_u:object_r:samba_share_t:s0" - 进程试图访问的对象(目标)的 SELinux 上下文。 在这种情况下,它是 file1 的 SELinux 上下文。

安全上下文详细内容:

MLS SELinux策略使用16个灵敏度级别。S0-S15:S0是最不敏感的,S15最敏感。

这意味着用户可以在他们自己的敏感级别或更低级别读取文件,但只能在他们自己的级别上写入。

MLS 环境中非特权用户的安全上下文是,例如:

user_u:user_r:user_t:s1

其中: user_u 是 SELinux 用户。

user_r 是 SELinux 角色。

user_t 是 SELinux 类型。

s1 是 MLS 灵敏度级别。

身份字段(user)用于标识该数据被哪个身份所拥有,相当于权限中的用户身份。这个字段并没有特别的作用,知道就好。常见的身份类型有以下 3 种:

  1. - root:表示安全上下文的身份是 root。
  2. - system_u:表示系统用户身份,其中“_u”代表 user。
  3. - user_u:表示与一般用户账号相关的身份,其中“_u”代表 user。

2) 角色(role)主要用来表示此数据是进程还是文件或目录。这个字段在实际使用中也不需要修改,所以了解就好。常见的角色有以下两种:

  • - object_r:代表该数据是文件或目录,这里的“_r”代表 role。
  • - system_r:代表该数据是进程,这里的“_r”代表 role。

3) 类型(type)类型字段是安全上下文中最重要的字段,进程是否可以访问文件,主要就是看进程的安全上下文类型字段是否和文件的安全上下文类型字段相匹配,如果匹配则可以访问。注意,类型字段在文件或目录的安全上下文中被称作类型(type),但是在进程的安全上下文中被称作域(domain)。也就是说,在主体(Subject)的安全上下文中,这个字段被称为域;在目标(Object)的安全上下文中,这个字段被称为类型。域和类型需要匹配(进程的类型要和文件的类型相匹配),才能正确访问。

httpd_t - 进程的 SELinux 类型

nfs_t - 受进程操作影响的对象的 SELinux 类型

参考文档链接:

SELinux安全上下文查看方法(超详细) 第18章

SELinux使用及审计日志解释_安科网

SeLinux 的avc log解读相关推荐

  1. 使用audit2allow工具来根据avc log生成selinux规则

    audit2allow工具是google提供的一个原生的python脚本工具,可以根据avc权限错误log信息自动生成selinux规则.使用方法如下: 1.首先抓取设备启动的logcat或者dmes ...

  2. selinux运行程序Permission denied,无avc log

    当在宽容模式下运行程序,解决了avc的遇到denied信息后,在强制模式下运行同一个程序却发生Permission denied,且无AVC denied信息产生. 最后发现是AVC msg没有打印出 ...

  3. Oracle-Listener log解读

    Listener log 概述 在ORACLE数据库中,如果不对监听日志文件(listener.log)进行截断,那么监听日志文件(listener.log)会变得越来越大. Listener log ...

  4. gc android,Android GC Log解读

    写在前面 英文原版链接,若是觉得本文哪里不好还请指出,以便及时修改,以下是译文 安卓是为移动设备设计的,所以开发者应该时刻留意app占用的RAM(Random-Access Memory).尽管Dal ...

  5. Oracle-Alert log解读

    Alert log概述 告警日志文件是一类特殊的跟踪文件(trace file). 告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称. 数据库告 ...

  6. Android 修改 SELinux avc 权限的方法

    系统版本:Android 11.0     平         台:RK3568 在 Android 系统的开发及适配过程中,我们常常需要对 SELinux avc  权限进行修改,以下是我对 SEL ...

  7. 解读Android LOG机制的实现:(1)LOG的实现架构

    解读Android LOG机制的实现:(1)LOG的实现架构 田海立@CSDN 2011/07/24 Android提供了用户级轻量的LOG机制,它的实现贯穿了Java,JNI,本地c/c++实现以及 ...

  8. 2022-07-20 Android 11 SELinux avc 修改sys目录下面某个节点的权限

    一.我这里有/sys/devices/platform/thermal-camera-control/powerenable 这样一个节点,用命令ls -Z 查看该文件的域. 二.我现在在一个普通ap ...

  9. android avc格式,Android权限 - avc权限问题

    1.一般来说,如何确认是Selinux权限引起的问题? 通过命令adb shell getenforce,查看Selinux状态 adb shell getenforce Enforcing  //1 ...

最新文章

  1. 取出json中的数据php,怎么从Json中取出数据放到一个新组中
  2. 区块链相关论文研读6: FASTKITTEN,关于比特币的实用智能合约
  3. 计算机的命令函数,数学建模的常用的命令和基本函数..doc
  4. 输入A、B,输出A+B
  5. MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排
  6. 漫画:什么是鸡尾酒排序
  7. 网页中如何使用一些特殊字体
  8. 前端学习(2057):vue.js的安装方法
  9. 海龟交易法则14_掌控心魔
  10. iOS开发之段落文字排版的属性与细节
  11. 转:Maven通俗讲解
  12. .text urlRewrite介绍
  13. 课题申报书范文_高等学校教改课题申报书范文
  14. linux下使用小票打印
  15. java 环境变量 locale_locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别
  16. UI设计师主要做什么 工作内容大致有哪些
  17. jqury ajax 直接获取数据库信息,使用jQuery Ajax从数据库加载信息
  18. 饮食男女,人之大欲--nbsp;《饮食…
  19. 中国女足,中国女垒,中国女排,舒米,让我欢喜让我忧
  20. json spr路驾驶技术视频api_TED视频下载及API接口

热门文章

  1. 4月全球十大最畅销智能手机榜:苹果三星霸榜,中国仅有一款机型上榜 | 美通社头条...
  2. discord 自动水群脚本
  3. Python绘制单数据系列柱状图、多数据系列柱状图、堆积柱状图、百分比堆积柱状图
  4. vue iframe高度自适应
  5. 做交互应该知道的视觉几件事
  6. 修改主机名和ip地址之后需重新reconfigure GI
  7. 9名程序员被抓!接私活要注意了
  8. 如何下载Centos的内核源代码
  9. Python学习笔记9——bug
  10. centos 7 jenkins一健发布asp.net项目