Selinux 总结
总结
1.Selinux 是MAC(强制访问控制)的一种实现方式。
2.Selinux 有两种模式
Enforcing模式,强制模式。不符合selinux要求的访问,将会被阻止
Permissive模式 ,宽容模式。 宽容模式下,会记录没有权限的访问,但是不会阻止。
Android5.0 系统,默认使用的 Permissive模式。 从Android6.0开始,使用了Enforcing模式
在adb 中,对两种模式进行切换。 setenforce 0 --> Permissive ; setenforce 1 -->Enforcing 模式。
getenforce 查看当前的系统模式。
3.Selinux 中的两个重要概念,一个是Security Context ,另外一个是 te 规则
3.1 在selinux 中,分为 Subject, 其通常称为主体,通常为Process 进程。Object 称其为客体。通常为file 等 “死”的东西
3.2 te 规则中,规定了Subject 对Object的访问限制。
4. Selinux 在Android 系统中,包含了userspace 和kernel space 两块的内容,二者都启动的selinux 的一些检查。
5.Selinux 在Kernel 中,是基于LSM( Linux security module)安全模块进行实现的。 LSM 是从linux2.6开始引进到linux中的。 是一个通用的安全模块。 其目录位于 linux/security/ 下。 除了selinux ,还有apparmor等模块。
6.LSM 是采用Hook(钩子)的方式,存在于linux系统中。 对系统调用的关键点,进行hook。
7.Selinux 在Android 的root中,存在4个文件,分别是 file_context,seapp_context.service_context.sepolicy.
前3个文件,是对系统中 的文件,目录进行设置securty context. 第四个文件是一个二进制文件,里边是allow 语句。
会最终通过/sys/sepolicy/load 这个接口。传递给kernel 的selinux 中。
TODO:
selinux lsm 模式,
hook机制
selinux type enforcement的编写规则