曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4410|回复: 0
打印 上一主题 下一主题

[SELinux] 域的转移(Domain Transitions)

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2013-6-19 22:26:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个域中的进程要转移到另一个域中,需要通过执行一个具有新域“入口点”类型的应用程序。SELinux 策略里使用 “入口点” 权限控制哪个应用程序可以进入一个域。下面演示这依情况:

1. 比如一个用户希望改变自己的密码,那么它会执行 /usr/bin/passwd 这个程序,我们先来查看一下该程序的类型:
[root@groad.net ~]# ls -Z /usr/bin/passwd
-rwsr-xr-x. root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd
由上可见,它的类型为 passwd_exec_t 。

passwd 这个工具是需要访问 /etc/shadow 这个文件的,该文件的类型被标以 shadow_t 类型:
[root@groad.net ~]# ls -Z /etc/shadow
----------. root root system_u:object_r:shadow_t:s0    /etc/shadow

2. SELinux 策略规则已经声明过,一个运行在 passwd_t 域的进程允许读和写被标记为 shadow_t 类型的文件。shadow_t 类型仅仅用在需要修改密码的文件上,如 /etc/gshadow, /etc/shadow 以及它们的备份文件。

3. SELinux 策略规则还声明了 passwd_t 域具有 passwd_exec_t 类型的“入口点”权限。

4. 当一个用户运行 /usr/bin/passwd 这个程序时,用户的 shell 进程将转移到 passwd_t 域中。对于 SELinux 来说,默认的动作都是禁止的(如这里的修改密码),假如说 SELinux 策略数据库中没有这么一条允许的规则,那么改变密码将失败;然而在策略数据库中已存在一条规则并声明允许运行在 passwd_t 域中的应用程序可以访问标记以 shadow_t 类型的文件,因此 passwd 这个命令就允许访问 /etc/shadow ,然后用户的密码得意修改。

上面的例子并不完全说明整个问题,但它用来解释域的转移基本原理却是足够的。尽管有一条实际的规则允许运行在 passwd_t 域的程序可以访问标记以 shadow_t 文件类型的对象,但在转移到新域之前,也要求满足其他的 SELinux 策略规则。在这个例子里,TE (Type Enforcement,类型的强制实施)可做有如下保证:

    passwd_t 域仅能被标记以 passwd_exec_t 类型的应用程序所进入;仅能执行授权的共享库(标记以 lib_t 类型);不能执行任何的其他应用程序。


    只有授权过的域,如 passwd_t ,可以写标记以 shadow_t 类型的文件,即使是以超级用户权限运行的其它进程也不能写入该类型文件,因为它们并没有运行在 passwd_t 域中。


    只有授权过的域可以迁移到 passwd_t 域。比如,sendmail 进程运行在 sendmail_t 域就没有合法的权限来执行 passwd 命令;因此,它也就永不会迁移到 passwd_t 域中。


    运行在 passwd_t 域中的进程可以读写授权的类型,比如标记以 etc_t 或 shadow_t 类型的文件。这样就阻止了 passwd 这个程序被骗去读写恶意的文件。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-7 03:41 , Processed in 0.070208 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表