Separación de privilegios de Apache vhost usando mod_selinux

Separación de privilegios de Apache vhost usando mod_selinux

tengo 2sitios/aplicacionesen un servidor; una aplicación propietaria y Nextcloud. Nextcloud utilizará el files_externalcomplemento de almacenamiento que permitelocalse monta, pero lo hagoNOQuiero que pueda navegar y ver el código fuente de la aplicación propietaria... por lo tanto, mod_selinuxy los hijos del sedominio.

Lo estoy usando mod_selinuxpara crear dominios secundarios, y estoy asignando una identificación secundaria a cada uno de los sitios y etiquetando sus respectivas aplicaciones y directorios de datos en consecuencia en sus definiciones de vhost...

httpd.conf

selinuxServerDomain *:s0-s0:c0.c100

propietario.vhost.conf

selinuxDomainVal *:s0:c10

nextcloud.vhost.conf

selinuxDomainVal *:s0:c20

El directorio de la aplicación, donde se encuentra el código, tiene aplicados los siguientes permisos y contextos...

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

El problema... Todo se está ejecutando, pero el problema es que todavía puedo explorar la carpeta de la aplicación propietaria usando nextcloud aunque el directorio de la aplicación propietaria tiene un contexto de dominio limitado a s0:c10y, en la medida en que el vhost esté definido, Nextclouddeberíaestar ejecutando como s0:c20.

Sé que SELinux está haciendo su trabajo porque no puedo ver carpetas como /etc aunqueotrolos usuarios tienen permisos de lectura, solo puedo ver carpetas con contextos como httpd_sys_(rw_)content_tdebería ser.

Habría esperado que un proceso secundario c20no pudiera leer una carpeta que solicita c10. Entonces, lo único que se me ocurre es que los hijos generados de httpd_t(a través de mod_selinux) no están usando los selinuxDomainValcontextos que he definido en los archivos vhost.

No estoy seguro de qué he hecho mal, ¿he configurado esto mal de alguna manera o he olvidado algún paso? Agradecería cualquier ayuda que pueda ofrecer.

Información extra...

  • CentOS8
  • Apache 2.4.37
  • PHP 7.3 (a través de remi)
  • PHP-FPM
  • mod_selinux (RPM reempaquetado de fedora 31)

Respuesta1

Nextcloud es un software basado en PHP, no estoy seguro de cómo funciona el software propietario (¿quizás también PHP?). La navegación real por el directorio en Nextcloud se realiza usando PHP, en su caso usando PHP-FPM por lo que entiendo. Supongo que está utilizando el mismo grupo PHP-FPM para ambos VHosts o que el contexto PHP-FPM SELinux es el mismo en ambos grupos. Incluso mi suposición podría ser errónea, también debería proporcionar aquí detalles sobre su configuración de PHP y lo que hizo (o no hizo) con respecto a SELinux.

información relacionada