Estoy configurando un servidor web que alojará varios sitios web diferentes como Apache VirtualHosts, cada uno de ellos tendrá la posibilidad de ejecutar scripts (principalmente PHP, posiblemente otros).
Mi pregunta es cómo aislar cada uno de estos VirtualHosts entre sí y del resto del sistema. No quiero, por ejemplo, que el sitio web X lea la configuración del sitio web Y o cualquiera de los archivos "privados" del servidor.
Por el momento, he configurado VirtualHosts con FastCGI, PHP y SUExec como se describe aquí ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), pero SUExec solo impide que los usuarios editen / ejecuten archivos que no sean los suyos; los usuarios aún pueden leer información confidencial como archivos de configuración.
He pensado en eliminar el permiso de lectura global de UNIX para todos los archivos en el servidor, ya que esto solucionaría el problema anterior, pero no estoy seguro de si puedo hacerlo sin interrumpir la función del servidor.
También examiné el uso de chroot, pero parece que esto solo se puede hacer por servidor y no por host virtual.
Estoy buscando sugerencias que aislen mis VirtualHosts del resto del sistema.
PD: estoy ejecutando el servidor Ubuntu 12.04
Mi RESPUESTA: Terminé casi siguiendo mi configuración actual, pero haciendo una cárcel chroot para todos los hosts virtuales, por ejemplo, tener la cárcel chroot /var/www
y luego tener todos los datos de los usuarios en subcarpetas, cada uno con permisos de grupo / otros r / w / x discapacitado. Esta opción era deseable, especialmente porque todo es posible sin modificaciones en el código fuente.
Seleccioné la respuesta de @Chris porque estaba completamente escrita y también consideraba FTP y SELinux
mod_userdir
ofrece alojamiento virtual de dominios separados. Además, me preocupa la seguridad en términos de aislamiento, ya que no puedo encontrar nada sobre eso entre los directorios de usuarios dentro de Apache. Parece que no ofrece esa característica.