操作系统安全:selinux配置语言_第1页
操作系统安全:selinux配置语言_第2页
操作系统安全:selinux配置语言_第3页
操作系统安全:selinux配置语言_第4页
操作系统安全:selinux配置语言_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、selinux酉己置语言SELinux策略配置语言SELinux策略配置语言策略是一套指导SELinux安全引擎计算安全决策的规那么,它定义了文件客体的类型、进 程的域、使用限制进入域的角色及访问许可的规那么表达式等。策略的源代码用SELinux配置 语言进行描述。1 .主体和客体主体(subject)和客体(object)是指系统中的元素,主体是访问客体的进程,客体 是系统中的一类实体,在系统中定义好了30种不同的客体类别(class ),每个class有定义 好的许可。由etc/security/selinux/src/policy/flask/security_dasses中有class

2、的定义, SELinux定义了30个class ,列出如下:security process system capability filesystemfile dir fd lnk_file chr_file blk_file sock_filefifo_file socket tcp_socke tudp_socket msgq semmsgshm ipcnode netif netlink_socket packet_socketkey_socket rawip_socket unix_stream_socketunix_dgram_socket passwd每个dass都定义了操作许可,

3、如:客体file有19个操作许可,列出如下:ioctl read write create getattr setattr lock relabelfromrelabelto append unlink link rename execute swaponquotaon mounton execute_no_trans entrypointu2 op user_setrl op role_setr2 op role_settl op type_sett2 op type_set表示式中的操作符有not、and、or、二、!二等,role_op还包括dominance (域化)操作符。下面是限制

4、的样例:例1 :限制进程域转移下面语句限制进程域转移的能力,类型转移前后进程的角色一致,或者,进程有类型为privroleoconstrain process transition( rl = r2 or tl = privrole);例2 :限制标识客体下面的语句限制标识客体的能力,即标识客体时,标识前后客体的用户身份一致或者标识前 进程的域为privowner。constrain dir_file_class_set create relabelto relabelfrom (ul = u2 or tl = privowner);constrain socket_class_set cre

5、ate relabelto relabelfrom (ul = u2 or tl = privowner);标识安全上下文标识安全上下文.给SID定义上下文语5去:sid sidjdentifiers ecurity_contextsid_identifier是以前申明的 SID名,security_context user:role:typeo一些策略库预定义的SID在policy/initial_sid_contexts中,.文件系统的标识行为当文件系统被SELinux内核挂接(mount)上时,安全服务器决定给基于filesystem类型的 文件系统里的节点合适的标识行为。一个files

6、ystem类型的标识行为可以用fs_use配置或用 genfs_contexts进行配置。如果在策略里没有给filesystem类型指定标识行为,文件系统的 所有节点将用unlabeled初始化的SID的安全上下文标识。对于有唯一且永久的节点号的传统文件系统来说,SELinux用一个永久的标识映射来决定文 件系统内的节点的安全上下文和文件系统本身的安全上下文。这个行为用fs_use_psid来标 明,对于代表管道和socket对象的伪文件系统,SE Linux常指定创立进程的上下文给代表对象的 节点。这个行为用fs_use_task来声明。其中安全上下文是文件系统本身用到的。pipefs和so

7、ckfs是指哪一种文件系统。对于代表伪终端和共享内存对象的伪文件系统,SE Linux常指定从创立进程的上下文和与文 件系统类型相关的上下文中派生出上下文。派生出的上下文由配置中的类型转移来决定。行 为由fs_use_trans来声明。.指定文件系统上下文对于不支持永久标识映射的文件系统,或不能用一个固定的由fs_use定义的标识的文件系 统,genfscon配置可用来指定文件系统或文件路径或文件的安全上下文。文件系统对象上 下文与文件系统的根目录一致。在policy/genfs_contexts中有使用genfscon的例子。genfscon的语法是: genfscon fs_type pa

8、thprefix -file_type context其中,pathprefix是对象名字的局部路径名,file_type是可选的文件类型定义b, c, d, p, I, s, 或-(看shell命令Is的选项)。.网络对象上下文网络对象上下文配置允许为端口、接口和节点定义安全上下文。其中网络接口有两个相关的 安全上下文:接口的上下文和接口上接收到的没标识包的默认上下文。.文件上下文配置文件上下文配置位于policy/file_contexts目录下,用来做永久的标识映射,可以在policy 目录运行make relabel可更新或创立标识映射。boolean及条件描述语句boolean及条件

