一、SELinux概述
1.SELinux: Secure Enhanced Linux,安全加强版Linux
工作于Linux内核中,实现强制访问控制(MAC)机制
其使用了sandbox:沙箱机制,为你每个进程的运行读提供一个沙箱,圈定其所要依赖的资源,但是进程访问资源切换操作后,所拥有的资源集合不够,就会出现错误,所以每个进程运行的沙箱都需要精心设计,而事实情况并非所有的程序杜能如此,所以折中为对一些对外交互的容易被入侵的如网络性质的做沙箱机制,如httpd等服务
2.SELinux工作级别:
strict: 严格级别,每个进程都受到selinux的控制;
targeted: 仅有限个进程受到selinux控制;只监控容易被入侵的进程;
3.安全法则模型:subject operation object类似于主语操作宾语的机制
subject: 进程
object: 包括进程,文件,
文件支持的操作:open, read, write, close, chown, chmod
该模型为一个进程对另一个对象进行操作,被操作的对象可以为进程,也可以是文件目录等,subject:存在domain(域),object:存在type(类型),而所允许的操作其subject和object要求域内存在所允许的类型的文件
4.SELinux安全标签机制:为每一个文件或者进程会提供标签,
selinux必须在系统启动时候激活内核加载此功能
内核启动对当前根系统上的所有文件打标签,速度取决文件多少于硬盘的读写速度
标签五段组成,最后两段对于在CentOS系列的文件系上是无太多意义的
user:role:type
user: SELinux的user;
role: SELinux的角色(相当于组);
type: 类型;
5.SELinux规则库:
定义了规则:规定哪种域能访问哪种或哪些种类型内文件;
6.配置SELinux操作,一般进行如下操作:
SELinux是否启用;
给文件重新打标,修改type;
设定某些布型特性开关;
二、SELinux管理
1.配置文件:/etc/sysconfig/selinux, /etc/selinux/config:重启有效
SELINUX={disabled|enforcing|permissive}
SELinux的状态:
enforcing: 强制,每个受限的进程都必然受限;
permissive: 启用,每个受限的进程违规操作不会被禁止,但会被记录于审计日志;
disabled: 关闭;
2.getenforce、setenforce命令:当前有效
getenforce: 获取selinux当前状态;
setenforce 0|1:修改selinux状态
0: 设置为permissive
1: 设置为enforcing
3.文件标签相关
(1)chcon:给文件重新打标
chcon [OPTION]... CONTEXT FILE...
chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
-R:递归打标;
(2)还原文件的默认标签
restorecon [-R] /path/to/somewhere
4.布尔型规则:
(1)getsebool:显示布尔型特性状态
getsebool [-a] [boolean]
(2)setsebool命令:设置布尔型特性状态
setsebool [ -P] boolean value | bool1=val1 bool2=val2 …
-P:保存在策略库中,立刻有效