tengo 2sitios/aplicacionesen un servidor; una aplicación propietaria y Nextcloud. Nextcloud utilizará el files_external
complemento 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_selinux
y los hijos del sedominio.
Lo estoy usando mod_selinux
para 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:c10
y, 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_t
debería ser.
Habría esperado que un proceso secundario c20
no 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 selinuxDomainVal
contextos 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.