Isoler Apache virtualhosts du rest du système

Je configure un server Web qui hébergera plusieurs sites Web différents comme Apache VirtualHosts, chacun d'entre eux aura la possibilité d'exécuter des scripts (principalement PHP, possiblu autres).

Ma question est de savoir comment j'indique chacun de ces VirtualHosts de l'un de l'autre et du rest du système? Je ne veux pas, par exemple, le site Web X lire la configuration du site Y ou de l'un des files "privés" du server.

Au moment où j'ai configuré 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 le SUExec empêche uniquement les users d'éditer / exécuter des files autres que le leur – les users peuvent toujours lire des informations sensibles telles que les files de configuration.

J'ai pensé à supprimer l'autorisation de lecture globale UNIX pour tous les files sur le server, car cela corrigerait le problème ci-dessus, mais je ne suis pas sûr de pouvoir le faire sans perturber la fonction du server.

J'ai également cherché à utiliser chroot, mais il semble que cela ne peut être effectué que par server, et non sur un hôte virtuel.

Je cherche des suggestions qui isoleront mes VirtualHosts du rest du système.

PS J'utilise le server Ubuntu 12.04

Ma RÉPONSE: J'ai fini par presque suivre ma configuration actuelle, mais faire une prison chroot pour tous les hôtes virtuels, par exemple avoir la prison chroot dans /var/www et avoir ensuite toutes datatables des users dans les sous-dossiers avec un groupe / autres r / w / x permissions disabled. Cette option était souhaitable, d'autant plus que tout était possible sans modification du code source.

J'ai choisi la réponse de @Chris, car elle a été complètement écrite et a également été considérée comme FTP et SELinux

3 Solutions collect form web for “Isoler Apache virtualhosts du rest du système”

Cela peut être fait en activant le module mod_users dans Apache.

Vous devrez configurer UserDir dans votre configuration apache. Je vous suggère de le faire dans un file de configuration séparé et de l'inclure. Enveloppez l'inclure dans

 <IfModule mod_users.c> Include conf/extra/userdir.conf </IfModule> 

Je peux vous donner tout le tutoriel, mais cela devrait vous aider à configurer Apache: http://www.techytalk.info/enable-userdir-apache-module-ubuntu-debian-based-linux-dissortingbutions/

Indication si vous exécutez SELinux (et vous devriez), vous devriez donner l'access en lecture d'Apache aux maisons d'users. Vous pouvez le faire en définissant:

 sudo setsebool -P httpd_enable_homedirs=On 

Il nécessite également des permissions de file pour l'user dirs public_html directory et les permissions rx sur les directorys parents jusqu'à la racine.

De toute évidence, vous devez configurer chroot pour les users par exemple dans vsftpd. Installer:

 apt-get vsftpd 

Pour configurer chroot, ouvrez /etc/vsftpd/vsftpd.conf avec vi ou nano. Trouver ou décommenter ou append: chroot_local_user = yes

Vous pouvez get le même comportement pour sftp que je recommand sur FTP, ouvrir / etc / ssh / sshd_config et append un bloc Match et cette ligne:

 Subsystem sftp internal-sftp Match Group web_users ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no Match 

Cela chrootera tout user dans le groupe web_users . Aussi, vous devriez nier l'access au shell en le configurant dans / sbin / nologin:

 useradd -G "web_users" -s /sbin/nologin new_user 

S'il s'agit d'un server de production public, je vous suggère également d'appliquer un peu de durcissement sur le operating system, OpenSSH, Apache, PHP, vsftpd et d'appliquer des wrappers iptables et TCP corrects. Je vous recommand de laisser SELinux en place aussi.

Je suggère de jeter un coup d'oeil à suphp ou PHP-FPM .

Il permettra essentiellement à l'interpréteur PHP de «su» à un user spécifique configuré pour VirtualHost. Cela vous permettra d'utiliser les permissions générales du système de files pour isoler chaque VirtualHost.

Je reorderais FPM pour des considérations de performance. À partir de la page d'accueil, c'est ce qui vous intéresse le plus.

Les options de groupe et d'user par groupe sont également intéressantes, ce qui vous permet d'exécuter ce pool spécifique de fpm sous uid et gid; au revoir suphp!

Regardez le chroot .

Quelques points de départ:

Apache chrooting simplifié

Environnement Chroot pour Apache (Debian)

Apache Chroot Jail: Hébergement virtuel

  • "768 work_connections ne suffisent pas" après une nouvelle installation de nginx et ROR
  • Quel est le diff entre resolv.conf et named.conf forwarders?
  • Réglage du timezone sur linux (ubuntu)
  • Ubuntu 9.10: comment dépanner un script de démarrage qui ne semble pas fonctionner?
  • Le DNS inverse ne fonctionne pas
  • L'utilisation de la memory du server Ubuntu n'ajoute pas
  • ubuntu: configurer iptables pour autoriser le trafic NFS
  • Kerberos LDAP et Ubuntu Login
  • L'achèvement du TAB ne fonctionne pas dans le héron hardy ubuntu
  • Serveur Ubuntu: Supprimez le premier dossier dans le directory
  • Le server Linux ne peut pas commencer à se connecter par défaut
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.