使用 mod_selinux 进行 Apache vhost 权限分离

使用 mod_selinux 进行 Apache vhost 权限分离

我有2个网站/应用程序在服务器上;专有应用程序和 Nextcloud。Nextcloud 将使用files_external允许当地的但我确实不是希望它能够浏览和查看专有应用程序的源代码...从而mod_selinux和 sedomain 子级。

我正在使用mod_selinux创建子域,并为每个站点分配一个子 ID,并在其 vhost 定义中相应地标记它们各自的应用程序和数据目录...

httpd配置文件

selinuxServerDomain *:s0-s0:c0.c100

专有.vhost.conf

selinuxDomainVal *:s0:c10

nextcloud.vhost.conf

selinuxDomainVal *:s0:c20

代码所在的应用程序目录具有以下权限和上下文应用...

drwxr-x---.  4 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c10 4096 Jan 17 17:02 proprietary_app_dir
drwxr-x---. 15 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c20 4096 Jan 20 08:09 nextcloud

问题... 一切都在运行,但问题是,我仍然可以使用 nextcloud 浏览专有应用程序文件夹,即使专有应用程序的目录的域上下文仅限于s0:c10,并且就 vhost 的定义而言,Nextcloud应该以 身份 运行s0:c20

我知道 SELinux 正在执行其工作,因为我无法查看 /etc 等文件夹,尽管其他用户对其具有读取权限,我只能查看具有httpd_sys_(rw_)content_t应有上下文的文件夹。

我原本以为的子进程c20不应该能够读取请求的文件夹c10。所以我唯一能想到的是httpd_t(via mod_selinux) 生成的子进程没有使用selinuxDomainVal我在 vhost 文件中定义的上下文。

我不确定我做错了什么,我是否以某种方式错误配置了它,或者我是否忘记了某个步骤?如果您能提供任何帮助,我将不胜感激。

额外信息...

  • CentOS8
  • Apache 2.4.37
  • PHP 7.3(通过 remi)
  • PHP-FPM
  • mod_selinux(来自 fedora 31 的重新打包的 RPM)

答案1

Nextcloud 是一款基于 PHP 的软件,不确定您的专有软件如何工作(也许也是 PHP?)。Nextcloud 中的实际目录浏览使用 PHP 进行,就我所知,您的情况是使用 PHP-FPM。我假设您要么对两个 VHost 使用相同的 PHP-FPM 池,要么 PHP-FPM SELinux 上下文在两个池中相同。即使我的假设可能是错误的,您也应该在此处提供有关您的 PHP 配置以及您对 SELinux 所做(或未做)的事情的详细信息。

相关内容