Konfiguruję serwer WWW, który będzie hostował wiele różnych stron internetowych jako Apache VirtualHosts, każda z nich będzie miała możliwość uruchamiania skryptów (głównie PHP, możliwe inne).
Moje pytanie brzmi: w jaki sposób izoluję każdy z tych VirtualHostów od siebie nawzajem i od reszty systemu? Nie chcę, aby np. Strona X odczytywała konfigurację strony Y lub któregokolwiek z „prywatnych” plików serwera.
W tej chwili skonfigurowałem VirtualHosts z FastCGI, PHP i SUExec, jak opisano tutaj ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), ale SUExec uniemożliwia użytkownikom edycję / wykonywanie plików innych niż ich własne - użytkownicy nadal mogą czytać poufne informacje, takie jak pliki konfiguracyjne.
Myślałem o usunięciu globalnego uprawnienia odczytu UNIX dla wszystkich plików na serwerze, ponieważ rozwiązałoby to powyższy problem, ale nie jestem pewien, czy mogę to bezpiecznie zrobić bez zakłócania działania serwera.
Zastanawiałem się również nad użyciem chroot, ale wydaje się, że można to zrobić tylko dla poszczególnych serwerów, a nie dla hostów wirtualnych.
Szukam sugestii, które odizolują moje VirtualHosts od reszty systemu.
PS Używam serwera Ubuntu 12.04
Moja ODPOWIEDŹ: Skończyłem z prawie śledzeniem mojej bieżącej konfiguracji, ale zrobieniem więzienia chroot dla wszystkich hostów wirtualnych, np. Mając więzienie chroot, /var/www
a następnie przechowując dane wszystkich użytkowników w podfolderach, każdy z uprawnieniami grupy / innych r / w / x niepełnosprawny. Ta opcja była pożądana, zwłaszcza że jest to możliwe bez żadnych modyfikacji kodu źródłowego.
Wybrałem odpowiedź @Chris, ponieważ została dokładnie napisana, a także rozważała FTP i SELinux
mod_userdir
oferuje wirtualny hosting oddzielnych domen. Ponadto mam obawy dotyczące bezpieczeństwa w związku z izolacją, ponieważ nie jestem w stanie znaleźć niczego na ten temat między katalogami użytkowników w Apache. Wygląda na to, że nie oferuje tej funkcji.