什么是SELINUX ?

起源
身处于高速发展的互联网时代,“安全”问题已经成为目前计算机领域中的重要话题,为了解决安全问题,NSA【美国国家安全局(National Security Agency,简写为NSA)】在linux社区的帮助下开发了一种访问控制体系,在linux中通过这种访问体系的控制,进程只能访问那些在其访问任务中所需要的文件,这种体系叫做 Security-Enhanced Linux或简化为SELinux。

介绍

SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略,是linux史上最杰出的新安全子系统。

众所周知,标准的UNIX安全模型是"任意的访问控制"DAC。就是说,任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件仍到/tmp目录下,那么在DAC情况下没人能阻止他!

而MAC情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。

SELinux里实现的MAC允许程序在/tmp目录下建立文件,也允许这个文件按照UNIX权限字的要求对全世界可读,但是当UNIX许可检查应用后, SELinux许可检查还要进一步判断对资源的访问是否被许可。
换句话说,尽管某些UNIX文件的权限被设定为0777但是你也许仍然会被禁止读,写和执行该UNIX文件。在只有DAC的情况下,用户可以查看或更改属于他的任何文件。SELinux则可以限制每一个进程对各种资源的访问,和访问的权级。就是说当一个程序在使用含有敏感数据时,这些数据会被禁止写入那些低权级进程可读的文件中。

SELinux提供了比传统的UNIX权限更好的访问控制。

什么是SELINUX ?
SELINUX的权限管理机制
DAC,(Discretionary Access Control)自主访问控制,在没有使用selinux的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。
只要访问这个资源的进程符合以上条件的就可以被访问。root用户不受任何管制,系统上的任何资源都可以无限制的访问,这种权限管理机制的主体是用户

MAC,(mandatory access control)强制访问控制,在使用了linux的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一资源的访问权限。 这样一来即使进程是以root身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也被压缩到最小。

概念
主体:主体既是进程。
对象:被主体访问的资源,可以是文件、目录、端口、设备等。
政策和规则:系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性的对某些进程进行管制,这样就需要有一套规则来定义什么时候、哪些进程是需要管制的。
规则是模块化的、可扩展的。在安装新的应用程序时,应用程序可以通过添加新的模块来田间规则。用户也可以手动的增减规则。
在redhat7中有三套政策:
targeted:对大部分网络服务进程进行管制。这是系统默认使用的政策。
minimum:以tagreted为基础,仅仅对选定的网络服务进行管制。
mls:多级安全保护,对所有的进程进行管制。这是最严格的政策,配置难度非常大,除非对安全性有极高的要求。

安全上下文(security context)
安全上下文是selinux的核心
什么是SELINUX ?
什么是SELINUX ?查看级别
什么是SELINUX ?
修改级别 两种方法 enforcing与permissive之间可以使用setenforce(0|1)来修改
什么是SELINUX ?什么是SELINUX ?
什么是SELINUX ?
查看selinux状态
什么是SELINUX ?
安全上下文的使用方法:
什么是SELINUX ?
什么是SELINUX ?
此文档部分内容来自西安鸥鹏