使用 mod_selinux 的 Apache vhost 權限分離

使用 mod_selinux 的 Apache vhost 權限分離

我有2個網站/應用程式在伺服器上;專有應用程式和 Nextcloud。 Nextcloud 將使用files_external儲存插件,該插件允許當地的坐騎,但我做不是希望它能夠瀏覽和查看專有應用程式的原始程式碼...因此mod_selinux和 sedomain 子項目。

我用來mod_selinux建立子網域,並為每個網站分配一個子 ID,並在其虛擬主機定義中相應地標記其各自的應用程式和資料目錄...

httpd.conf

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
  • 阿帕契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 所做(或未做)的詳細資訊。

相關內容