mod_selinux を使用した Apache vhost 権限分離

mod_selinux を使用した Apache vhost 権限分離

私は2つ持っていますサイト/アプリサーバー、専用アプリ、Nextcloudです。Nextcloudはfiles_externalストレージプラグインを使用して、地元マウントしますが、私はない独自のアプリのソースを参照して表示できるようにしたい...したがってmod_selinux、sedomain の子。

私はmod_selinuxドメインの子を作成するために使用しており、各サイトに子 ID を割り当て、それぞれの vhost 定義でそれぞれのアプリとデータ ディレクトリにラベルを付けています...

confファイル

selinuxServerDomain *:s0-s0:c0.c100

独自の.vhost.conf

selinuxDomainVal *:s0:c10

次のクラウド

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を使用してプロプライエタリアプリのフォルダを参照できることです。vhosts0:c10が定義されている限り、Nextcloudすべきとして実行しますs0:c20

SELinuxが機能しているのは、/etcのようなフォルダが表示されないからです。他のhttpd_sys_(rw_)content_tユーザーに読み取り権限が与えられているため、コンテキストが適切な フォルダーのみを表示できます。

の子プロセスが、c20を要求するフォルダーを読み取ることはできないはずです。したがって、考えられる唯一のことは、を介して生成された の子が、vhost ファイルで定義したコンテキストを使用していないc10ということです。httpd_tmod_selinuxselinuxDomainVal

何を間違えたのかわかりません。設定を間違えたのでしょうか、それとも手順を忘れたのでしょうか? ご協力いただければ幸いです。

追加情報...

  • セントOS8
  • アパッチ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 に関して行ったこと (または行わなかったこと) に関する詳細もここに提供する必要があります。

関連情報