android 权限控制与进程隔离

每次介绍说是做系统安全的,面试和领导首先就是说配selinux,实在很无语。虽然权限控制是安全很重要一环。

linux的进程就是系统运行中的程序(process),是正在执行的一个程序或者命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。Linux环境下,进程地址空间相互独立、彼此隔离,因此进程间的数据不能之间访问。要实现具体功能一版单独程序很难完成,android系统层次划分、结构划分更依赖进程间通信(IPC, InterProcess Communication)。为了方便调用就得统一的接口,又不能完全放开给非法程序。

进程间通信的一些基本方式参考Linux进程间通信(Linux IPC)、android进程间通信参考Android中的IPC知识,在安全角度去看这些通信会发现这些方式只要拿到文件句柄就很容易拿到进程之间通信的数据,而binder通信直接在内存缓冲区操作风险更高,Binder通信时根据UID/PID进行有效性检测提高安全性。

Linux还有个重要思想,一切皆文件:

/proc目录,那里每一个进程会对应一个文件夹,文件夹的名字是pid,在每个进程的文件夹下还会有这个进程的详细信息,比如cmdline、cpuinfo、devices、meminfo、kmesg等等。

/dev目录,里面会分门别类地给到你所有硬件信息。系统会把很多硬件直接模拟成文件,包括字符串设备、块设备、寄存器、显示缓存等。很多都是可以直接打开访问,这样你可以在没有具体系统api调用文档的情况下,通过读写文件来完成操作硬件。

system挂载出来可以看到bin执行程序,app应用,lib下库,etc配置文件等等。

文件系统将这些内容组织起来方便访问,给用户、开发直观方便使用。如果没有权限控制,将是灾难性的。

  • 权限限制:权限限制是指在系统中对用户或程序的访问权限进行限制和管理,以保证系统的安全和数据的完整性。

  • 数据隔离:数据隔离是指在系统中对数据进行隔离,使得每个用户或程序只能访问和修改自己的数据,避免对其他用户或程序的数据造成影响。

android权限控制中linux部分包括用户权限、应用沙盒、selinux;系统级的权限也区分EL0~EL3。

1、Linux用户与权限

linux基础

从零开始学大数据(六):Linux用户与权限https://zhuanlan.zhihu.com/p/496418981

Linux用户和权限管理https://blog.csdn.net/qq_45547688/article/details/123910864

android启动时以只读方式挂载块设备,使用uevend对/proc、/etc、/sys等目录配置用户与权限https://www.jianshu.com/p/8a34ba82ac1f

2、应用沙盒

Android 平台利用基于用户的 Linux 保护机制识别和隔离应用资源,可将不同的应用分隔开来,并保护应用和系统免受恶意应用的攻击。为此,Android 会为每个 Android 应用分配一个独一无二的用户 ID (UID),并让应用在自己的进程中运行。如果应用 A 尝试执行恶意操作(例如在没有权限的情况下读取应用 B 的数据或拨打电话),系统会阻止此类行为。操作系统库、应用框架、应用运行时环境和所有应用都会在应用沙盒中运行。

官网应用沙盒简述

应用沙盒seccomp的配置编译与加载

3、selinux

SELinux原本是美国国安局联合一些公司设计的一个针对Linux的安全加强系统。

SELinux出现之前,Linux系统上的安全模型叫做DAC(自主访问控制),其原理是进程所拥有的权限与执行它的用户的权限相同(例如:以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情)。SELinux的出现结束了这种宽松的访问。

SELinux在DAC的基础之上,设计了新的安全模型叫做MAC(强制访问控制),其原理是任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限,凡是没有在安全策略配置文件配置的权限,进程就没有该权限。Android4.4版本上正式推出的一套以SELinux为基础于核心的系统安全机制,且命名为SEAndroid,自此SELinux便被"移植"到了Android上了。

————————————————

版权声明:本文为CSDN博主「诸神黄昏EX」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_27672101/article/details/107720990

selinux网上内容实在太多,深入理解SELinux SEAndroid 三篇非常扎实,建议细读完。

https://blog.csdn.net/Innost/article/details/19299937

https://blog.csdn.net/Innost/article/details/19641487

https://blog.csdn.net/Innost/article/details/19767621

这是2014年的blog,所述代码不再一致,原理永不过时,而现在针对架构和细小领域都有改动。我这里整理下配置使用与注意事项,做安全就深入了解下编译与加载。

3.1、selinux的配置与相关问题

1、配置

配置架构

2、常见问题

hal与init的实现

3、常用工具

3.2、selinux编译与加载

1、访问向量?

2、restorecon 如何自带标签?

1、load、restorecon load

2、二次编译

3、代码编译

4、系统级权限

4.1、

4.2、TEEOS

https://www.bbsmax.com/A/QV5Zv12V5y/

https://qmiller.blog.csdn.net/article/details/124561917?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124561917-blog-125393881.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124561917-blog-125393881.pc_relevant_landingrelevant&utm_relevant_index=1

https://blog.csdn.net/guyongqiangx/article/details/78020257?spm=1001.2014.3001.5501

https://blog.csdn.net/guoqun01/article/details/51425091

你可能感兴趣的:(android系统安全,安全,linux,运维,服务器)