SELinux/SEAndroid 实例简述(一) 基础概念

SELinux by Example Using Security Enhanced Linux 比较新的讲SELinux的入门书籍,包括MLS,是难得得覆盖面很全的书 立即下载
  
  1. /***********************************
  2. * Author:刘江明
  3. * Environment:MTK Android 6.0
  4. * Date:2016年11月04日
  5. ***********************************/
   
一. 前述    
        在Android5.0之前SEAndroid并没有真正地被启用。真正比较关注SELinux与SEAndroid是从着手Android6.0开始。网上关于SELinux与SEAndroid的与不算多。概念又新又多,而且没有一个统一的中文翻译。刚开始一头扎下去看了一头雾水。在这里,希望能用自己微薄的知识做一下通俗的总结,最关键的问题想通过实例如了解,这东西怎么运用到实例里面去。
        在这里看了很多文章,下面很多知道都是引用了很多大神的博客,也相当于稍做总结 。感谢这些大神的默默奉献。
        希望自己在后面能对Android的安全体系有一个完整的了解。目前,第一篇文章,先了解一下SELinux/SEAndroid的基础概念,然后通过实例去分析。然后了解一下在Android系统源码中,SELinux源码中的简单分布,与如何在源码打开Root权限和如果完全不编译SEAndroid。最后是希望能进一步深入到源码里面去了解SEAndroid机制。这里面涉及很广,包括Zygote,packagemanagerservice,dalvik等等等。希望这些愿景都能被实现

二. 关于SELinux与SEAndroid的基本概念
        先简述一下相关概念   
       1. 两种安全机制DAC(Discretionary Access Control)和MAC(Mandatory Access Control)。通俗地讲,这两个机制的区别是。在DAC里,如果一个应用获取了一个用户权限,如Root,那他的所有操作操作都是基于这个用户权限。而MAC就简单霸道好多,无论你是谁,甚至是有Root用户权限,文件权限为777,但每个动作都是需要被允许之后可以被执行。这里可以是在安全策略文件中被允许,与可以是用户手动允许
       2. MAC机制基于 LSM(Linux Security Module) 标准实现。
               3 . SELinux全称Security-Enhanced Linux。SELinux在MAC上实现的,所以SELinux也是基于LSM标准。在Linux kernel 2.6后正式直接整合进Linux里面
              4. 第一条中提到MAC的安全策略文件的作用就是表明了允许干什么。学名是TEAC(Type Enforcement Access Control)。简称TE。里面的语言被称为强制类型语言。我们的目标就是学会如何何用这个文件
             5. Security Context,安全上下文。Security Context的作用就是相当于这些文件和进程的“身份证”。 
       6. SELinux Mode,SELinux有两种模块Permissve Mode(宽容模式)和Enforcing Mode(强制模式)。区别在于Permissive只会打印SELinux Log。而强制模式会进行真正拦截。如果被拦截,kernel log中的关键字是"avc:denied"。可以在下面的文件节点查看SELinux是什么模式,这里返回了一个1,表示在enforce模式
 
             上述1,2,3,4,5它们的关系是这样的
             
       上面这个图没有提到TE文件的关系。TE文件的规则和一些用户主动允许的动作等等会存储在图中的database里。
       当有一个进程执行read动作(Event)被Security Server 监测到地时候,DAC会作初步的检查。然后把动作的传进LSM,同时,LSM会找到该进程和文件的上下文 
       前面说了SELinux基于LSM实现。 SELinux在初始化的时候会实现一些由LSM提供的抽象函数(abstract)和把一些LSM回调(Hook)注册进LSM。LSM会读取SELinux里database的TE规则,或者在AVC(AccessVector cache)里寻找相应的规则。AVC相当于一个规则的缓存,加快读取的速度。找到相应的规则后又把它传回LSM,在LSM里做出最后的判断

关于SEAndroid
Android在SELinux的基础上扩展了SEAndroid,其实两者在原理上差不多,但是SEAndroid面向的对象就是更丰富了,后面会介绍。需要了解的是google到了Android 5.0之后才完全深度整合了SELinux和SEAndroid。具体进程如下:
 
