首页 理论教育 SMACK的工作机制与SELinux不同

SMACK的工作机制与SELinux不同

时间:2023-11-22 理论教育 版权反馈
【摘要】:与SELinux不同,SMACK的工作机制只有类型增强,没有基于角色的访问控制和多级安全。类型在SMACK中的体现是标签。SMACK的策略语句形式是:这条语句规定主体可以对客体进行什么样的操作。在SMACK中,客体包含进程、文件、进程间通信、套接字、密钥等。SMACK的做法是混合这三个选择。如果新文件/目录所在目录没有扩展属性SMACK64TRANSMUTE,或者SMACK64TRANSMUTE值不为“TRUE”,那么新文件/目录的安全标签的值是当前进程的安全标签。

SMACK的工作机制与SELinux不同

SMACK的强制访问控制机制是类型增强(Type Enforcement)。与SELinux不同,SMACK的工作机制只有类型增强,没有基于角色的访问控制和多级安全。因此它更简单。

类型在SMACK中的体现是标签。SMACK的策略语句形式是:

这条语句规定主体可以对客体进行什么样的操作。主体指的是进程,主体标签就在内核管理进程的数据结构task_struct中:

结构cred中的security指针会指向SMACK定义的结构task_smack的实例。

在SMACK中,客体包含进程、文件、进程间通信、套接字、密钥等。进程的标签、进程间通信的标签和密钥的标签都来自创建它们的进程的标签。文件的标签和套接字的标签来自扩展属性。

SMACK的操作种类比SELinux少很多。SMACK的操作不区分客体类型,所有客体的操作都一样,只有6种:读(r)、写(w)、执行(x)、追加(a)、变形(t)、锁(l)。这6种访问方式的原始语义来自文件,读、写、执行、锁都很好理解。变形(transmute)是SMACK的创造,它的来源是由一个问题引来的:创建一个新文件时,新文件的安全标签来自哪里?有三个选择,一、由安全策略规定;二、来自创建文件的进程;三、来自新文件所在的目录。SMACK的做法是混合这三个选择。当新文件被创建时,新文件的安全标签是:(www.xing528.com)

(1)如果新文件/目录所在目录的扩展属性SMACK64TRANSMUTE的值为“TRUE”,并且有策略允许当前进程对目录的“w”和“t”操作,那么新文件/目录的安全标签的值是目录的安全标签。如果创建的是目录,那么此新目录的SMACK64TRANSMUTE值也为TRUE。

(2)如果新文件/目录所在目录没有扩展属性SMACK64TRANSMUTE,或者SMACK64TRANSMUTE值不为“TRUE”,那么新文件/目录的安全标签的值是当前进程的安全标签。

(3)如果没有策略允许当前进程对目录的“w”和“t”操作,那么新文件/目录的安全标签的值是当前进程的安全标签。

对于非文件客体,读和写操作大多很容易映射。但也有不那么直观的,比如网络通信,通信双方交换数据包是双向的,谁是读谁是写呢?SMACK的解决方法是:对于TCP,在客户端链接时检查客户端是否有对服务器端的写操作许可;对于UDP,在客户端每次发包时判断客户端是否有对服务器端的写操作许可。

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

我要反馈