开发者社区> 科技小能手> 正文

linux的lsm--TCB组成部分的新视角

简介:
+关注继续查看
可信路径的一端是任意用户,另一端是TCB,这条路经要做到尽可能短,从而加大消息在中间被拦截的难度,事实上,可信路径上的消息时不能被拦截的,否则就不叫可信路径了,可信路径的一端必须是绝对可信的,我们称为TCB,也就是可信计算基,然而TCB并不仅仅存在于可信路径的另一端,TCB是一整套安全环境的总称,包括很多元素,比如硬件隔离机制,OS内核的一切组件,事实上,TCB是一个抽象的概念而不是一个形象的实体,在linux中TCB还包括所有的suid程序,也就是说,TCB的元素一定是可以信任的,如果想让操作系统绝对安全,仅仅有一些可以信任的“基”还不行,虽然“基”是可以信任的,那么谁能保证调用“基”的程序是正常调用呢,如果一个恶意的程序调用了TCB,那么后果一样是很严重的,因此作为TCB本身的组成部分,有一个叫做访问控制监视器,这个监视器的作用就是监控任何受控调用比如系统调用的合法性,比如对于sys_mount来讲,访问监视器判断调用进程能否进行mount操作。

     可悲的是,很多的操作系统并没有实现这个访问监视器,操作系统几乎在一开始设计的时候是不考虑安全的,而只考虑功能和效率,很多设计者都将安全这件事寄托给了硬件机制,比如Intel的rings以及arm的特权模式等等,事实上这种寄托很不严格,毕竟硬件的实现千差万别,设计者往往在出现了具体问题的时候才会考虑加入安全控制机制最终使得操作系统内核的代码杂乱无比,因此操作系统需要一个更加一致的TCB,便于实现统一接口下的不同实现以及扩充新的安全策略。如果实现了这么一个接口一致,仅仅实现的机制的安全控制机制的话,那么可以说TCB包含了三部分,一个是寄托给硬件的那部分(所谓的内核模式),提供OS作为服务提供者的保护机制,一个是访问监视器,就是上面说的那个一致的接口,另外一个是用户空间的一些门(gate)程序,对于linux来讲就是suid程序。现在看看linux的lsm,它实际上就是一个访问监视器框架,然后你可以用任何方式实现它,用访问监视器的视角来理解lsm的话,可以很清晰的弄明白为什么它的调用点存在于一个地方而不是另一个地方。lsm提供了两种实现访问监视的方式,一种是单独模块的方式,这种方式下只要你提供了一个lsm实现并且注册了它,那么就不能再注册第二个了,也就是说系统中只允许注册一个lsm实现,另一种方式是堆栈模块的方式,security_operations本身提供了register_security回调函数,任何一个lsm实现都可以重载这个回调函数以允许系统中存在很多lsm实现,从而实现串行的访问控制过滤。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271984

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux命令小技巧:显示文件指定行的内容
Linux命令小技巧:显示文件指定行的内容
30 0
Java执行Linux命令
Java执行Linux命令
19 0
如何在Linux中优雅的使用 head 命令,用来看日志简直溜的不行
如何在Linux中优雅的使用 head 命令,用来看日志简直溜的不行
42 0
[linux] losetup 命令
[linux] losetup 命令
41 0
Linux命令awk的简单使用
Linux命令awk的简单使用
39 0
Redis6学习(四):Linux下使用命令为Redis设置密码
Redis6学习(四):Linux下使用命令为Redis设置密码
35 0
linux下开启、关闭、重启mysql服务命令
linux下开启、关闭、重启mysql服务命令
47 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Decian GNU/Linux安全合规之路
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
冬季实战营第二期:Linux操作系统实战入门
立即下载