SELinux访问控制机制系列:SELinux概述

SELinux使用了分级的强制访问控制,是Linux内核的重要安全措施。SELinux的安全策略工具可从http://oss.tresys.com下载。本篇分析了SELinux的安全机制,介绍了安全策略配置语言、内核策略库的结构,简述了SELinux内核模块的实现,还分析了用户空间的客体管理器。

1. SELinux概述

SELinux是安全增强的Linux,是Security-enhanced Linux的简写,SELinux 改进了对内核对象和服务的访问控制,改进了对进程初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的访问控制。

早期的 Linux 内核只提供经典的 UNIX 自主访问控制(root 用户、用户 ID、模式位安全机制),以及部分地支持 POXIS.1e 标准草案中的 capabilities 安全机制,这对于 Linux 系统的安全性是不够的。NSA(the National Security Agency)和 SCC(Secure Computing Corporation)共同开发了强大的基于类型加强(Type Enforcement)的强制访问控制(mandatory access control,简称MAC)机制。这个机制称为 Flask,它提供了动态的安全策略机制。Flask 机制现已被以 SELInux 形式集成入 Linux 操作系统。

Linux内核增加了一个通用的安全访问控制框架,它通过hook函数来控制程序的执行,这个框架就是Linux安全模块(LSM),在LSM上可使用各种安全控制机制(如:Flask)来实现对程序的控制。

SELinux应用了类型增强(Type Enforcement, TE)和基于角色的访问控制(role-based access control, RBAC)技术。

TE给每个主体(进程)和系统中的客体定义了一个类型,这些类型定义在SELinux的安全策略文件中,以安全标签的形式存放在文件本身的扩展属性(extended attributes,简称xattrs)里。

当一个类型与一个进程相关时,这个类型称为域(domain),例如:后台进程httpd的域为httpd_t。

在SElinux中,默认是不允许主体(subject)对客体(object)进行操作的,由策略来定义哪些操作是被允许的。TE使用主体的域和客体的类型,从策略文件中查找操作许可。例如:策略中的一条规则如下:

allow httpd_t net_conf_t : file { read getattr lock ioctl };

这条规则表示:主体的域是httpd,客体的类型是net_conf_t,客体的类别是文件,{}中是被允许的操作权限。

SELinux的访问控制规则存放在安全策略文件中,策略文件分为二进制和源代码文件,源代码以策略配置语言的形式描述,由编程者创建和维护。源代码经策略配置工具编译后生成二进制文件。二进制策略被装载到内核空间,形成在内存中的策略库及缓存,内核就可以使用访问控制规则了。

SELinux可以实现非常细粒度的访问控制,这也造成了安全策略的复杂性。

Linux内核的SELinux安全体系由Flask和LSM框架共同组成,LSM是由hook函数组成的安全访问控制框架,Flask框架将SELi

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值