OpenHarmony中SELinux使用详解
目录
1.SELinux简介
2.SELinux概念
3.SELinux模式
4.OH中SELinux使用详解
5.OH中SELinux报错分析
5.1 日志错误问题分析
5.2 新增节点权限问题
5.3 新增服务权限问题
1.SELinux简介
SELinux是Security Enhanced Linux 的缩写,也就是安全强化的 Linux,旨在增强传统Linux操作系统的安全性,解决传统Linux系统中自主访问控制(DAC)系统中的各种权限问题(如root权限过高等)。这里举一个例子便于理解,假设系统中某个服务进程出现了一个漏洞,使得某个远程用户可以访问系统的敏感文(如/etc/dev)。如果我们的Linux系统启用了SELinux,而查询SELinux策略得知,这个服务进程并不具备访问敏感文件(/etc/dev)的权限,所以这个远程用户通过这个进程访问敏感文件(/etc/dev)就会被SELinux所阻挡,起到保护Linux系统的作用。
2. SELinux基本概念
Linux操作系统的安全机制其实就是对两样东西做限制:进程和系统资源(文件、socket等)。linux操作系统是通过用户和组的概念来对我们的系统资源进行限制,每个进程都需要一个用户才能执行。在SELinux当中针对这两样东西定义了两个基本概念:域(domin)和上下文(context)。
我们可以通过ps -Z 命令来查看当前进程的域信息,也就是进程的SELinux信息:
LABEL PID TTY TIME CMD
u:r:sh:s0 10466 pts/1 00:00:00 sh
u:r:sh:s0 10468 pts/1 00:00:00 ps
通过ls -Z 命令,我们可以查看文件上下文信息,也就是文件的SELinux信息:
**# ls -Z
u:object_r:system_bin_file:s0 bin
u:object_r:rootfs:s0 chip_prod
u:object_r:vendor_file:s0 chipset
u:object_r:configfs:s0 config
u:object_r:data_file:s0 data
u:object_r:dev_file:s0 dev
u:object_r:system_etc_file:s0 etc
u:object_r:init_exec:s0 init
u:object_r:system_lib_file:s0 lib
3.SELinux的工作模式
下面通过这个图来说明,SELinux工作流程
可以从图中看出,需要关注的关键信息如下:
1)主体(Subject):指主动对其它实体施加动作的实体,例如进程、服务等。
2)策略(policy):权限策略,通过在te文件中配置对应的权限语句实现,权限策略以type或attribute作为执行对象。
3)安全上下文(Security Context):实际上就是一个附加在主体或客体上的标签。
4)目标(Object):是被动接受其他实体访问的实体,例如文件、系统属性等。
SELinxu工作的核心就是安全上下文。安全上下文是一组和进程或对象有关的安全属性,每一个进程或对象都会记录一条安全上下文,将其作为SELinux判断进程是否能读取对象的依据。安全上下文分为“进程安全上下文”和“文件安全上下文”。一个“进程安全上下文”一般对应多个“文件安全上下文”。
只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由策略中的规则决定。
文件安全上下文由文件创建的位置和创建文件的进程所决定。而且系统有一套默认值,用户也可以对默认值进行设定。需要注意的是,单纯的移动文件操作并不会改变文件的安全上下文。
SELinux有3种工作模式:
【enforcing】强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
【permissive】宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
【disabled】关闭 SELinux。
模式之间的临时切换,如需(【disabled】关闭)永久有效,还需要修改配置文件。
**# getenforce
Enforcing
**# setenforce 0
**# getenforce
Permissive
**# setenforce 1
**# getenforce
Enforcing
4.OH中SELinux使用详解
SELinux在OH中应用整体来说,功能和以上介绍的使用方法并无太大差别,只是在原生SELinux内核中做了部分驱动和文件系统的适配。目前码云社区上master分支以RK3568为例子做了适配并开启了SELinux,其他型号的设备需要自己做适配。
OpenHarmony SELinux的主代码仓:
https://gitee.com/openharmony/security_selinux_adapter
SELinux结构图: