一、基本selinux安全性概念
selinux(安全增强型linux):内核级的加强形火墙,内核上的插件,改变后要重启。
selinux是可保护系统安全性的额外机制。在某种程度上,它可以被看作是与标准权限系统并行的权限系统。在常规模式中,以用户身份运行进程,并且系统上的文件和其他资源都设置了权限标签(控制哪些用户对哪些文件具有哪些访问权,selinux的另一个不同之处在于,若要访问文件必须具有普通访问权限和selinux访问权限。因此,即使以超级用户身份运行程序,根据进程以及文件或资源的selinux安全性上下文可能拒绝访问文件或资源)
二、selinux的三种模式
| enforcing | 强制模式,selinux 主动拒绝访问尝试读取类型上下文为tmp_t的web服务器。在强制模式中,selinux既记录冲突,也强制执行规则 |
|---|---|
| permissive | 宽容模式,通常对于对问题进行故障排除。在许可模式下,即使没有明确规则,selinux也允许所有交互,并且记录所有被拒绝的交互。此模式可以用于确定你是否有selinux问题。无需重新引导即可从强制模式转为许可模式,或者从许可模式转向强制模式 |
| disable | 不警告不拒绝/关闭状态 |
selinux工作模式的设定:
情况一: disable与enforcing或者permissive的切换
第一步:查看,并且进入配置文件
[[email protected] Desktop]# getenforce ###查看selinux状态
Enforcing
[[email protected] Desktop] vim /etc/selinux/config ###进入配置文件
第二步:配置文件如下
第三步:重启系统后再次查看
注意: disable与enforcing或者permissive的切换需要重启系统,否则不生效
情况二: enforcing与permissive的相互切换,此情况是不需要重启系统的,如下图所示:
[[email protected] Desktop]# getenforce ###查看selinux状态
Enforcing ###强制模式
[[email protected] Desktop]# setenforce 0 ###开启
[[email protected] Desktop]# getenforce ###查看selinux状态
Permissive ###宽容模式
[[email protected] Desktop]# setenforce 1 ###关闭
[[email protected] Desktop]# getenforce ###查看selinux状态
Enforcing ###强制模式
注意: 如果系统在关闭(disable)SElinux的状态下运行了一段时间,
在打开SElinux之后的第一次重启速度可能比较慢,因为系统必须为磁盘中的文件创建安全上下文。
三、selinux对服务、进程以及文件的影响
- 针对文件,会对系统中每个文件添加安全上下文(context)
- 针对进程,会对系统中的每个进程添加安全上下文(context)
- 会在系统服务上设定sebool开关
- 当进程安全上下文和文件的安全上下文不匹配时,那么进程无法访问此文件
- sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebol值
当selinux状态为enforcing时:
lftp看不见移动到默认访问目录下的文件westosfile当我们用ls -Z查看文件的标签,发现hhh文件的安全上下文不同
当selinux状态为disabled时:
lftp可以看见移动到默认访问目录下的文件gao
总结:当selinux为enforcing时,它会给系统中的文件,进程,服务添加安全上下文,相对应的能访问,不对应的无法访问
四、修改安全上下文
1. 临时修改安全上下文
chcon -t 安全上下文 文件/目录
文件安全上下文:
lftp访问,访问不到,如下所示:
临时目录文件安全上下文:
建立新的目录,查看其安全上下文,并将其修改为vsftpd匿名用户的默认访问目录
配置文件如下所示:
重启服务,再次查看,发现lftp查看不到,如下所示:
临时更改目录的安全上下文,并用lftp查看,发现之前文件和新建文件都可以看见,如下:
重启selinux,如下:
reboot重启系统,再次进入配置文件进行设置,如下所示:
查看目录安全安全上下文,发现恢复原本
因此,证明安全上下文更改是临时的
2. 永久修改安全上下文
由于某些安全上下文被系统记录着,所以是永久的
semanage fcontext -l ##查看
semanage fcontext -a -t public_content_t '/ftpdir(/.*)?' ##更改系统记录的安全上下文
restorecon -RvvF /ftpdir/ ##使目录本身的安全上下文也
用lftp查看,可以查看到,如下:
五、修改selbool值
用student上传文件:
1.在真机上连接167,上传文件发现不能上传,出现553报错,如下所示:
2.查看并开启服务功能,如下所示:
3.再次上传,发现上传成功
匿名用户上传:
1.修改文件的权限,并进行配置文件
2. 开启服务,如下图所示:
3. 使默认家目录子目录可写
4. lftp检测
注意: sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值
六、selinux提供解决方案
1.首先在/mnt里建立一个文件,然后将文件移动到/var/ftp下
2. lftp查看不到文件
3. 为了保证实验环境纯净,将日志清空
4.查看日志,发现没有解决方法,如下图所示:
4. 发现selinux提供了一个解决问题的软件包,并且将软件包安装
<1>搜索软件包
<2> 安装软件包
5. 清空日志,再次查看,出现解决方案
6. 按照上一步解决方案处理,如下所示:
7.再次查看,出现文件ppp