一、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中,类型标识符是安全上下文中决定访问的主要的部分。
为了简便,这里使用一台机器既作客户端又作服务端来进行实验因为上下文访问机制的原因,在客服机中只能查看到cp过去的文件看不见mv过去的文件。
cp:会重新生成符合目录本身的安全上下文
-c 复制到别目录下,原context不变
-a 所有的权限值不不变
mv:只是单纯将原有文件移动过去 不改变文件本身的属性
3.1.2、修改Selinux安全标签
修改context值,给文件重新打安全标签
chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE... chcon [OPTION]... --reference=RFILE FILE...
-R:递归打标;
恢复目录或文件默认的安全上下文:restorecon [-R] /path/to/somewhere
3.1.3、设置Selinux
setenforce 0|1 在线切换警告模式|强制模式 (临时生效)
getenforce 查看模式
sestatus 查看Selinux 状态
/etc/selinux/config 修改配置文件后重启生效
SELINUX=enforcing
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
2、端口号期望值
为指定端口设置端口的期望值,设置成功后可以用semanage port -l查看所有或者指定查看
设置成功后看是否能重启服务,成功重启就说明端口的期望值设置成功。
删除某一条端口期望值:semanage port -d -t port_label -p tcp|udp PORT
3.2.2、selinux布尔值
当selinux开启时,系统默认会设置很多功能的开关,而且默认都是关闭的
getsebool -a 查看布尔值
semanage boolean -l -C 查看已修改过的所有布尔值
这里用ftp做示例,ftp默认开启的服务没有支持用户匿名上传文件和目录,修改/etc/vsftpd/vsftpd.conf中的默认设置,修改过后重启服务。这个时候再上传文件会发现还是不能成功的上传文件,提示由原来的权限拒绝变成了不能创建这个目录。
重启后还是不能上传的原因是系统上传时用户为ftp用户且服务器中ftp目录的权限没有写权限,为了立即生效这里把权限改为777,sellinux 0(这样的操作存在风险性)。
可以在不关闭selinux的,设置特殊权限的情况下实现用户的匿名上传。
setsebool [-P] boolean value(on,off)或 -p表永久生效
setsebool [-P] Boolean=value(0,1)
再通过ftp就可成功上传文件