1 背景
- 为研究网络安全,本人准备在CentOS上部署Vulhub靶场来实现,部署过程参考文章《CentOS上部署Vulhub靶场》,部署过程一切顺利。
- 部署后,启动Nginx CVE-2013-4547漏洞进行实验,在上传文件时出现文件无法成功上传的问题,该问题并非由于网站对文件类型或内容的限制,而是其他方面的原因,一开始我以为是相关文件夹没有“文件写入”权限导致的,对所有文件都进行权限修改,然而没卵用。
- 后来偶然在一次启动容器时,在屏幕的右上角发现系统弹出了SELinux警告(估计是之前将终端设置为全屏就没看到)。
- 点开该通知,发现与写入权限有关,因此可能是这个原因导致漏洞环境执行失败。
2 SELinux 概述
- 概述:SELinux的全称是Security Enhanced Linux, 就是安全加强的Linux。在SELinux之前,root账号能够任意的访问所有文档和服务;如果某个文件设为777,那么任何用户都可以访问甚至删除;这种方式称为DAC(主动访问机制),很不安全。
- DAC 自主访问控制: 用户根据自己的文件权限来决定对文件的操作,也就是依据文件的own,group,other/r,w,x权限进行限制。Root有最高权限无法限制。r,w,x权限划分太粗糙。无法针对不同的进程实现限制。
- SELinux则是基于MAC(强制访问机制),简单的说,就是程序和访问对象上都有一个安全标签(即selinux上下文)进行区分,只有对应的标签才能允许访问。否则即使权限是777,也是不能访问的。
- 在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户(u)、角色(r)和类型(t)标识符。
- 工作流程:当程序访问资源时,主体程序必须要通过selinux策略内的规则放行后,才可以与目标资源进行安全上下文的比对,若比对失败则无法存取目标,若比对成功则可以开始存取目标,最终能否存取目标还要与文件系统的rwx权限的设定有关。所以启用了selinux后出现权限不符的情况时,你就得一步一步的分析可能的问题了。
3 解决
- 对于生产环境,建议根据提示信息一步步解决问题,但是此处是为了搭建漏洞实验环境,就直接采用比较暴力的方法,直接关闭SELinux。
- 在root身份下使用命令
vim /etc/selinux/config
对文件进行编辑,将第六行中的SELINUX=enforcing改为SELINUX=disabled,如下图,保存后重启系统(不知道有没有其他重启方法)。