三. SELinux与SEAndroid的基础知识
1. SELinux两个最基本的对象是主体(Subject)和客体(Object)。主体和客体分别对应的是“进程”和“文件”。这里的文件并不单指的是实际存在的文件,而是指Linux里“一切皆文件”里指的文件。如Socket,系统属性等。
        2. 在SEAndroid,对主体和客体进行了进一步形式上的封装和扩展,其实差不多。SEAndroid里细分为:系统文件,服务,系统属性,Bindert和Socket。这里的系统属性指的是build.prop里的属性,也是getprop命令查询出来的属性。我们后面就是针对这几个对象进行实例分析

        3. 在adb里执行下面的命令可以查看主体和客体的安全上下文。
        查看客休(文件)的安全上下文 ls -Z
        
             查看主体(进程)的安全上下文ps -Z
            
            其中文件的安全上下文 “u:object_r:rootfs:s0”具体表示如下
U:一个名为U的SELinux用户
        object_r:这个标志位在进程里表示的是一个用户角色(role)但是文件无扮演任何角色,这仅是一个文件的标识
        rootfs:这是一个type的标志位,也是TE里最重要的一个标示位。不然怎么称为TE(Type Enforcement)
        s0:LSM的级别
        进程的安全上下文“u:r:init:s0”。就第二位与文件的不同,r 全称role,表示的是一个用户角色。第三位同样表示类型(type)也是最重要的
        
         从上面可以看出,Linux用于安全机制的元素有好几种,用户,角色,类型,安全等级。这几种元素在某些场合,还是会被用到,但对于LSM和SELinux最重要的还是type。所以后面的关注点在于主体和客体的type。

    关于角色的一点介绍
  1. //通过external/sepolicy/users和external/sepolicy/roles文件的内容,我们就可以看到SEAndroid所定义的SELinux用户和SELinux角色。
  2. //文件external/sepolicy/users的内容如下所示:
  3. user u roles{ r} level s0 range s0- mls_systemhigh;
  4. //上述语句声明了一个SELinux用户u,它可用的SELinux角色为r,它的默认安全级别为s0,可用的安全级别范围为s0~mls_systemhigh,其中,mls_systemhigh为系统定义的最高安全级别。
  5. //文件external/sepolicy/roles的内容如下所示:
  6. role r;
  7. role r types domain;
  8. //第一个语句声明了一个SELinux角色r;第二个语句允许SELinux角色r与类型domain关联。

                                                                                                  ---------摘自《SEAndroid安全机制框架分析》
        关于安全等级,只要知道两个原则“read down”和"write up"。即低安全级可以往高安全级的写东西,高安全级的可以往低安全级的读东西,反过来则不可以,同级的可以相互读写。《深入理解SELinux SEAndroid之二》一文中对安全级有很详细的介绍。

以下的荐书摘自“阿拉丁神农”和“罗升阳”大神的博客
     
  1. 1 SELinux NSA’s Open Source Security Enhanced Linux:
  2. 下载地址:http://download.youkuaiyun.com/detail/innost/6947063
  3. 评价:讲得SELinux版本比较老,不包括MLS相关内容。但是它是极好的入门资料。如果你完全没看懂本文,则建议读本文。
  4. 2 SELinux by Example Using Security Enhanced Linux:
  5. 下载地址:http://download.youkuaiyun.com/detail/innost/6947093
  6. 评价:这本书比第1本书讲得SELinux版本新,包括MLS等很多内容,几乎涵盖了目前SELinux相关的所有知识。读者可跳过1直接看这本书。
  7. 3 The_SELinux_Notebook_The_Foundations_3rd_Edition:
  8. 下载地址:http://download.youkuaiyun.com/detail/innost/6947077
  9. 评价:这是官方网站上下的文档,但它却是最不适合初学者读的。该书更像一个汇总,解释,手册文档。所以,请务必看完1或2的基础上再来看它。
  10. 4 Security Enhanced (SE) Android: Bringing Flexible MAC to Android




SELinux System - 2nd Edition + SELinux 详解 SEAndroid基础 立即下载

相关推荐

华硕笔记本+Ubuntu 20.04:用cpupower解决Intel CPU频率上不去/功耗墙问题实战

本文详细介绍了在华硕笔记本Ubuntu 20.04系统下使用cpupower工具解决Intel CPU频率受限和功耗墙问题的实战方法。通过禁用Intel P-State驱动、配置userspace模式以及高级调优技巧,帮助用户突破性能瓶颈,提升编译和计算效率。

