J'installe un serveur Web qui hébergera un certain nombre de sites Web différents en tant qu'Apache VirtualHosts, chacun d'eux aura la possibilité d'exécuter des scripts (principalement PHP, d'autres possiblu).
Ma question est de savoir comment isoler chacun de ces VirtualHosts les uns des autres et du reste du système? Je ne veux pas, par exemple, que le site Web X lise la configuration du site Web Y ou l'un des fichiers "privés" du serveur.
Pour le moment, j'ai configuré les VirtualHosts avec FastCGI, PHP et SUExec comme décrit ici ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), mais SUExec empêche uniquement les utilisateurs de modifier / exécuter des fichiers autres que les leurs - les utilisateurs peuvent toujours lire des informations sensibles telles que les fichiers de configuration.
J'ai pensé à supprimer l'autorisation de lecture globale UNIX pour tous les fichiers sur le serveur, car cela résoudrait le problème ci-dessus, mais je ne sais pas si je peux le faire en toute sécurité sans perturber la fonction du serveur.
J'ai également étudié l'utilisation de chroot, mais il semble que cela ne peut être fait que par serveur et non par hôte virtuel.
Je recherche des suggestions qui isoleront mes VirtualHosts du reste du système.
PS J'utilise le serveur Ubuntu 12.04
Ma RÉPONSE: J'ai fini par presque suivre ma configuration actuelle, mais en faisant une prison chroot pour tous les hôtes virtuels, par exemple en ayant la prison chroot dedans /var/www
puis en ayant toutes les données des utilisateurs dans des sous-dossiers avec chacun des permissions group / others r / w / x désactivée. Cette option était souhaitable surtout parce qu'elle est possible sans aucune modification du code source.
J'ai sélectionné la réponse de @Chris, car elle a été entièrement écrite et également considérée comme FTP et SELinux
la source
mod_userdir
offre l'hébergement virtuel de domaines distincts. De plus, je suis préoccupé par la sécurité en termes d'isolement, car je ne trouve rien à ce sujet entre les répertoires utilisateur d'Apache. Il ne semble tout simplement pas offrir cette fonctionnalité.Je suggère de jeter un œil à
suphp
ou PHP-FPM .Il permettra essentiellement à l'interpréteur PHP de «su» à un utilisateur spécifique configuré pour ce VirtualHost. Cela vous permettra d'utiliser les autorisations générales du système de fichiers pour isoler chaque VirtualHost.
Je recommanderais FPM pour des considérations de performances. Depuis la page d'accueil, voici ce qui vous intéresse le plus:
la source
Regardez
chroot
.Quelques points de départ:
Apache chrooting en toute simplicité
Environnement chroot pour Apache (Debian)
Apache Chroot Jail: hébergement virtuel
la source
/var/www
, et avoir tous les hôtes dans un sous-répertoire là-dedans, chacun de ces sous-répertoires ayant supprimé l'autorisation globale d'exécution / lecture?chroot
, et vous pouvez le faire par serveur virtuel. Voici un exemple. Dans ce cas, ils utilisentmod_chroot
.