一、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策略库中。查看期望上下文的命令为semanage fcontext -l查看系统所有期望上下文

五、开启和禁用selinux

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