weixin_42561476的博客 524

《SELinux by example Using security enhanced Linux》读书笔记

一、 SELinux:给所有的Linux环境带来世界级的安全!     当然这是我从《SELinux by example Using security enhanced Linux》一书中的扉页上摘录下来的,当我首次看到这句话的时候我并不理解, 即便此时我已经接触了很多关于SELinux的知识。为了方便我在以后的工作学习中需要回顾我学习SELinxu某个节点的知识,这里讲部分与我日常工

从0到1,突破自己 4142

ubuntu为Docker配置代理

我们平常在ubuntu终端中使用curl或git命令时,往往会很慢。所以,首先需要给ubuntu终端环境添加代理。查看自身那个软件的端口号,我这里是7890。

不想随波逐流的大学生一枚,我们每个人都在努力奔跑 1643

SELinux by Example: Using Security Enhanced Linux

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpSELinux: Bring World-Class Security to Any Linux Environment!SELinux offers Linux/UNIX integrators, adminis

TopMVP 1286

深入了解 CPU 的型号、代际架构与微架构!

深入了解 CPU 的型号、代际架构与微架构!

欢迎朋友,我是一名十多年开发经验的新手,希望多多指教。 3195

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 196

深入理解SELinux SEAndroid之二

3) File/File System 打label前面一节中,读者见识到了DT和TT。不过这些描述的都是Transition,即从某种Type或Domain进入另外一种Type或Domain,而上述内容并没有介绍最初的Type怎么来。在SELinux中,对与File相关的死货(比“死东西”少些一个字)还有一些特殊的语句。 直接看SEAndroid中的文件吧。[external/sepolicy

zhangzhi123456789的专栏 1350

人脸情绪识别(使用深度学习和OpenCV)

基于opencv与深度学习的人脸情绪识别系统

mx0390304的博客 8251

安卓SElinux(SEAndroid)

SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)安全模块,最初由美国国家安全局(NSA)开发,旨在增强Linux及Android系统的安全性。它通过为系统中的进程、文件和其他资源分配安全标签(Security Context),并依据预定义的安全策略来控制访问权限。从Android 4.3开始,Google开始在Android系统中引入SELinux,并将其命名为SEAndroid。

qq_42423646的博客 468

MMCV安装后报错‘from mmcv import Config’?别慌,这是MMCV 2.0的锅!快速降级回退MMCV 1.x全指南

本文详细解析了MMCV 2.0版本升级导致的‘from mmcv import Config’报错问题,提供了从诊断到降级回退MMCV 1.x的完整解决方案。通过pip和OpenMIM工具链的实操指南,帮助开发者快速解决版本冲突,确保项目稳定运行。

weixin_29102619的博客 263

19 04-读取DTC快照信息

为了方便找到故障的原因,车厂一般会在诊断调查表中定义一些信息作为快照信息,例如故障发生时间、电压、行驶里程数、车速等。在对应故障发生时,ECU端要记录发生故障时的快照信息,客户端可以通过此服务检索客户端定义的DTCMaskRecord的捕获DTC Snapshot记录号以及DTCSnapshot记录数据。通过查找故障发生时刻的这些数据,来分析故障原因。

诊断协议那些事儿's blog 5138

深入理解SELinux SEAndroid(第一部分)

http://blog.csdn.net/innost/article/details/19299937 [-] 深入理解SELinux SEAndroid 一 SELinux背景知识 DAC和MACSELinux Policy语言介绍 1  TE介绍 1  Object class和Perm Set2  typeattribute和allow等3  R

kudingcha5279的专栏 625

使用蒙特卡洛模拟方法在MATLAB中估算居里温度: 一个详细而通俗的指南

居里温度是磁性材料失去磁性的温度。但是,计算机模拟为我们提供了一个在理论和实验之间的桥梁,使我们能够在不进行实际测量的情况下估计这一重要参数。在下一部分,我们将详细介绍蒙特卡洛迭代的核心代码,以及如何使用它来模拟磁性材料中原子的行为。在估算居里温度的上下文中,我们将使用蒙特卡洛方法来模拟磁性材料中的原子或分子的行为。通过使用蒙特卡洛方法,我们可以在MATLAB中估算居里温度,从而为理论研究和实验设计提供有价值的信息。:我们使用的是一个有限的尺寸的网格模型,这可能导致一些大小效应,特别是在接近居里温度时。

