Android中的SELinux

SELinux (Security Enhanced Linux)是由美国NSA(国安局)和 SCC 开发的 Linux 的一个扩张强制访问控制安全模块,目的是最大限度减少系统中服务进程可访问的资源。Google 在 Android 4.4 上正式添加以 SELinux 为基础的系统安全机制,命名为SEAndroid。SEAndroid 在架构和机制上与 SELinux 完全一样,基于移动设备的特点,SEAndroid 的只是所以移植 SELinux 的一个子集。

DAC与MAC

自主访问权限(DAC)

当程序要操作文件时,系统根据程序的 Owner/Group,对比文件的权限,若通过权限检查,则可操作文件,但可能造成问题:

  • root 具有最高权限,若某程序属于root,则该程序可操作系统的任何文件
  • 使用者可利用程序来变更文件的权限
强制访问控制(MAC)

以进程为主体,任何进程想在系统上干任何事情,都必须在《安全策略文件》中赋予权限。

  • TEAC(Type Enforcement Accesc Control):一般用TE表示,是MAC的基础管理思路。根据Security Context中的 type 进行权限审查, 审查 subject type 对 object type 的某个class 类型中某种 permission 是否具有访问权限
  • Role Based Accesc Control:MAC的高级管理思路基于角色控制,RBAC 是基于 TE 的

模式

  • Enforcing:强制模式:SELinux在运行中,且已经开始限制domain/type之间的验证关系
  • Permisssive:宽容模式:SELinux在运行中,如果验证不正确会发出警告
  • Disabled:关闭模式,SELinux并没有实际运行
//获取SeLinux模式
adb shell getenforce

//设置SeLinux模式为Enforcing(只允许Enforcing和Permissive之间切换)
adb shell setenforce 1

//设置SeLinux模式为Permisssive
adb shell setenforce 0

sContext

组成

SELinux 安全策略是建立在对象安全上下文的基础上的,对象可以分为两种:

  • 主体(Subject):通常指进程。
  • 客体(Objcet):指通常要访问的资源,如文件、进程、socket等。

在 SELinux 中,每种东西都会被 Policy 赋予一个安全属性,官方说法叫做 Security Context(sContext),sContext 是一个字符串。根据 SELinux 规范,完整的 sContext 字符串主要由三个部分组成:user:role:type[:range]

  • user:Android中只定义了一个SELinux用户,即u
  • role:一个user可以属于多个role,不同role具有不同权限,即MAC的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值