selinux简要说明

selinux是一种主动访问控制机制,采用域-标签的访问控制模型。任意的访问都可以看成主体对于客体的访问。

那么只需要对主体和客体进行适当的标签配置,并对访问操作等进行定义,就可以对访问进行控制。例如:

allow type_a type_b:file { open read };

该条规则就是声明允许标记为type_a的主体,可以对标记为type_b的客体进行{open read}的文件访问。

selinux对所有未被声明的访问动作,默认拒绝。因此,也可以说selinux是一种白名单的访问控制方式。

 

selinux语法说明

主要关键字

type:用于定义标签

attribute:用于定义集合

allow:用于添加访问权限

neverallow:用于添加禁止访问规则

neverallow取反规则:neverallow accesstoken_service accesstoken_data_file:dir ~{ create search add_name open read write remove_name ioctl } 大括号内规则以外的不允许

 

avc日志解读:

avc: denied { read open } for pid=4838 comm="sh" path="/system/bin/bm" dev="mmcblk0p29" ino=193 scontext=u:r:console:s0 tcontext=u:object_r:bm_exec:s0 tclass=file permissive=1

{ read open }:操作为read、open

pid:访问主体进程号

comm:访问主体进程名

path:被访问客体

dev:被访问文件属于mmcblk0p29文件系统

ino:文件节点编号

scontext:访问主体selinux标签为u:r:console:s0

tcontext:被访问客体selinux标签为u:object_r:bm_exec:s0

tclass:当前告警属于file类型的操作

permissive=1:当前selinux处于宽容模式,只告警不做访问拦截

 

avc日志转换策略

根据内核日志的avc告警,获取访问信息,如:

avc: denied { read open } for pid = 1234 comm="setenforce" path="/sys/fs/selinux/enforce" dev="selinuxfs" ino=4 scontext=u:r:hdcd:s0 tcontext=u:object_r:selinuxfs:s0 tclass=file permissive=1

对应规则为

allow hdcd selinuxfs:file { read open }; //allow 主体 客体:tclass类 { 操作 }

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