9、描述语句. booleans是策略中声明的参数,值是true或fa Ise ,在运行时可以改变的。语法:bool name default.value;例:bool user_ping false;.条件描述语句:if (conditional expression) #有效的策略描述 else #有效的策略描述)例:允许用户使用pingbool user_ping false;if (user_ping) domain.autoJransCunpriV-Userdomain, ping_exec_t, ping_t)# allow access to the terminalallow pi

10、ng_t ttyfileptyfile: chr_file rw_file_perms;)3 .查看和设置boolean通过selinuxfs文件系统在/selinux/booleans和 /selinux/commit_pending_bools中人工设置。用show_bools命令显示策略boolean的当前值。用set_bools命令设置boolean的值。.安全上下文与安全标识符SELinux给每个主体和客体定义了一个安全上下文(security context)。安全上下文 是对主体或客体安全的描述,其格式为:user:role:type ,如:root:sysadm_r:sysad

11、m_t, 其中root为用户ID ( user) , sysadmj为角色ID (role ) , sysadmj为类型(type ) ID0 安全上下文代表了SELinux的访问控制属性。安全标识符(security identifier,简称SID ) 是内核中激活的安全上下文的序号。一般情况下,多个属性的组合形成类型,多个类型的组合形成角色,多个角色的组合形 成用户。有的属性也可能覆盖多个类型的范围,在安全上下文中最重要的是类型。在文件系统中的每个文件或目录、网络的端口等都指定了一个安全上下文,安全策略那么 给出了各个安全上下文之间作用的规那么。例如:Spo I icy/f i Ie_c

12、o ntexts/prog ra m/ch root.f c,文件ch root的安全上下文被定 义如下:/usr/sbin/chroot system_u:object_r:chroot_exec_t.类型和类型属性一个进程的类型(type )又称为域dormain ,客体的角色常称为object,。类型在策略 管理中是用得最多的局部,特别是在类型增强(TE )中。每个用户有相配的角色,角色有 与用户组相关的域类型,而域类型又指定了对客体类型的访问控制权限。类型的属性(Type Attributes )是与一组类型相关的概念。它在TE规那么里可代替类型, 类型、别名、类型的属性共享同一个名字

13、空间。类型属性定义的语法如下:type type_namealiasalias_name(s) ,attribl, . attribn;例如:type passwd_exec_t, file_type, sysadmfile, exec_type;其含义是:将属性file_type、sysadmfile和exejtype定义给类型passwd_exec_t。. TE模型和RBAC模型TE模型给进程和客体提供了良好的颗粒控制。RBAC提供了高层次的简化用户管理。 SELinux安全模型是TE模型和RBAC模型的联合体。TE模型是支持程序运行和域转移的强大类型控制,主体为运行的进程,进程为域类型。

14、 TE访问矩阵定义了域可以访问什么类型的客体,还定义了域类型转移。SELinux类型转移或 访问控制基于一对安全上下文和类型的class。RBAC是基于角色的访问控制(Role-based Access Control)模型,传统的RBAC模型 是对角色进行授权,然后将一个或多个角色分配给一个授权用户。SELinux的RBAC模型是: 给一个域类型指定授权然后将域类型指定给角色相一个或多个角色指定给一个授权用户。例如:root:sysadm_r:sysadm_t中的sysadm_r就是角色。在每个安全上下文中有一个 角色ID ,对主体来说,它代表了主体当前的角色,对客体来说,角色典型值为obj

15、ect/ ,角 色对客体来说没意义。TE规那么的描述TE规那么的描述主体对客体的访问在规那么中需要有四个要素,分别说明如下:源类型(source type ):它是主体或者域(一个进程)的类型。目标类型(target type ):它是客体的类型。对象类别(class ):它是访问申请的某一类别资源,如:file。许可(permission ):表示主体对客体访问时允许的操作类型。如:read。TE规那么是策略中的主要局部,它包括1 .属性的定义属性(Attribute )是具有相似特征的安全类型的组,它是一项工作(如:privmodule ) 的域类型或者系统中一类客体的所有类型(如:pro

16、c.fs ),属性是从使用者角度考虑的一 项特性属性名可在策略配置中一直使用,属性名与类型在同一个名字空间中存在。但一个属性 名不能放在安全上下文的类型的位置上。属性对可选的MLS策略来说很重要,它的定义样 例如下:attribute domain;#这个属性代表了能指定给进程的每种类型attribute privuser;#代表能改变它的selinux用户IDattribute privrole;#代表能改变它的selinux角色IDattribute privmodule;# 代表能运行 mod probeattribute privmem;#代表能访问内核内存设备attribute pr

