一,背景和概念
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问的控制,是Linux历史上最杰出的新安全子系统。
SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个用户,进程,应用和文件的转变的权限,然后它可以使用一个安全策略来控制这些实体(用户,进程,应用和文件)之间的交互,安全策略指定如何安全或宽松的进行检查。
- 对内核对象和服务的访问控制
- 对进程初始化,继承和程序执行的访问控制
- 对文件系统,目录,文件和打开文件描述的访问控制
- 对端口,信息和网络接口的访问控制
安全值:在Linux里所有的文件和进程都有一个值。(当满足或者匹配到这个安全值,才能进行访问)
二,SELinux的作用及权限管理机制
1,SELinux的作用
SELinux主要作用就是最大限度的减小系统中服务进程可访问的资源(最小权限原则)。
2,DAC
在没有使用SELinux的操作系统中,决定一个资源是否能被访问的因素:某个资源是否拥有对应用户的权限(读,写,执行)。但是由于root用户不受任何管制,系统上任何资源都可以无限制的访问。
这种权限管理机制主体是用户,也称自主访问控制(DAC)。
3,MAC
在使用SELinux的操作系统中,决定一个资源能否被访问的因素除了上述因素外,还需要判断每一类进程是否拥有对某一类资源的访问权限。(即使是root用户也需要判断,因此进程的活动空间也被压缩到最小。安全性大大增加)
这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。而MAC又分为俩种方式:类别安全(MCS)模式;多级安全(MLS)模式。
三,MSC模式下操作
1,SELinux基本概念
1)主体(Subject):可以完全等同于进程(为了方便理解,以下均把进程视为主体)
2)对象(Object):被主体访问的资源,可以是文件,目录,端口,设备等(为了方便理解,以下均把文件或者目录视为对象)
3)政策和规则(Policy&Rule)
系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性的对某些进程进行管制。而哪些进程需要管制,要怎么管制都是由政策决定的。一套政策里面有多个规则。部分规则可以按照需求启用或者禁用(以下把该类型的规则称为布尔型规则)。规则是模块化的,可扩展的。在安装新的应用程序时,应用程序可通过添加新的模块来添加规则。用户也可以手动增减规则。
4)安全上下文(Security Context)
(system_u:object_r:admin_home_t:s0)
用户身份:角色:类型(标签):安全级别
system_u指的是selinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统用户,通过用户可以确定身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于selinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。
object_r:一般为文件目录角色,system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类型类似于用户组的概念,不同的角色具有不同的身份权限,一个用户具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。
admin_home_t:文件和进程都有一个类型,SELinux依据类型的相关组合来限制存取权限
5)SELinux的工作模式(/etc/selinux/config)
(1)enforcing:强制模式。违反SELinux规则的行为被阻止并记录到日志中。
(2)permissive:宽容模式。违反SELinux规则的行为只会记录到日志中。一般为调试用。
(3)disabled:关闭SELinux。
切换工作模式:需要重启系统
级别切换:
禁用<——>强制:下次启动生效
禁用<——>警告:下次启动生效
强制<——>警告:即时生效
enforcing和permissive切换命令:setenforce 1|0
打开SELinux之后的第一次重启速度慢的原因:系统必须为磁盘中的文件创建安全上下文。
将selinux模式改为强制模式重启慢的原因:selinux在操作系统的安全体制结构上进行扩张,增强对进程模块文件打上了一些安全标记。