qq_38334677的博客 977

深入理解SELinux SEAndroid 第二部分

深入理解SELinux SEAndroid 第二部分 3)  File/File System 打label 前面一节中,读者见识到了DT和TT。不过这些描述的都是Transition,即从某种Type或Domain进入另外一种Type或Domain,而上述内容并没有介绍最初的Type怎么来。在SELinux中,对与File相关的死货(比“死东西”少些一个字)还有一些特殊的语句。 直接看SE

darling757267的专栏 501

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android sepolicy简要记

安全上下文 Seapp_contexts File_contexts Service_contexts Property_contexts Hwservice_contexts 安全策略 常见错误修改 违反规则的同时又neverallow问题修改 方式一:更改type 方式二 通过binder/socket 等方式连接APP 访问 方式三 更改Label Process 无法访问某个新增d...

ch853199769的博客 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

[Android 基础] -- SELinux/SEAndroid 实例简述(三) 实例看 SELinux/SEAndroid

基础知识都已经学习完了,但是还不知道怎么样,下面从不同的场景,实现了几个例子,可以参考学习一下。 对于 /extern/sepolicy 的修改如下方法编译: 1. mmm external/sepolicy 2. make bootimg 不过对于 MTK 的 Android 系统,不建议修改 external/sepolicy,而是修改 device/mediatek/common/sepolicy,在 plicy 目录下,make relab...

u014674293的博客 2534

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android 系统SELinux(SEAndroid)

一、SE 概述 SELinux 是由美国NSA(国安局)和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。从 fedoracore 2开始, 2.6内核的版本都支持SELinux。 1.1、DAC 与MAC 在 SELinux 出现之前,Linux 上的使用的安全模型是DAC( Discretionary Access Control 自主访问控制)。 DAC 的核心思想很简单:进程理论上所拥有的权限与执行它的用...

tq501501的博客 5575

SELinux/SEAndroid 实例简述

一. 基本语法 很多te文件集中在\external\sepolicy文件夹下,MTK也有很多自定义的在\device\mediatek\common\sepolicy。它的最基本样式是       allow factory powerctl_prop:property...

Android8.x和Android9.x平台user版本打开UART输出并支持控制台输入和user版本adb root的方法 545

Linux DAC 与 SELinux/SEAndroid MAC

本文系统阐述了Linux系统的访问控制机制,重点对比分析了DAC(自主访问控制)与SELinux/SEAndroid的MAC(强制访问控制)原理。DAC基于用户身份和文件权限位实现基础访问控制,但存在root权限过大、管控粗放等缺陷。SELinux通过安全上下文和策略规则实现细粒度的强制访问控制,有效弥补DAC不足。SEAndroid作为SELinux在安卓系统的移植版本,针对移动特性增加了组件级管控和沙箱隔离机制。文章详细解析了三者的工作原理、核心要素、访问判断流程及优缺点,为理解操作系统安全机制提供了系

wangzy0716的博客 851

Android的SELinux——SEAndroid

SEAndroid简介   SEAndroid是Google在Android4.4上正式推出的一套以SELinux为核心的系统安全机制。而SELinux则是由NSA(美国国安局)在Linux社区的帮助下设计的一个针对Linux的安全强化系统。   NSA最初设计的安全模型叫FLASK,全称为FluxAdvanced Security Kernel(由Uta大学和美国国防部开

明日暘炚 2744

SELinux与SEAndroid(一)

root真的的是万能神吗? 如果手机被ROOT了,真的就不安全了吗?

Crazy David 1181

深入理解SELinux SEAndroid(最后部分)

接第二部分的内容 深入理解SELinuxSEAndroid(结局) 二 SEAndroid源码分析 有了上文的SELinux的基础知识,本节再来看看Google是如何在Android平台定制SELinux的。如前文所示,Android平台中的SELinux叫SEAndroid。 先来看SEAndroid安全策略文件的编译。 1. 编译sepolicy Android平台中: external/sepolicy:提供了Android平台中的安全策略源文件。同时,该目录下的tools还...

Venus 的博客 2645
上一篇: 从Jni到Java增加一个系统服务SystemServer,并通过getSystemService调用
下一篇: SELinux/SEAndroid 实例简述(二) TE语言规则
shell812
博客等级 码龄18年 202粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值