一、Selinux

       SELinux: Secure Enhanced Linux, 是美国国家安全局(NSA=The National Security Agency)和 SCC(Secure Computing Corporation)开发的 Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中

 • DAC:Discretionary Access Control自由访问控制

 • MAC:Mandatory Access Control 强制访问控制

 • DAC环境下进程是无束缚的 

• MAC环境下策略的规则决定控制的严格程度 •

 MAC环境下进程可以被限制的 

• 策略被用来定义被限制的进程能够使用那些资源(文件和端口) 

• 默认情况下,没有被明确允许的行为将被拒绝

二、工作类型

 SELinux有四种工作类型:

 – strict: centos5,每个进程都受到selinux的控制 

– targeted: 用来保护常见的网络服务,仅有限进程受到selinux控制,只监 控容易被***的进程,centos4只保护13个服务,centos5保护88个服务

 – minimum:centos7,修改的targeted,只对选择的网络服务 

– mls:提供MLS(多级安全)机制的安全性 • targeted为默认类型,minimum和mls稳定性不足,未加以应用,strict已不再使用

三、Selinux安全上下文

3.1、实际上下文

安全上下文主要有五个元素组成:user:role:type:sensitivity:category 

实际上下文存放在文件系统中:ls -Z 查看文件的上下文关系  

                                                ps -Z   查看进程的上下文关系

      上下文关系是一个访问控制属性。在SELinux中,类型标识符是安全上下文中决定访问的主要的部分。 

为了简便,这里使用一台机器既作客户端又作服务端来进行实验

image.png

因为上下文访问机制的原因,在客服机中只能查看到cp过去的文件看不见mv过去的文件。

        cp:会重新生成符合目录本身的安全上下文 

             -c 复制到别目录下,原context不变

             -a 所有的权限值不不变

        mv:只是单纯将原有文件移动过去 不改变文件本身的属性

image.png

3.1.2、修改Selinux安全标签

修改context值,给文件重新打安全标签

   chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE... chcon [OPTION]... --reference=RFILE FILE... 

              -R:递归打标;

image.png

恢复目录或文件默认的安全上下文:restorecon [-R] /path/to/somewhere

image.png

3.1.3、设置Selinux

setenforce 0|1  在线切换警告模式|强制模式 (临时生效)

getenforce 查看模式

sestatus 查看Selinux 状态

       /etc/selinux/config   修改配置文件后重启生效

SELINUX=enforcing                               

image.png

3.2、期望(默认)上下文

3.2.1、目录期望值安全上下文查询与修改

 Semanage来自policycoreutils-python包,使用前需安装

1、目录期望值

         查看目录默认的安全上下文关系指令:semanage fcontext –l 

         添加目录默认的安全上下文关系指令 :semanage fcontext -a (添加)-t type context path 

         删除目录默认的安全上下文关系指令 :semanage fcontext -d -t type context path 

image.png

image.png

image.png

2、端口号期望值

为指定端口设置端口的期望值,设置成功后可以用semanage port -l查看所有或者指定查看

image.png

设置成功后看是否能重启服务,成功重启就说明端口的期望值设置成功。

删除某一条端口期望值:semanage port -d -t port_label -p tcp|udp PORT 

image.png

3.2.2、selinux布尔值

 当selinux开启时,系统默认会设置很多功能的开关,而且默认都是关闭的

         getsebool -a  查看布尔值

         semanage boolean -l -C 查看已修改过的所有布尔值 

       这里用ftp做示例,ftp默认开启的服务没有支持用户匿名上传文件和目录,修改/etc/vsftpd/vsftpd.conf中的默认设置,修改过后重启服务。这个时候再上传文件会发现还是不能成功的上传文件,提示由原来的权限拒绝变成了不能创建这个目录。

4EA$4HWA_08LT`X9C~UM75Y.png

      重启后还是不能上传的原因是系统上传时用户为ftp用户且服务器中ftp目录的权限没有写权限,为了立即生效这里把权限改为777,sellinux 0(这样的操作存在风险性)。

image.png

可以在不关闭selinux的,设置特殊权限的情况下实现用户的匿名上传。

setsebool [-P] boolean value(on,off)或   -p表永久生效

 setsebool [-P] Boolean=value(0,1)

image.png

再通过ftp就可成功上传文件

image.png