17、oc_fs;#能指定给/proc下文件的所有类型下面说明一些非常有用的属性:) dcontent属性 dcontent将与Apache 的策略相关的各种类型组合在一起。它帮助 Apache 的PHP脚本蘸用 d的带有content字符的类型。) file_type属性file_type用于指定给文件的所有类型,当域访问所有的文件类型时,使用它是方便 的。属性file_type包括超过170种类型。)属性netif_type, port_type和node_type这些属性与域的网络活动有关。netif_type表示与网络接口相关的类型,允许策略控制 在一个接口的发送、接收和其他操作。) fs_

18、type属性fs_type标识指定给文件系统的所有类型,它允许大多数域获得全部文件系统的统 计信息,一些特殊的域可以挂接任何文件系统。) exec_type属性exe jty pe是指定给可执行条目的所有类型的集合。) domain属性domain用于进程的所有类型,用来识别SELinux的域,在其他类型的强制系统中, 域可能与类型分开使用,在SELinux中,域是具有domain属性的基本类型。这个属性允许 规那么应用到所有的域。如:init发送信号到所有的进程。) reserved_port_type属性reserved_port_type标识任1可一个保存网络商品的所有类型。保存端口的编

19、号小 于1024。.类型的定义类型在它使用之前必须定义,定义的语法如下:type aliases attributes;类型定义的样例如下: d_config_t是一个系统管理文件的类型type d_config_t, file_type, sysadmfile; d_port_t是保存的端口,端口号小于1024type _port_t, port_type, reserved_port_type;域是用于进程的类型,由它的domain属性决定类型。同一类型可以用于进程本身和与 之相关的/proc文件系统中文件。通常,域用作操作的源上下文,域是操作者。域还可用作 客体上下文,如:当init给一

20、个域发送信号时,域作为客体。域的数量和种类决定了安全策略的复杂性。更多的域意味着更好的安全控制,也意味着 配置和维护的困难。. TE访问向量规那么(TE Access Vector Rules )访问向量(Access vectors ,AVs )规那么允许域访问各种系统客体,一个AV是一套许可。一个基本的AV规那么是主体和客体的类型对,AV规那么的语法如下: : 策略强制引擎认为所有的AV规那么由两个类型、一个类别(class )和一个访问许可集组 成。AV有以下四种规那么类型,即在以下四种设置:allow表示允许主体对客体执行允许的操作。neverallow表示不允许主体对客体执行指定的操

21、作。auditallow 表示允许操作并记录访问决策信息。dontaudit表示不记录违反规那么的决策信息,且违反规那么不影响运行。. log消息格式当SELinux不允许一个操作时,将产生一个给审核log的否决消息,log消息一般记录在 文件/var/log/messages 中。. TE转移规那么(TE Transition Rules )域转移运行一个文件,产生一个运行在新域的新进程,类型转移将一个新客体标识为不 同于源类型的类型。类型转移的语法如下:type_transition : 域转移语法如下:type_transition : process 类型转移规那么定义了不同域文件的类

22、型转移。如果进程显式请求一个特殊上下文,域转 移默认时能被覆盖。文件的类型转移默认时实际上从父亲继承,即新的文件从它的父目录继承上下文,除非 有一个明确的规那么指明它从创立者继承。例如:目录/类型为user_home_dir_t,策略定义 了在带有这个类型的目录中创立的文件用user_home_t标识。. m4宏定义SELinux使用m4宏语言写可重用的策略规那么。m4宏定义提供了易用的操作组合,它本 身不属于SELinux策略语言的。RBAC规那么的描述RBAC规那么的描述在target策略中,每个域运行在单个角色,target策略没有使用用户和角色,但strict 策略中使用了用户和角色。

23、.角色的定义角色的定义语法如下:role types ;角色定义样例如下:#允许管理者角色访问域Idconfigrole sysadm_r types ldconfig_t;角色能包含其他角色,继承包含的角色的权限,这种继承称为角色域化。角色域化没有用在targted策略中。角色域化的样例如下:# mastej吆性承sysadm_rluser_r角色的权限 dominance role master_r role sysadm_r; role user_r;.角色转移多个域组成一个角色,每个进程有一个角色,它用系统角色system,启动。用户在注册时 获得一个角色,使用su时用户在获得新的UI

24、D同时,还获得新的角色。当然,还可以保持 UID不变而改变角色,这种做法较少见。一般域经常变化但角色很少变化,特别是在targeted 策略中。改变角色的另一个方法是角色转移(role.transition ),角色转移用得较少,当前 仅用在stricter策略中管理者角色以不同的角色启动后台,角色转移样例如下:#当一个管理者执行一个$l_exec_t类型的进程时,进程从sysadm转移到system, role_transition sysadm_r $l_exec_t system_r;角色允许的语法如下:allow ;角色允许的样例列出如下:#允许角色user_r转移到新角色 allow user_r sysa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论