使用 chcon 从本质上绕过 selinux 是否比将 selinux 设置为宽容更安全?

使用 chcon 从本质上绕过 selinux 是否比将 selinux 设置为宽容更安全?

我想知道是否可以使用 SELinux 使 CentOS 7 服务器的安全性chcon低于 SELinux 处于宽容模式的安全性。我本质上是尝试使用 Nginx 设置 Phusion Passenger,以便与rbenv不是 sudoer 的用户使用安装的 Ruby 版本(一个 Ruby 版本管理器,本质上在用户的主目录中安装 Ruby 库、二进制文件、lib 等)。我使用过类似的工具setroubleshoot-server来从本质上解决各种问题,例如使用 SELinux 布尔值的问题,但这些工具不能帮助我诊断安装在特定用户主目录中的 Ruby 版本的问题。在以下情况下,Phusion Passenger 和 Nginx 一切正常:

  • 使用系统范围的 Ruby (v2.0) 安装(SELinux 处于强制模式)
  • 使用rbenv已安装的 Ruby (v2.2.3)(SELinux 处于宽容模式)
  • rbenv运行以下命令后使用已安装的 Ruby (v2.2.3)(SELinux 处于强制模式):

    chcon -R --reference /bin /home/myuser/.rbenv/

请注意,我在配置更改之间重新启动了服务器以验证观察到的行为。

我觉得我本质上是通过chcon更改包含rbenvRuby 版本的文件夹的安全上下文来绕过 SELinux,使其具有与该/bin文件夹相同的安全上下文。chcon以这种方式使用是否会产生任何意想不到的安全后果?

这可能超出了问题的范围,但是是否有正确的方法来设置安装在用户主目录中的 Ruby 解释器的安全上下文以与 Nginx 和 Phusion Passenger 一起使用?

答案1

SELinux 默认拒绝任何未明确允许的内容。当 SELinux 在许可模式下运行时,SELinux 会记录权限拒绝但不会强制执行(即 SELinux 不会阻止任何操作完成)。在强制模式下,SELinux 记录并强制拒绝权限(即 SELinux 阻止操作完成)。

使用chcon本质上绕过 SELinux 并不会让您的系统比在宽容模式下使用 SELinux 更安全,因为强制模式下的 SELinux 仍然会拒绝对系统中您未接触过的所有其他部分进行操作chcon

来源:https://source.android.com/security/selinux/

相关内容