首页 理论教育 Linux内核安全模块深入剖析:SELinux策略与访问控制

Linux内核安全模块深入剖析:SELinux策略与访问控制

时间:2023-11-22 理论教育 版权反馈
【摘要】:4)主体操作客体时,SELinux会根据策略判断操作是否允许。内核代码在系统调用函数中嵌入了对内核安全模块钩子函数的调用,SELinux的钩子函数会根据策略返回结果。图7-3 SELinux架构强调一下,SELinux的策略是允许策略,访问控制是白名单机制,没有在策略中定义的操作都是被禁止的,即“法无允许即禁止”。

Linux内核安全模块深入剖析:SELinux策略与访问控制

UNIX/Linux的设计传统是机制和策略分离。SELinux遵循了这一传统。7.2节介绍的SELinux机制是:

1)主体是进程,客体细分为若干类别。

2)在每个客体类别上定义若干操作。

3)每一个主体和客体的实例都关联安全上下文

4)主体操作客体时,SELinux会根据策略判断操作是否允许。

本节集中讲述一下SELinux的策略。下面看一个策略的例子:

策略语句 策略含义

allow init sshd_exec_t:file{getattr open read execute}; 允许执行

allow init sshd:process transition; 允许域转换

allow sshd sshd_exec_t:file{entrypoint read execute};允许作为入口点(www.xing528.com)

allow sshd init:process sigchild; 允许发sigchild

allow init sshd:process{siginh rlimitinh}; 允许发siginh

type_transition init sshd_exec_t:process sshd; 让域转换成为缺省操作

简单来说,上述语句就是让init进程可以执行sshd文件,并且新的sshd进程的安全上下文是sshd。

策略是用策略语言编写的。用户态策略语言文件一般有多个,其格式是适合用户阅读的文本格式。要让策略起作用,管理员需要用SELinux用户态工具将策略文件编译成一个二进制文件,然后通过selinuxfs接口,将这个二进制文件所表示的策略输入到内核存储空间的策略库中,即图7-3中的Security Server(安全服务器)。最终使用策略的是SELinux的钩子函数(hooks),为了提高效率,SELinux的设计者在安全服务器和钩子函数之间放置了一个缓存——Access Vector Cache。内核代码在系统调用函数中嵌入了对内核安全模块钩子函数的调用,SELinux的钩子函数会根据策略返回结果。这个返回值会影响系统调用成功与否。图7-3简单描述了SELinux的架构

978-7-111-54905-5-Part02-36.jpg

图7-3 SELinux架构

强调一下,SELinux的策略是允许策略,访问控制是白名单机制,没有在策略中定义的操作都是被禁止的,即“法无允许即禁止”。

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

我要反馈