SELinux瞎折腾
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相关的东西。
system_u
指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。object_r
object_r一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。admin_home
文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。
MAC 啊?apparmor 和 tomoyo 也可以看看…