SELinux(Security Enhanced Linux)
系统资源都是通过进程来读取更改的,为了保证系统资源的安全,传统的Linux使用用户、文件权限的概念来限制资源的访问,通过对比进程的发起用户和文件权限以此来保证系统资源的安全,这是一种自由访问控制方式(DAC);但是随着系统资源安全性要求提高,出现了在Linux下的一种安全强化机制(SELinux),该机制为进程和文件加入了除权限之外更多的限制来增强访问条件,这种方式为强制访问控制(MAC)。这两种方式最直观的对比就是,采用传统DAC,root可以访问任何文件,而在MAC下,就算是root,也只能访问设定允许的文件。
目录
SELinux的工作原理
工作模式和工作类型
安全上下文
SELinux日志管理
一、SELinux的工作原理
先说下SELinux下的几个基本的概念
主体 # SELinux管理的主体为进程
目标 # SELinux通过管理进程,来限制进程访问的目标,指文件
工作模式 # 决定SELinux机制的启动与否
enforcing ===>强制模式,SELinux已经启动
permissive===>宽容模式,SELinux已经启动,但不会禁止,只是会提出警告信息
disabled ===>关闭模式,关闭SELinux
工作类型(SELinux type) # 表示SELinux具体的安全性策略
strict ===>每个进程都受限制(仅在CentOS5)
targeted===>默认类型为targeted,主要限制网络服务
minimum ===>简化版的targetd,限制部分网络服务(centos7)
mls ===>多级安全限制,较为严格
安全上下文(security context)
这个是我们主要修改的地方,进程必须和文件的安全上下文对应(不是必须一样)才能对其进行访问。
ls -Z 文件名 # 查看文件的安全上下文
ps -eZ # 查看进程的安全上下文
sestatus # 查看SELinux的具体的工作状态
工作原理如下图:
二、工作模式和工作类型
2.1 工作模式
getenforce可以查看当前SELinux的工作模式;setenforce可以修改SELinux的工作模式,不过仅能在permissive和enforcing之间切换。
[root@CentOS6 ~]# setenforce 0|1 分别代表permissive、enforcing
使用命令修改工作模式只在当前有效,想要开机生效,而且如果想要在disabled和其他两种模式之间切换,只有修改配置文件参数然后重启,该配置文件是/etc/selinux/config,另外也可以通过/etc/sysconfig/selinux文件修改,其实该文件是/etc/selinux/config的软链接文件
notice:SELinux从disabled切换到其他模式的时候,系统的重启会花费很长的时间,因为需要为每个受管制的进程和文件写入安全上下文,我的小伙伴以为是配置过程中出错然后直接恢复快照了。
2.2 工作类型
SELinux下存在不同的规则,SELinux根据不同的工作类型对这些规则打开或关闭(on|off<布尔值1|0>),然后通过规则的开启与关闭具体地限制不同进程对文件的读取。
getsebool -a 或者 sestatus -b # 查看当前工作类型下各个规则的开启与否
setsebool -P 规则名称 [0|1] # 修改当前工作类型下指定规则的开启关闭,-P表示同时修改文件使永久生效
三、安全上下文
3.1 security context介绍