一、SELinux介绍

  selinux强制访问控制的一种策略,在传统的linux系统中,一切皆文件,有用户,组和权限来控制访问,在selinux中,一切皆对象,由存放在扩展属性域的安全元素控制访问,所有文件、端口、进程都具备安全上下文,安全上下文主要分为五个安全元素user、role、type、sensitivity、category。

二、五个安全元素

user:登录系统的用户类型,如root,user_u,system_u,所属本地进程都属于自由(unconfined)进程
role:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r
type:数据类型,在规则中,何种进程类型访问何种文件都是基于type来实现的,多服务公用的类型有public_content_t
sensitivity:限制访问的需要由组织定义的分层
category:对于规定组织划分不分层的分类

三、selinux工作模式

  selinux主要模式有:strict(centos5)、targeted、minimun(centos7)、mls几类,selinux系统默认选择是targeten,strict已经不再使用,minimun和mls稳定性不足

四、实际上下文和期望上下文

实际上下文:存放在元数据中,查看文件上下文:ls -Z。查看进程上下文:ps -Z
SELinux介绍与设置
SELinux介绍与设置
期望上下文:期望上下文也可以理解为默认上下文,它存放在二进制的selinux策略库中。查看期望上下文的命令为semanage fcontext -l查看系统所有期望上下文

SELinux介绍与设置

五、开启和禁用selinux

SELinux介绍与设置_第1张图片
更改配置文件类型一般只在enforcing和disabled两个模式下相互切换,因为第二种只是报警,没有任何意义,该配置只有在重启后有效
查看当前selinux的状态命令为
getenforce查看当前状态
setenforce临时开启或关闭selinux
setenforce 0|1,其中0代表permissive,1代表enforcing
sestatus详细查看当前selinux状态
SELinux介绍与设置_第2张图片
给文件重新打安全标签
chcon该命令直接更改实际上下文,不会更改期望上下文,如果系统重新打安全标签,将更改,这里不建议这么更改。
chcon [-R] [-u user] [-r role] [-t type] 目录|文件,其中-R递归打标签。
恢复目录或文件的期望上下文
restorecon 目录或文件,-R递归
1、对默认安全上下文查询与更改。 注意:在更改期望上下文后,需要restorecon 更改目录,让实际安全上下文和期望上下文同步
semanage fcontext -l
SELinux介绍与设置_第3张图片
semanage fcontext -a -t 类型 目录或文件
SELinux介绍与设置
restorecon -Rv 目录,恢复期望上下文,并显示过程,如果期望上下文和实际上下文一致将不显示任何信息
SELinux介绍与设置
semanage fcontext -d -t 类型 目录或文件
SELinux介绍与设置
2、selinux更改端口标签
查看端口标签
semanage port -l
SELinux介绍与设置
添加端口,若需要让该服务多增加一个不是默认端口号的端口,则需要添加新的端口号,这里以ssh为例
semanage port -a -t 类型 -p tcp|udp 端口号
SELinux介绍与设置
只需要在将ssh配置文件/etc/ssh/sshd.conf文件中的port端口改成2222重启服务即可
SELinux介绍与设置
删除端口,只需要将a改成d即可
semanage port -d -t 类型 -p tcp|udp 端口号
修改现有端口为新标签
semanage port -m -t 类型 -p tcp|udp 端口号
SELinux介绍与设置_第4张图片
3、selinux布尔值
查看当前系统所有布尔值
getsebool -a|名称
SELinux介绍与设置_第5张图片
semanage boolean -l
semanage boolean -l -C查看当前已经修改过的bool值
SELinux介绍与设置
设置布尔值
setsebool [-P] 需要修改的bool值=[0|1]
setsebool [-P] 需要修改的bool值 [on|off]
SELinux介绍与设置_第6张图片
设置布尔值时,如果需要让操作存入磁盘,永久有效,则需要在中间加上-P参数