SELinux 简介

SELinux全称是Secure Enhanced Linux, 是一个Linux安全策略机制,它是属于内核级别的安全机制。

SELinux 基本概念

  • 域(domin):用来对进程进行限制

使用ps -Z来查看进程域的信息

  • 上下文(context):对系统资源进行限制

使用ls -Z查看上下文信息

策略

在SELinux中,通过配置策略来控制哪些域可以访问哪些上下文。
SELinux的配置文件是放在/etc/sysconfig/下的selinux文件中。

SELinux 模式

SELinux的工作模式一共有三种,分别是enforcing,permissive,disabled。

  • enforcing:强制模式,违反策略的行动都会被禁止,并作为内核信息来记录。

  • permissive:允许模式,违反策略的行为不会被进制,但是会作为内核信息记录。

  • disabled:禁用模式,关闭SELinux。

  • 开启SELinux后执行ls -Z后的结果

[Lightless@localhost ~]$ ls -Z
-rw-rw-r--. Lightless Lightless unconfined_u:object_r:user_home_t:s0 1234.zip
-rw-rw-r--. Lightless Lightless unconfined_u:object_r:user_home_t:s0 a.txt
-rwxrw-rw-. Lightless Lightless unconfined_u:object_r:user_home_t:s0 black.zip
-rwxrw-rw-. Lightless Lightless unconfined_u:object_r:user_home_t:s0 daimagaoliang.zip

发现比没有开启SELinux的时候多了unconfined_u:object_r:user_home_t:s0,我们来仔细分析一下。

unconfined_u代表是用户,object_r代表的是角色,user_home代表的是类型,最后的s0是跟MLS,MCS相关的东西。

  1. system_u  指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。

  2. object_r  object_r一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。

  3. admin_home  文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。