一.SELINUX概念
SELINUX(安全性增强型linux,内核型的加强性防火墙)是可保护系统安全性的额外机制,在某种程度上,它可以被看作是与标准权限并行的权限系统。在常规模式中,以用户身份运行进程,并且系统上的文件和其他资源都设置了权限(控制哪些用户对哪些文件具有哪些访问权,SELINUX的另一个不同之处在于若要访问文件,必须具有普通访问权限和SELINUX访问权限。因此,即使以超级用户身份root运行进程,根据进程以及文件或资源的SELINUX安全性上下文也可能拒绝访问文件或资源标签
二.selinux的模式
Disabled | 不警告不拒绝/关闭状态 |
---|---|
Enforcing | 强制模式,如果不符合会拒绝访问 |
Permissive | 警告模式,不符合会警告但是可以访问 |
三.管理selinux状态
<1>查看
getenforce ##查看selinux的状态
<2>切换selinux状态
vim /etc/sysconfig/selinux selinux配置文件
SELINUX=enforcing ##selinux开启,级别为强制
SELINUX=permissive ##selinux开启,级别为警告
SELINUX=disabled ##selinux关闭,
setenforce 0|1 ##更改selinux当前的级别0标示警告1标示强制
注意:当selinux从关到开,或者从开到关,需要重启系统
实验如下:
从开到关状态:
此时的selinux状态
编辑配置文件
将其改为disabled
重启
开机之后查看状态:
从关到开状态:
将状态修改为enforcing
重启
开机后查看状态:
警告状态与强制状态之间的切换:
总结:当selinux从关到开,或者从开到关,需要重启系统,而警告状态切换强制状态或者强制状态切换警告状态不需要重启(可以直接切换)。
四:selinux对服务,进程,文件的影响
1.针对文件,会对系统中每个文件添加安全上下文(context)
2.针对进程,会对系统中的每个进程添加安全上下文(context)
3.会在系统服务上设定sebool开关
4.当进程安全上下文和文件的安全上下文不匹配时,那么进程无法访问此文件
5.sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值
实验如下:
当selinux状态为disabled时候,lftp可以看见移动到默认访问目录下的文件westosfile
当selinux状态为enforcing时候,lftp可以看不见移动到默认访问目录下的文件hhh
这时候我们用ls -Z查看文件的标签,发现hhh文件的安全上下文不同
原来当selinux为enforcing时,它会给系统中的文件,进程,服务添加安全上下文,只有相对应的才能访问,不对应的无法访问。
五:修改安全上下文
<1>临时更改(更适用于文件)
chcon -t 安全上下文 文件/目录
比如:
chcon -t public_content_t /var/ftp/hhh
实验如下:
临时更改文件安全上下文
lftp去访问,可以访问到
注意:目录本身符合要求,里面的文件不符合,用这个更改文件的安全上下文,文件的安全上下文是永久的
临时目录文件安全上下文
实验如下:
vsftpd原本的默认访问目录的安全上下文如下图所示:
建立一个新的目录,查看其安全上下文并将其修改为vsftpd匿名用户的默认访问目录
用lftp查看
临时更改目录的安全上下文,并用lftp查看
重启selinux
再次重启selinux
查看目录安全安全上下文,发现恢复原本,证明这更改是临时的
<2>永久更改文件安全上下文
有些服务,目录,进程的安全上下文之所以是永久的,是因为它的安全上下文被系统记录着
semanage fcontext -l 查看
semanage fcontext -a -t public_content_t '/ftpdir(/.*)?' 更改系统记录的安全上下文
restorecon -RvvF /ftpdir/ 使目录本身的安全上下文也更改
实验如下:
用lftp查看,可以查看到:
六:修改selbool值
sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值
实验如下:
用student上传文件,发现失败
查看服务功能
将其服务功能打开
再次查看
再次去上传,发现成功
匿名用户上传,发现失败
打开服务功能
再次查看
再去使默认家目录子目录可写
发现可以上传
七:selinux提供解决方案
前提:
我们将一个/mnt下的文件移动到/var/ftp下,lftp查看不到,在日志里会提供一个解决方案,这个方案是怎么来的?这是我们要探究的问题
移动:
为了保证实验环境纯净,将日志清空
发现查看不到
查看日志
那么这个解决方案是从那里来的?我们需要解决这个问题
实验如下:
发现selinux提供了一个解决问题的软件包
此时我们的系统已经安装这个软件包,我们将其移除掉
移除成功
再去清空日志
lftp查看
查看日志,发现没有提供解决方案
我们再去将这个软件包安装回来
安装完成
清空日志
lftp查看
查看日志
发现提供解决方案
我们按照这个解决方案处理
发现可以查看到kkk文件