一、SElinux简介
SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linux,传统的访问控制在我们开启权限后,系统进程可以直接访问.当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞。
所以在开启SElinux后
会对进程本身部署安全上下文
会对文件部署安全上下文。会对服务使用端口进行限制
会对程序本身的不安全功能做限制
二、selinux的工作原理
2.1.SElinux的工作方式
SELinux是通过MAC的方式来控制管理进程,,它控制的主体是进程,而目标则是该进程能否读取的文件资源
主体(subject):就是进程
目标(object):被主体访问的资源,可以是文件、目录、端口等。
策略(policy):由于进程与文件数量庞大,因此SELinux会依据某些服务来制定基本的访问安全
2.2.SELinux 的安全上下文
安全上下文(securitycontext):
主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须一致才能够顺利访问。
最终文件的成功访问还是与文件系统的rwx权限设置有关
安全上下文的查看
ls -Z //查看文件的安全上下文
ps axZ | grep vstfpd // 进程的安全上下文
2.3安全上下文用冒号分为四个字段:Identify:role:type:
- 身份标识(ldentify):相当于账号方面的身份标识,主要有以下三种常见的类型:root:表示root的账号身份;system_u: 表示程序方面的标识,通常就是进程;unconfined_u:代表的是一般用户账号相关的身份。
- 角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色有: object_r 代表的是文件或目录等文件资源;system_r:代表的是进程。
- 类型(type):在默认的targeted策略中,Identify与role字段基本上是不重要的,重要的在于这个类型字段。而类型字段在文件与进程的定义不太相同。分别是:type :在文件资源上面称为类型。 Domain: 在主体程序中则称为域domain需要与type搭配,则该程序才能够顺利读取文件资源。
- 代表灵敏度,一般用s0、s1、s2来命名,数字代表灵敏度的分级。数值越大、灵敏度越高。
三.对于SElinux的管理及优化
3.1.SElinux的工作模式
SElinux有三种工作模式:
enforcing:强制模式,开始限制domain/type。
permissive:宽容模式,仅会有警告信息并不会实际限制domain/type的访问。
disabled:关闭,SELinux并没有实际运行
3.2.对于SElinux状态管理
getenforce //查看SElinux当前状态
setenforce 0 | 1 //临时更改SElinux的工作模式0 表示宽容模式1 表示强制模式
grubby--update-kernel ALL --args selinux=0
grubby -update-kernel ALL --remove-args selinux//永久更改SElinux状态
touch /.autorelabe //重启SElinux,系统在开启SElinux后,重启系统SElinux的所有内容不会有任何变化如果需要刷新SElinux
3.3 实施方式
3.3.1 前期配置
selinux如何设定为开启在设定之后要重启系统才生效
下载需要库
将anonymous enable= anon upload enable= 修改为yes
检查表示安装启用成功
3.3.管理文件的安全上下文
1.临时更改文件的安全上下文
chcon[-R][-ttype][-uuser][-r role]文件
-R:连同该目录下的子目录也同时修改:
-t:后面接安全上下文的类型字段:
-u:后面接身份识别;
-r:后面接角色chcon[-R]--reference=模板 目标文件#将文件的安全上下文按照范例文件修改
2.永久修改安全上下文
semanager fcontext[-a|-d][-t type][-s user][-r range]文件
-1:列出所有记录
-a:添加记录
-m:修改记录
-d: 删除记录
-t:添加的类型
-p:指定添加的端口是tcp或udp协议的,port子命令下使用
-e:目标路径参考原路径的上下文类型,fcontext子命令下使用
-s:后面接身份识别
-r:后面接角色
3.实施方式
临时修改上下文关系
永久更改
3.4.selinux对linux服务的影响
1.服务的功能影响
在系统SElinux开启后会为服务添加新的功能开关,我们把这个开关叫做sebool参看sebool值 getsebool -a | grep
修改sebool值 setseboo]-p<bool类型><0 1>
-P:表示永久生效0:表四功能关闭1:表示功能开启
此处可以看到出现了不可以的情况
出现以上情况有以下可能,安全上下文不行,我们先来查看
这里我们是读写模式,如果不是就要通过以下方式
nage fcontext -a -t public_content_rw_t '/var/ftp/pub(/.*)?'
restorecon -RvvF /var/ftp/pub/
更改为读写并且更新
如若还是不行,那就是sebool值问题
sema
将读写功能更改为打开模式
setsebool -P ftpd_anon_write on