机制,Android点滴——SELinux机制"/>
linux内核te机制,Android点滴——SELinux机制
安卓需要补的还真多,越多看越觉得欠缺的多。
在看android
property机制时涉及到的,然后搜了一下,相关的知识还蛮多,所以打算新开一篇。
=======2017.3.1更=====================
在开题之前,先来说下LSM:linux security
modules。它是linux内核子系统,是将内核以模块形式集成到各种安全模块中。selinux不是唯一一个用于增强linux安全性的安全系统。
[我也注意到安卓系统中kernel/security目录下包括aapparmor,
smack, tomoyo, yama等,这些是官方支持的安全模块]
lsm的初始化阶段发生在系统内核的初始化阶段。init/main.c的start_kernel()函数中启动一系列内核模块,其中安全模块的初始化调用为security_init(),实现在security/security.c中,主要的3件事:
security_fixup_ops(&default_security_ops);//设置默认安全操作对象中的钩子函数;
security_ops=&default_security_ops;//将ops值赋给全局变量,即主体访问客体时应用的安全操作对象。在内核配置表中选socket
and networking security
hooks,会产生config_security_network,当无具体的安全策略注册时,系统调用default_security_ops的成员函数。
do_security_initcalls();//调用各个安全策略的注册函数,eg:security_initcall(smack_init)-/security/smack/smack_lsm.c:smack安全策略
=================================
看代码时,注意到restorecon在开始时被多次调用:原来它是用来恢复selinux文件属性即恢复文件的安全上下文。上下文是啥,其实就是针对文件系统设置标签。
搜了好多,还是决定认真看下老罗的那篇[2].
[3]也应该好好看下。。[待补]
...待补充
==============2017.1.17更================
先来看下SELinux安全机制的发展:dac-mac。
DAC: discretionary access
control
MAC:mandatory access
control
前者核心是:进程理论上的权限和执行它的用户权限相同;
后者哲学是:任何进程想在selinux中干任何事,都必须现在安全策略配置文件中赋予权限。
SELinux在dac的基础上增加了mac。
selinux中用户与linux中的不同,selinux中用户是由selinux安全策略的制定者来决定的。
要想理解该SELinux机制,先要了解其中重要的策略文件的实现--SELinux
policy语言编码。
[4]中内容可以具体学习下。
关于sepolicy语言:
“语法是gnu m4, 是unix系统的宏处理器,
跟C的宏类似。”
android4.4引入service_contexts,
servicemanager使用该文件决定是否容许查找、增加某个binder service。
“所有的domain进程都有service_manager_type
类型的find权限”
selinux机制确实很复杂,TE负责type和domain的检查,但是没有role/user的检查,selinux解决了te没解决的问题。
[完了可以放上笔记图...]
关于reference monitor:
在selinux中重要的一个概念是reference
monitor(rm),这个是个什么东西呢?
在reference
monitor中,系统将被动的资源分为不同的客体object例如文件,主动的实例例如运行的程序分为不同的主体subject。
而rm是通过policy例如一些accesscontrol
rules操作这些主客体之间的有效访问。
在mls模型中,所有的主体和客体都被打了security
level的标签。Level展示的是relative sensitivity
ofthe data and the clearance of the user.
[注]参考:
[1]
[2]
[3]/
[4]
[5]
[6]
[7].html
更多推荐
linux内核te机制,Android点滴——SELinux机制
发布评论