1.SELINUX介绍
SELINUX(安全增强型Linux)是可保护你系统安全性的额外机制。在某种程度上,它可以被看作是与标准权限系统。在常规模式中,以用户身份运行进程,并且系统上的文件和其他资源都设置了权限(控制哪些用户对哪些文件具有哪些访问权SELINUX的另一个不同之处在于,若要访问文件,你必须具有普通访问权限和SELINUX访问权限。因此,即使以超级用户身份root运行进程,根据进程以及文件或资源的SELINUX安全性上下文可能拒绝访问文件或资源限)标签。我们可以通过getenforce命令查看selinux状态:enforcing强制 permissive警告 disabled关闭。
- 显示及更改SELINUX模式
setenforce 0命令可以将enforcing强制类型转换为permissive警告
setenforce 1命令可以将permissive警告类型转换为enforcing强制
enforcing强制变为 disabled关闭,改文件/etc/sysconfig/selinux
要reboot机子修改才能成功。
2.SELINUX安全上下文
当SELINUX模式关闭时,将一个文件移动到匿名用户的家目录下,进行匿名用户访问时我们可以查看到此文件。(如下图aaa)(此实验为了方便对比效果,在一个机子上同时下载了客户端和服务端,所以可以在本机上访问本机ftp服务器)
- getenforce
disabled关闭
- enforcing强制
对文件的影响:给文件会添加CONTEXT安全上下文
当SELINUX模式为强制模式时,将一个文件移动到匿名用户的家目录下,进行匿名用户访问时我们可以发现并不能看到此文件。(如下图westosfile文件)(此实验为了方便对比效果,在一个机子上同时下载了客户端和服务端,所以可以在本机上访问本机ftp服务器)
文件复制进去匿名用户家目录后不能查看到,因为/var/ftp/pub和/var/ftp/westosfile两个目录的安全上下文不同。我们可以把安全上下文修改成一样的。
(1)临时修改
chcon -t public_content_t westosfile 修改westosfile文件的安全上下文为public_content_t。
(2)永久修改
为实验效果方便查看,我将匿名用户访问的家目录改为/mnt,并在/mnt目录下创建4个文件。
vim /etc/vsftpd/vsftpd.conf
anon_root=/mnt
通过下图操作,我们可以看到我们在/mnt目录下创建了4个文件,但是我们通过匿名用户访ftp服务时查看的家目录中没有文件。
退出访问,通过ls -Z /mnt语句我们可以查看到/mnt目录下的文件的安全上下文不是public_content_t。
通过下面两条命令修改安全上下文。
再次使用匿名用户访问,可以查看到匿名用户家目录/mnt下的文件。
3.管理SELinux布尔值
SELinux布尔值是更改SELinux策略行为的开关。SELinux布尔值是可以启用或禁用的规则。安全管理员可以使SELinux布尔值来调整策略,以有选择地进行调整。
- 在强制模式下上传文件
getsebool命令用来显示布尔值,setsebool用来修改布尔数值。
我们通过getsebool -a |grep ftp命令筛选出我们要查看的ftp服务的布尔数值。
setsebool -P ftpd_anon_write on 命令将ftpd_anon_write 打开。
查看/var/ftp/pub/目录的安全上下文,我们可以看到此目录的安全上下文中没有写权限,通过chcon命令为此目录安全上下文添加写权限。
我们在服务端修改/etc/vsftpd/vsftpd.conf文件,如下图允许你名用户上传文件并注释掉之前的家目录。
在客户端访问服务端时可以上传文件。
4.查看selinux日志
存放setlinux日志的文件为 /var/log/audit/audit.log文件,但此文件中只存放报错信息并不不提供解决方案。而/var/log/messages日志文件在安装了setroubleshoot软件的情况下会显示具体的报错以及解决方案。
我们通过rpm -qa |grep setroubleshoot查看服务端已经下载了setroubleshoot-server软件。
为了查看效果更清晰,我们将匿名用户家目录下所以文件删掉,在别的目录创建一个文件(aaa),将其移动到匿名用户家目录下。(此实验的环境与上面的实验环境相同)
在客户端访问我们查看不到任何文件。(因为安全上下文不同)
在服务端查看日志, /var/log/audit/audit.log文件只显示错误,不显示解决方式。
查看/var/log/messages日志文件可看到错误与解决方案。