首页 理论教育 Linux内核安全模块深度剖析

Linux内核安全模块深度剖析

时间:2023-11-22 理论教育 版权反馈
【摘要】:SELinux机制会将SELinux角色映射为SELinux类型。dominancedominance用于定义级别之间的“高低”关系。语法:其中category_id可以是用“.”连接的两个组,如c0.c16,表示一个闭合集合;也可以是用“,”连接的两个category,如c21,c36,表示不连续的列表;还可以将这两种情况组合,如c0.c16,c21,c36,c45。

Linux内核安全模块深度剖析

1.客体类别和操作

这部分策略是内核代码逻辑的重复。按照机制和策略分离的原则,内核代码实现机制,用户编写策略。但是SELinux策略语言中偏偏有一部分是在重复内核代码的逻辑。这部分重新定义了客体类别和操作,有些不伦不类,因为用户不可能多定义或少定义一个客体类别,也不可能修改客体之上的操作。

语法是:

举例:

上述语句表示客体类unix_stream_socket自通用操作集合socket中继承了全部操作,并且自己有3个额外的操作:connectto、newconn、acceptfrom。

下面再给出通用操作集合的语法:

举例:

上述语句中的注释表明,套接字操作的前半部分和文件相同,后半部分是套接字上特有的操作。

2.SELinux用户

SELinux用户是SELinux安全上下文四元组中的第一个成员。SELinux的机制是先将Linux用户映射为SELinux用户,再将SELinux用户映射为SELinux角色。

语法:

举例:

SElinux用户“sysadm_u”可以映射为SElinux角色“sysadm_r”。

3.角色

SELinux安全上下文四元组的第二个成员是角色。SELinux机制会将SELinux角色映射为SELinux类型。

语法:

或者,定义角色的同时给出关联的类型:

举例:

上述语句定义了3个角色:system_r、sysadm_r、user_r。其中,user_r可映射为类型user_t和chfn_t。

一个一个地定义角色有些麻烦,可以定义一个共同的角色属性,将角色关联到角色属性,在后续需要角色的策略中使用角色属性就可以了。

语法:

有了角色属性,就可以将以前定义的角色关联到角色属性上。

举例:

上述语句定义了3个角色:网络管理员系统管理员、普通用户,2个角色属性:管理和网络。将网络管理员关联到管理和网络,系统管理员关联到管理。

4.类型

SELinux安全上下文四元组中的第三个成员是类型。类型相关的定义有type、attribute、typeattribute、typealias。

(1)type

在类型上有类型名字,类型属性,可能还有类型别名。语法:

或者:

或者:

或者:

举例:

上述语句定义了一个类型“bin_t”,再为它关联两个别名“usr_bin”和“sbin”,再定义一个属性“exec_t”,关联到“bin_t”。定义属性“can_relabelto”,在定义类型“setf_t”的时候关联上别名“restorecon_t”和属性“can_relabelto”。最后,在定义类型“ssh_serv_packet_t”时赋予类型多个属性:“packet_t”和“serv_packet_t”。

(2)attribute(www.xing528.com)

语法:

attribute就是“类型的类型”。

3)typeattribute

语法:

typeattribute的作用是为一个以前定义的类型关联属性。

举例:

上述语句定义了一个类型“daemon_t”和一个属性“domain”,然后将它们关联起来。

4)typealias

语法:

typealias的作用是定义一个类型的别名。

5.多级安全

多级安全包含两个元素:敏感度(sensitivity)和组别(category)

1)sensitivity

语法:

或者:

举例:

上述语句定义了3个级别:s0、s1、s2。s0的别名是common(普通)和no_secret(无秘密);s1的别名是secret(秘密);s2无别名。

(2)dominance

dominance用于定义级别之间的“高低”关系。

语法:

举例:

s0级别最低,s2级别最高。

3)category

语法:

或者:

举例:

上述语句定义了两个组别:c0和c1,c0的别名是planning(规划部)和r_d(研发部);c1的别名是business(市场部)。

(4)level

级别(level)定义将前面的敏感度(sensitivity)和组别(category)组合起来。多级安全Multi-Level Security)中的级别就是下面要介绍的级别。

语法:

其中category_id可以是用“.”连接的两个组,如c0.c16,表示一个闭合集合;也可以是用“,”连接的两个category,如c21,c36,表示不连续的列表;还可以将这两种情况组合,如c0.c16,c21,c36,c45。

举例:

上述语句表示敏感度s0和组别c0、c1关联,敏感度s1和组别c0、c1关联,敏感度s2和组别c0、c1、c2关联。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