关闭

基于android6.0版本的SELinux文件访问安全策略

标签: selinuxAndroid权限
38人阅读 评论(0) 收藏 举报
分类:

转自:http://blog.chinaunix.net/uid-7213935-id-5750899.html

 

在android6.0以后的版本,google采用了SELinux的文件访问安全策略,想比较以前,绝对提高了文件的安全,不像以前那样,
对文件访问可以是无条件的。本篇文章就分享下常用的一些安全策略。
1. linux传统 设备文件访问控制方法
 传统的 Linux设备文件访问控制机制通过设置用户权限来实现.
     ? 超级用户(root),具有最高的系统权限,UID为0。
? 系统伪用户,Linux操作系统出于系统管理的需要,但又不愿赋予超级用户的权限,
需要将某些关键系统应用文件所有权赋予某些系统伪用户,其UID范围为1~ 499,系统的伪用户不能登录系统。
     ? 普通用户,只具备有限的访问权限,UID 为 500 ~ 6000,可以登录系统获得 shell
       在Linux权限模型下,每个文件属于一个用户和一个组,由UID与GID标识其所有权。针对于文件的具体访问权限定义为可读(r)、可写(w)与可执行(x),并由三组读、写、执行组成的权限三元组来描述相关权限。
       第一组定义文件所有者(用户)的权限,第二组定义同组用户(GID相同但UID不同的用户)的权限,第三组定义其他用户的权限(GID与UID都不同的用户)。

2.SElinux采用主体对客体的强制访问控制
1) SELinux 拥有三个基本的操作模式
? Disabled:禁用SELinux策略
? Permissive:在Permissive模式下,SELinux会被启用但不会实施安全性策略,而只会发出警告及记录行动。Permissive模式在排除SELinux的问题时很有用.
? Enforcing:这个缺省模式会在系统上启用并实施SELinux的安全性策略,拒绝访问及记录行动.
setenforce 0 命令进入permissive模式
setenforce 1 命令进入Enforcing模式

2) 类型强制(TE)访问控制
    在SELinux中,所有访问都必须明确授权,SELinux默认不允许任何访问,不管Linux用户/组ID是什么。这就意味着在SELinux中,没有默认的超级用户了,与标准Linux 中的root不一样,通过指定主体类型(即域)和客体类型使用allow规则授予访问权限,allow规则由四部分组成:
     ? 源类型(Source type(s) ) 通常是尝试访问的进程的域类型
     ? 目标类型(Target type(s) ) 被进程访问的客体的类型
     ? 客体类别(Object class(es)) 指定允许访问的客体的类型
     ? 许可(Permission(s)) 象征目标类型允许源类型访问客体类型的访问种类
     举例如下:


这个规则解释如下:
     拥有域类型user_t的进程可以读/执行或获取具有bin_t类型的文件客体的属性.

 3) 如何排除SELinux安全策略引起的问题
 a.  首先排除DAC权限的问题,使用“ls –l”检查相关文件的属主和权限。如果DAC的权限许可,则就是SELinux的策略显式地拒绝了当前操作的执行。
 b.  通过“setenforce 0”命令进入permissive模式(getenforce命令查看模式)。此操作可暂时关闭selinux强制访问控制,可直接进行调试,若此时操作还是不允许,则与selinux无关。
c. 通过“dmesg | grep avc”查看 AVC log,在android6.0 版本中,这个用的最多。从分析失败操作相应的AVC Denied Msg入手区分问题的根源,以下为一条拒绝信息:

可在/device/qcom/sepolicy/common/untrusted_app.te文件中增加如下语句解决此问题:
allow   untrusted_app  sysfs_irdev : file { write };
d) 如何自定义域类型.
        客体类别为file的可以在/device/qcom/sepolicy/common/file.te文件中增加如:

客体类别为device的可以在/device/qcom/sepolicy/common/device.te文件中增加如:

然后在安全上下定义文件file_contexts 中增加需要的安全上下文定义,如下:

注意:
       上面的路径/sys/devices/virtual/sec(/.*)?中不能有链接类型的文件或目录,否    
   则安全上下文定义将无效.

e) 如何验证自定义域类型和安全上下文(安全策略)已生效.
1) 使用命令 make kernel 编译重新生成boot.img
 2) 下载 boot.img 到手机上,并重启手机.
