Separação de privilégios do Apache vhost usando mod_selinux

Separação de privilégios do Apache vhost usando mod_selinux

eu tenho 2sites/aplicativosem um servidor; um aplicativo proprietário e Nextcloud. Nextcloud usará o files_externalplugin de armazenamento que permitelocalmonta, mas eu façoNÃOdeseja que ele seja capaz de navegar e visualizar a fonte do aplicativo proprietário... assim mod_selinuxe sedomain filhos.

Estou usando mod_selinuxpara criar filhos de domínio e atribuindo um ID filho a cada um dos sites e rotulando seus respectivos aplicativos e diretórios de dados de acordo em suas definições de vhost ...

httpd.conf

selinuxServerDomain *:s0-s0:c0.c100

proprietário.vhost.conf

selinuxDomainVal *:s0:c10

nextcloud.vhost.conf

selinuxDomainVal *:s0:c20

O diretório do aplicativo, onde o código está localizado, possui as seguintes permissões e contextos aplicados...

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

O problema... Tudo está funcionando, mas o problema é que ainda posso navegar na pasta do aplicativo proprietário usando nextcloud, mesmo que o diretório do aplicativo proprietário tenha um contexto de domínio limitado a s0:c10e, na medida em que o vhost esteja definido, Nextclouddeveestar correndo como s0:c20.

Eu sei que o SELinux está fazendo seu trabalho porque não consigo visualizar pastas como /etc, emboraoutroos usuários têm permissões de leitura, só posso visualizar pastas com contextos como httpd_sys_(rw_)content_tdeveriam ser.

Eu esperava que um processo filho c20não fosse capaz de ler uma pasta solicitando c10. Então a única coisa que consigo pensar é que os filhos gerados de httpd_t(via mod_selinux) não estão usando os selinuxDomainValcontextos que defini nos arquivos vhost.

Não tenho certeza do que fiz de errado, configurei mal de alguma forma ou esqueci uma etapa? Agradeceríamos qualquer ajuda que você possa oferecer.

Informação extra...

  • CentOS8
  • Apache2.4.37
  • PHP 7.3 (via remi)
  • PHP-FPM
  • mod_selinux (RPM reembalado do fedora 31)

Responder1

Nextcloud é um software baseado em PHP, não tenho certeza de como funciona o seu software proprietário (talvez também PHP?). A navegação real no diretório no Nextcloud acontece usando PHP, no seu caso usando PHP-FPM pelo que recebo. Eu diria que você está usando o mesmo pool PHP-FPM para ambos os VHosts ou que o contexto PHP-FPM SELinux é o mesmo em ambos os pools. Mesmo que minha suposição possa estar errada, você também deve fornecer detalhes aqui sobre sua configuração do PHP e o que você fez (ou não fez) em relação ao SELinux.

informação relacionada