SElinux学习笔记 一
2015-09-11
SElinux的安全上下文格式:
user:role:type
- 其中各种标识符是正交的,即允许使用相同的标识符
- 查看标示符:使用 “-Z” 例如:
ps -Z
id -Z
ls -Z
与标准linux的安全属性对比 :
- 标准Linux安全中的user以及group ID是与内核联系起来的,内核通过一系列的控制方法(包括登入过程以及setuid机制),对于文件来说,inode中就含有一串访问模式位以及userID和group ID,其中,前者提供RWE的权限控制,分别对应owner、group、else集合,后者决定文件的所有者以及所属组别,用来在访问判断时去匹配前者的不同集合。
- SElinux中,则是使用上述的安全上下文来作为访问控制位,所有的主客体都必须关联一组安全上下文,就像标准的Linux安全通过进程的user/group ID,文件的使用集合以及文件的user/group ID来通过或者拒绝进程对文件的访问,SElinux就是通过安全上下文来判断一个进程对客体的访问,更为重要的是,由于SElinux最主要的访问控制手段是类型强制(TE:type enforcement),所以,安全上下文的类型标识符就是用来决定访问权限的。
- 值得注意的是,SElinux只是在标准的Linux安全下加入了TE,这就表示在访问某一客体时,SELinux跟Linux的访问控制是同时生效的,即,即使拥有了SElinux对于某一客体的写权限,如果没有Linux中的
w
权限,也是没有办法写的,反之亦然。
SElinux安全上下文的特殊点
- 类型(type)标识符是安全上下文中最主要的
- 进程(process)的类型常被称为域(domain)或者域类(domain type)
- domain、domain type、subject type、process type都可以用来表示进程类型
- 用户(user)、角色(role)标识符在TE中几乎没有什么影响(除了约束强制?),在进程中,这两种标识符是用来维系类型集与用户标识集(关联于Linux用户账户),对于客体,这两者几乎没什么用,所以,大部分的客体角色都是
obeject_r
,用户通常都是生成这些客体的进程的用户标识符。 - Linux中的user ID及SElinux 中的user标识符是不同的,技术上来说,他们是正交的,被分别运用在标准linux以及SELinux访问控制机制中的,其两者的联系方式是由登录进程通过一系列约定严格规定的,而不是直接由SElinux的安全策略所强制实施。
TE (Type Enforcement)
- SElinux的默认规则是拒绝(no access by default) – 无视linux的用户/组
- 通过
allow
语句授权某一主体类型(域)对某一客体类型的访问:
allow source_type target_type : object_class {permissions}
- source_type :一般是尝试访问进程的域
- target_type :一般是进程访问的客体类型
- object_class : 说明被允许访问客体的种类(class)
- permissions :具体的访问种类
- 例:
allow user_t bin_t : file {execute read getattr}
file
是在策略中定义的的客体类permissions
是策略中客体类定义的permissions的一个实例化子集getattr
显示了SElinux比Linux更加细粒度的控制,因为在linux中,即使某个用户仅有某文件所在文件夹的搜索权限,依旧可以读取出该文件的访问控制信息
- 另外
_t
并没有什么重要性的,只是约定惯例
passwd例子理解
/bin/passwd
是用来修改/etc/shadow
文件使用的程序- SElinux是为了保证无论什么用户都只能通过passwd来修改shadow文件
- 原本的Linux是通过setuid程序来实现对shadow文件的修改,即,拥有Root Uid 的程序都可以来修改shadow文件,这是非常不安全的做法
- SElinux实现了所有修改密码(shadow文件)的权限过滤(什么用户能修改什么用户的密码)只由passwd文件来实现,即使拥有root身份,不使用passwd程序来访问也是没有办法修改密码的,而对于其他用户,同样可以通过passwd来修改密码,但是能够修改什么密码就需要passwd程序通过相关的安全上下文来判断了
- 这样就保证了在passwd程序不出问题的前提下,其他大部分程序出问题(即使setuid程序)shadow文件的更改是可控的
- 注意:passwd能访问shadow的权限必须是root+SElinux规则允许,两者缺一不可
《SElinux By Example Using Security Enhanced Linux》 By Frank Mayer,Karl MacMillan,David Caplan