SEAndroid&SELinux

本文详细介绍了SELinux与SEAndroid的概念,包括它们在Linux系统中的作用和实现方式。重点讨论了安全策略,如进程的SContext、文件的SContext、安全策略的rule_name和权限设置,并探讨了模式切换、安全属性以及如何为系统资源打标签。此外,还提到了在Android系统中如何处理安全策略冲突和权限管理。
摘要由CSDN通过智能技术生成
SELinux

SELinux则是由NSA(美国国安局)在Linux社区的帮助下设计的一个针对Linux的安全强化系统。
在LinuxKernel中,SELinux通过LSM(LinuxSecurity Modules)实现.

SELinux是一种基于域-类型(domain-type)模型的强制访问控制(MAC)安全系统。

  • 自主访问控制模型(Discretionary Access Control,DAC)、
    进程理论上所拥有的权限与运行它的用户权限相同。比如,以root用户启动shell,那么shell就有root用户的权限

  • 强制访问控制模型(Mandatory Access Control,MAC).
    任何进程想在SELinux系统中干任何事,都必须先在安全策略的配置文件中赋予权限。凡是没有在安全策略中配置的权限,进程就没有该项操作的权限。

SEAndroid

SEAndroid是Google在Android4.4上正式推出的一套以SELinux为核心的系统安全机制。
image.png

1)LSM提供了一种通用的安全框架,允许将安全模型以模块方式载入内核,
2)AVC是一个策略缓存,当进程试图访问系统资源的时候,kernel中的安全策略服务将会先在AVC中查找策略,如果没有命中,则会到安全服务器中查找,找到了,则权限被缓存,允许访问,如果没找到,则拒绝访问;
3)SecurityPolicy描述系统资源的安全访问策略,系统启动时init进程负责把策略文件加载到内核的LSM模块中;
4)SecurityContext描述系统资源的安全上下文,SELinux的安全访问策略就是在安全上下文的基础上实现的;
5)libselinux为用户空间提供了SELinux文件系统访问接口;

sepolicy中的所有相关文件整合成一个源文件plicy.conf,然后通过checkpolicy 编译器将policy.conf策略源文件编译成root/sepolicy的二进制策略文件,编译完成的二进制策略文件会在系统启动时被加载到内核中在权限检测时使用

模式切换

SELinux支持Disabled,Permissive,Enforce三种模式;

 # getenforce                                            
Enforcing

Disabled,此时SELinux的权限检查机制处于关闭状态;

Permissive模式就是SELinux有效,但是即使你违反了它的安全策略,它让你继续运行,但是会把你违反的内容记录下来。在策略开发的时候非常有用,相当于Debug模式;

Enforce模式就是你违反了安全策略的话,就无法继续操作下去。

 # setenforce 0
 # getenforce                                                
Permissive

在Eng版本使用setenforce命令,可以在Permissive模式和Enforce模式之间切换。

安全属性
user:role:type[:range]

SELinux中,每种东西都会被赋予一个安全属性,它就是SecurityContext
Security Context是一个字符串,主要由三部分组成。

进程的SContext
ps -Z
u:r:servicemanager:s0          system    134   1     /system/bin/servicemanager
u:r:surfaceflinger:s0          system    135   1     /system/bin/surfaceflinger
u:r:sayeye:s0                  system    136   1     /system/bin/sayeye
u:r:zygote:s0                  root      137   1     zygote
u:r:shell:s0                   shell     138   1     /system/bin/sh
u:r:netd:s0                    root      139   1     /system/bin/netd
u:r:init:s0                    root      1     0     /init
u:r:kernel:s0    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值