selinux mode DAC and MAC

来源:互联网 发布:中行中银淘宝信用卡 编辑:程序博客网 时间:2024/06/06 01:28

1. SELinux and SEAndroid
   Android 是建立在标准的Linux Kernel 基础上, 自然也可以开启SELinux, 通常在通用移动平台上, 很少开启这样的安全服务, Google 为了进一步增强Android 的安全性, 经过长期的准备,目前已经在Android 5.0(L) 上有完整的开启SELinux, 并对SELinux 进行深入整合形成了SEAndroid.
   
2. SELinux 在Android 上的更新历史
 如下图所描述:



1. SELinux Mode.
   SELinux 分成两种模式, 即Permissve Mode(宽容模式), 和 Enfocing mode(强制模式).
   Permissive Mode 只通过Audit System 记录LOG, 但不真正拦截访问.
   Enforcing Mode 在打印LOG 的同时,还会真正的拦截访问.
   
   通常在调试时,我们会启用Permissive Mode, 以便尽可能的发现多的问题, 然后一次修正. 在真正量产时使用Enforcing mode, 来保护系统.


1. DAC and MAC

 DAC 即 Discretionary Access control, 自主访问控制, 即系统只提供基本的验证, 完整的访问控制由开发者自己控制。
 MAC 即 Mandatory Access control, 强制性访问控制, 即系统针对每一项访问都进行严格的限制, 具体的限制策略由开发者给出.
 
2. Linux DAC
   Linux DAC 采用了一种非常简单的策略, 将资源访问者分成三类, 分别是Owner, Group, Other; 资源针对这三类访问者设置不同的访问权限. 而访问权限又分成 read, write, execute.
   访问者通常是进程有自己的uid/gid, 通过uid/gid 和 文件权限匹配, 来确定是否可以访问.
   将Root 权限根据不同的应用场景划分成许多的Root Capabilities, 其中如果有CAP_DAC_OVERRIDE 这项的话, 可以直接绕过Linux DAC 限制.
   
   Linux DAC 有明显的不足, 其中一个重要点就是, Root 权限 “无法无天”, 几乎可以做任意事情, 一旦入侵者拿到root 权限, 即已经完全掌控了系统. 另外每一个进程默认都拿到对应这个用户的所有权限, 可以改动/删除这个用户的所有文件资源, 明显这个难以防止恶意软件.
   
3. Linux MAC
   Linux MAC 针对DAC 的不足, 要求系统对每一项访问, 每访问一个文件资源都需要进行针对性的验证. 而这个针对性的验证是根据已经定义好了的策略进行. 在Linux Kernel, 所有的MAC 机制都是搭建在Linux Security Modules (LSM) 基础上, 包括有: SELinux、Apparmor、Smack 和 TOMOYO Linux等。目前SELinux 已经成了事实上的行业标准.
   
   针对Linux DAC, MAC 可以明显弥补DAC 的缺陷, 一方面限制Root 权限, 即使你有root 权限, 如果无法通过MAC 验证, 那么一样的无法真正执行相关的操作. 另外对每一项权限进行了更加完整的细化, 可限制用户对资源的访问行为.
0 0
原创粉丝点击