Estou configurando um servidor web que hospedará vários sites diferentes como o Apache VirtualHosts, e cada um deles terá a possibilidade de executar scripts (principalmente PHP, possivelmente outros).
Minha pergunta é como isolar cada um desses VirtualHosts um do outro e do resto do sistema? Não quero que, por exemplo, o site X leia a configuração do site Y ou de qualquer um dos arquivos "privados" do servidor.
No momento, configurei o VirtualHosts com FastCGI, PHP e SUExec, conforme descrito aqui ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), mas o SUExec apenas impede que os usuários editem / executem arquivos diferentes dos seus - eles ainda podem ler informações confidenciais, como arquivos de configuração.
Pensei em remover a permissão de leitura global do UNIX para todos os arquivos no servidor, pois isso resolveria o problema acima, mas não tenho certeza se posso fazer isso com segurança sem interromper a função do servidor.
Também procurei usar o chroot, mas parece que isso só pode ser feito por servidor e não por host virtual.
Estou procurando sugestões que isolem meus VirtualHosts do resto do sistema.
PS Estou executando o servidor Ubuntu 12.04
RESPOSTA: Eu terminei quase seguindo a minha configuração atual, mas executando uma prisão chroot para todos os hosts virtuais, por exemplo, tendo a prisão chroot /var/www
e depois tendo todos os dados dos usuários em subpastas, cada uma com permissões de grupo / outros r / w / x Desativado. Essa opção era desejável, especialmente porque tudo é possível sem nenhuma modificação no código-fonte.
Selecionei a resposta do @Chris, porque foi completamente escrita e também considerada FTP e SELinux
mod_userdir
oferece hospedagem virtual de domínios separados. Além disso, tenho preocupações com a segurança em termos de isolamento, pois não consigo encontrar nada sobre isso entre os diretórios do usuário no Apache. Parece apenas não oferecer esse recurso.