3) 查看手机根目录下file_contexts文件
root@msm8916_32:/ # cat file_contexts
 /sys/devices/virtual/sec(/.*)?               u:object_r:sysfs_irdev:s0
 /sys/class/sec(/.*)?                       u:object_r:sysfs_irdev:s0
 /sys/devices/virtual/input/input2/offset       u:object_r:sysfs_proxdev:s0
4) 查看手机文件系统相应目录 如下:
root@msm8916_32:/sys/devices/virtual/sec/sec_ir # ls -Z
-rwxrwxrwx root     root              u:object_r:sysfs_irdev:s0 ir_info
-rwxrwxrwx root     root              u:object_r:sysfs_irdev:s0 ir_learn
-rwxrwxrwx root     root              u:object_r:sysfs_irdev:s0 ir_send
这些文件都属于sysfs_irdev域。
 5) 假如untrusted_app.te文件有如下定义:
            allow untrusted_app sysfs_irdev:file { open read write ioctl };
            则所有属于untrusted_app域的app都可以读写/sys/devices/virtual/sec/下的文件
6)查看那些进程属于untrusted_app域
root@msm8916_32:/ # ps -Z
u:r:untrusted_app:s0           u0_a127   30854 294   com.cubic.autohome
u:r:untrusted_app:s0           u0_a68    31531 294   com.general.remote
........
这两个app可以读写/sys/devices/virtual/sec/目录下的文件.
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

构建高效安全的Nginx Web服务器

一、为什么选择Nginx搭建Web服务器 Apache和Nginx是目前使用最火的两种Web服务器,Apache出现比Nginx早。Apache HTTP Server(简称Apache)是世界使用...
  • luozhuwang
  • luozhuwang
  • 2016-03-08 14:57
  • 1517

Selinux 权限策略定制

Selinux 语言: 左边的一列是Security Context。 u:r:init:s0的意思是 u为user。SEAndroid中定义了一个SELinux,值为ur为role的意思。一个u...
  • shichaog
  • shichaog
  • 2016-12-22 16:19
  • 1274

windows 2008 配置本地IP安全策略

虽然在apache服务器端设置了对于某一个IP段禁止访问,但是还是总有蜘蛛在一直请求服务器80端口,虽然apache返回403,但是请求无法阻止。为了降低apache服务器的负担,决定在windows...
  • chengyi_L
  • chengyi_L
  • 2016-09-09 10:45
  • 1307

Android 安全策略实例讲解:SEAndroid和SELinux

说明: 第一条log对应ls,第二条对应测试代码; "scontext=":访问过程中的主体,对应ls、App、进程等; "tcontext=":访问过程中的客体,即访问的资源、文件等。 可见,"tc...
  • u013686019
  • u013686019
  • 2016-03-10 12:10
  • 1536

flash 843安全策略文件 java版本

  • 2012-07-27 11:53
  • 577KB
  • 下载

SELinux安全策略和探释.pdf

  • 2016-10-18 16:04
  • 192KB
  • 下载

Centos SELinux安全策略

一、SELinux简介 SELinux(Secure Enhanced Linux)安全增强的Linux是由美国国家安全局NSA针对计算机基础结构安全开发的一个全新的Linux安全策略机制。SE...
  • u012851076
  • u012851076
  • 2015-09-06 14:58
  • 456

阿里云服务器windows版本的使用以及安全策略的添加

远程桌面的安全策略 刚开始使用阿里云服务器没几天,就有黑客不断跑进来,分析了一下不可能是因为服务器网页的漏洞,因为黑客接触不到我们的app,所以肯定就是远程桌面的问题了。
  • jianjian1992
  • jianjian1992
  • 2015-09-26 10:45
  • 3057

IP安全策略设置工具 独立文件版 [免费版]

  • 2010-12-07 20:52
  • 1.00MB
  • 下载

使用Policy文件来设置Java的安全策略.doc

  • 2011-06-08 22:21
  • 94KB
  • 下载
    个人资料
    • 访问:35522次
    • 积分:1686
    • 等级:
    • 排名:千里之外
    • 原创:130篇
    • 转载:38篇
    • 译文:0篇
    • 评论:9条
    最新评论