mod_selinux를 사용한 Apache 가상호스트 권한 분리

mod_selinux를 사용한 Apache 가상호스트 권한 분리

나는 2개를 가지고 있다사이트/앱서버에서; 독점 앱과 Nextcloud. Nextcloud는 files_external다음을 허용하는 스토리지 플러그인을 사용할 예정입니다 .현지의마운트되지만 나는 그렇습니다아니다독점 앱의 소스를 탐색하고 볼 수 있기를 원합니다. 따라서 mod_selinuxsedomain 하위도 마찬가지입니다.

저는 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

문제는 ... 모든 것이 실행 중이지만 문제는 독점 앱의 디렉터리에 도메인 컨텍스트가 로 제한되어 있고 s0:c10가상 호스트가 정의된 한 Nextcloud를 사용 하더라도 nextcloud를 사용하여 독점 앱 폴더를 계속 탐색할 수 있다는 것입니다.~해야 한다으로 실행 중입니다 s0:c20.

나는 /etc와 같은 폴더를 볼 수 없기 때문에 SELinux가 그 일을 하고 있다는 것을 알고 있습니다.다른사용자에게 읽기 권한이 있으므로 컨텍스트가 있는 폴더만 볼 수 있습니다 httpd_sys_(rw_)content_t.

c20나는 의 하위 프로세스가 를 요청하는 폴더를 읽을 수 없어야 한다고 예상했습니다 c10. 그래서 내가 생각할 수 있는 유일한 것은 httpd_t(via )의 생성된 자식이 내가 vhost 파일에 정의한 컨텍스트를 mod_selinux사용하지 않는다는 것입니다.selinuxDomainVal

내가 무엇을 잘못했는지 잘 모르겠습니다. 제가 이것을 잘못 구성했습니까? 아니면 한 단계를 잊어버렸습니까? 당신이 제공할 수 있는 어떤 도움이라도 감사하겠습니다.

추가 정보...

  • 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와 관련하여 수행한 작업(또는 수행하지 않은 작업)에 대한 세부 정보도 제공해야 합니다.

관련 정보