Sto installando un web server che ospiterà un numero di siti web diversi come Apache VirtualHosts, ognuno di questi avrà la possibilità di eseguire script (principalmente PHP, possibilmente altri).
La mia domanda è: come isolare ciascuno di questi VirtualHosts l'uno dall'altro e dal resto del sistema? Ad esempio, non voglio che il sito Web X legga la configurazione del sito Web Y o dei file "privati" del server.
Al momento ho configurato VirtualHosts con FastCGI, PHP e SUExec come descritto qui ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), ma SUExec impedisce solo agli utenti di modificare / eseguire file diversi dai propri - gli utenti possono comunque leggere informazioni riservate come i file di configurazione.
Ho pensato di rimuovere l'autorizzazione di lettura globale UNIX per tutti i file sul server, poiché ciò risolverebbe il problema precedente, ma non sono sicuro di poterlo fare in modo sicuro senza interrompere la funzione del server.
Ho anche esaminato l'uso di chroot, ma sembra che ciò possa essere fatto solo per server e non per host virtuale.
Sto cercando eventuali suggerimenti che isoleranno i miei VirtualHosts dal resto del sistema.
PS Sto eseguendo il server Ubuntu 12.04
La mia RISPOSTA: ho terminato quasi seguendo la mia configurazione attuale, ma facendo una prigione chroot per tutti gli host virtuali, ad esempio avendo la prigione chroot dentro /var/www
e quindi avere tutti i dati degli utenti nelle sottocartelle ciascuna con autorizzazioni di gruppo / altri r / w / x Disabilitato. Questa opzione era auspicabile soprattutto perché è possibile senza modifiche al codice sorgente.
Ho scelto la risposta di @Chris, perché è stata scritta a fondo e ha considerato anche FTP e SELinux
mod_userdir
offre l'hosting virtuale di domini separati. Inoltre, ho delle preoccupazioni in merito alla sicurezza in termini di isolamento poiché non riesco a trovare nulla tra le directory degli utenti all'interno di Apache. Sembra proprio che non offra questa funzionalità.