您所在的位置: 首页>>读书频道>>操作系统>>Linux>>

3.2.1 基本概念

http://book.51cto.com  2007-12-27 12:50  倪继利 著  电子工业出版社博文视点  我要评论(0)
  • 摘要:《Linux安全体系分析与编程》第三章分析了SELinux的安全机制,介绍了安全策略配置语言、内核策略库的结构,简述了SELinux内核模块的实现,还分析了用户空间的客体管理器。本文主要介绍的是SELinux策略配置语言的基本概念。
  • 标签:Linux  策略  安全  SELinux  Linux安全体系分析与编程

3.2  SELinux策略配置语言

策略是一套指导SELinux安全引擎计算安全决策的规则,它定义了文件客体的类型、进程的域、使用限制进入域的角色及访问许可的规则表达式等。策略的源代码用SELinux配置语言进行描述。

3.2.1  基本概念

1.主体和客体

主体(subject)和客体(object)是指系统中的元素,主体是访问客体的进程,客体是系统中的一类实体,在系统中定义好了30种不同的客体类别(class),每个class有定义好的许可。

在/etc/security/selinux/src/policy/flask/security_classes中有class的定义,SELinux定义了30个class,列出如下:

security process system capability filesystem 
    file dir fd lnk_file chr_file blk_file sock_file 
    fifo_file socket tcp_socke tudp_socket msgq semmsg 
    shm ipcnode netif netlink_socket packet_socket 
    key_socket rawip_socket unix_stream_socket 
    unix_dgram_socket passwd

每个class都定义了操作许可,如:客体file有19个操作许可,列出如下: :

ioctl read write create getattr setattr lock relabelfrom 
    relabelto  append unlink link  rename execute swapon
     quotaon mounton execute_no_trans entrypoint

2.安全上下文与安全标识符

SELinux给每个主体和客体定义了一个安全上下文(security context)。安全上下文是对主体或客体安全的描述,其格式为:user:role:type,如:root:sysadm_r:sysadm_t,其中root为用户ID(user),sysadm_r为角色ID(role),sysadm_t为类型(type)ID。安全上下文代表了SELinux的访问控制属性。安全标识符(security identifier,简称SID)是内核中激活的安全上下文的序号。

一般情况下,多个属性的组合形成类型,多个类型的组合形成角色,多个角色的组合形成用户。有的属性也可能覆盖多个类型的范围,在安全上下文中最重要的是类型。

在文件系统中的每个文件或目录、网络的端口等都指定了一个安全上下文,安全策略则给出了各个安全上下文之间作用的规则。

例如:在policy/file_contexts/program/chroot.fc中,文件chroot的安全上下文被定义如下:

/usr/sbin/chrootsystem_u:object_r:chroot_exec_t

3.类型和类型属性

一个进程的类型(type)又称为域dormain,客体的角色常称为object_r。类型在策略管理中是用得最多的部分,特别是在类型增强(TE)中。用户、角色、域类型和客体类型的关系图如图3-3所示,每个用户有相配的角色,角色有与用户组相关的域类型,而域类型又指定了对客体类型的访问控制权限。

图3-3 用户、角色、域类型和客体类型的关系图

类型的属性(Type Attributes)是与一组类型相关的概念。它在TE规则里可代替类型,类型、别名、类型的属性共享同一个名字空间。类型属性定义的语法如下:

type type_name[aliasalias_name(s)] [,attrib1, …, attribn];

例如:type  passwd_exec_t, file_type, sysadmfile, exec_type;

其含义是:将属性file_type、sysadmfile和exec_type定义给类型passwd_exec_t。

4.TE模型和RBAC模型

TE模型给进程和客体提供了良好的颗粒控制。RBAC提供了高层次的简化用户管理。SELinux安全模型是TE模型和RBAC模型的联合体。

TE模型是支持程序运行和域转移的强大类型控制,主体为运行的进程,进程为域类型。TE访问矩阵定义了域可以访问什么类型的客体,还定义了域类型转移。SELinux类型转移或访问控制基于一对安全上下文和类型的class。

RBAC是基于角色的访问控制(Role-based Access Control)模型,传统的RBAC模型是对角色进行授权,然后将一个或多个角色分配给一个授权用户。SELinux的RBAC模型是:给一个域类型指定授权,然后将域类型指定给角色,将一个或多个角色指定给一个授权用户。

例如:root:sysadm_r:sysadm_t中的sysadm_r就是角色。在每个安全上下文中有一个角色ID,对主体来说,它代表了主体当前的角色,对客体来说,角色典型值为object_r,角色对客体来说没意义。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
如何有效提升企业安全审计应用水平
Web安全云时代
NAC安全访问控制
微软Forefront企业安全解决方案
VPN安全技术与应用
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有