支持在 discourse-setup 中添加 SELinux 上下文

discourse-setup 能否为 SELinux 系统添加上下文?这将极大提升 RHEL 用户(如 CentOS、Fedora 等)的安全性。

3 个赞

在这里获得关注度的最佳方式是提交一个概念验证的 PR。

4 个赞

我在源码仓库根目录下找不到任何 discourse-setup。它不是一个 sh 脚本吗?

编辑:找到了。我刚才看的是 discourse/discourse,而不是 discourse/discourse-docker

1 个赞

@GalacticLion7

我理解许多人需要 SELinux 提供的增强安全性及其带来的所有优势。

容器化架构(如 Docker)的主要目的和显著优势之一是,只要容器管理系统(在本例中为 Discourse 使用的 Docker)正常运行,容器化应用程序就可以在任何底层架构上运行。

我的观点是,应用程序开发团队不应陷入支持每种用户请求的非标准 OS 发行版 Docker 安装方式的“兔子洞”。这违背了运行容器化架构的主要目的之一。

在我看来,更具可维护性的做法是:系统管理员应确保其 Docker 安装符合标准方式运行。如果其 Docker 配置不符合“Discourse 标准”,则应添加指向二进制文件、文件和目录的符号链接,以匹配主流的 Docker 标准配置。

操作系统发行版随时可能发生变化,已安装应用程序的配置也不例外。如果应用程序团队(例如 Discourse)开始扩展其配置文件以适配各种 Docker 配置,那么他们就必须跟踪每个操作系统发行版在每次新版本发布时的变更。

对于我们而言,如果要在 SELinux 上运行 Discourse(顺便一提,我们使用的是 Ubuntu),我们很可能会首先编写一个脚本,创建 SELinux 所需的符号链接,使其与 Discourse 支持的标准发行版中安装和配置的 Docker 文件相匹配。

我快速查询了几家 VPS 提供商,并考虑如果能在廉价的 VPS 上搭建 SELinux 环境,就为您编写这个脚本。可惜,我所使用的 VPS 提供商(Linode 和 Digital Ocean)均不提供 SELinux,因此我放弃了这个想法。

您是否知道任何“廉价且可靠的 VPS”提供商,可以让我快速搭建 SELinux 环境?

3 个赞

既然 Discourse 推荐使用 Ubuntu,那么在投入时间研究 SELinux 之前,您是否应该先推动对 AppArmor 的支持?

1 个赞

谢谢。我现在想起来了。感谢你的提醒。

Security-Enhanced LinuxSELinux)是一个 Linux 内核 安全模块,它提供了一种支持 访问控制 安全策略的机制,包括 强制访问控制(MAC)。

Linux 内核 安全模块

SELinux 代表了限制已安装软件可执行操作的几种可能方法之一。另一个流行的替代方案是 AppArmor,它可用于 SUSE Linux Enterprise Server(SLES)、openSUSE基于 Debian 的平台。AppArmor 最初是作为现已停止的 Immunix Linux 平台的一个组件而开发的。由于 AppArmor 和 SELinux 在本质上截然不同,它们构成了软件控制的两种不同方案。SELinux 通过重新定义某些概念,提供了更丰富的策略选择;而 AppArmor 则旨在通过扩展与 DAC 相同的系统管理语义,将其延伸至强制访问控制层面,从而实现简单性。

说实话,我忘了 SELinux 是一个模块,而不是一个发行版。这是我的疏忽。

也许 @GalacticLion7,如果你需要这种级别的访问控制,你是否考虑过在 Ubuntu 上使用 SELinux?

例如,可以参考:

https://www.linode.com/docs/quick-answers/linux/how-to-install-selinux-on-ubuntu-18-04/

看来你有很多选项可以选择,@GalacticLion7 :slight_smile: 也许选一个专为 Ubuntu 设计或与其兼容的方案(因为 Discourse“官方”支持 Ubuntu)是个不错的主意,你觉得呢?

1 个赞

@neounix 但正如我之前所说,具体是哪个发行版并不重要。这仅适用于那些 已安装 SELinux 的系统,无论是内置的还是手动安装的。

1 个赞

那么我的建议是,你选择 Ubuntu(Discourse 官方支持),安装 SELinux 并进行概念验证。一旦运行成功,可以考虑提交 PR 并在开发讨论区发起相关讨论。

你觉得这个方案如何?

2 个赞