SELINUX的基础知识

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日志文件可看到错误与解决方案。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43328213/article/details/83720902