Configurer correctement les hôtes virtuels Apache avec plusieurs utilisateurs

Merci d’avance pour toute aide que vous pourriez apporter. Je me suis auto-appris à utiliser linux (Ubuntu), Apache, des hôtes virtuels et quelques éléments relatifs à la sécurité, bien que je n’aie pas encore tout mis en place de manière transparente.

J’ai également tiré des leçons des erreurs commises dans le passé en ce qui concerne la non-configuration correcte des comptes d’utilisateurs et des sites / virtualhosts. Je ssh dans le serveur en tant que root (je sais, très mauvais), et créé manuellement tous les hôtes virtuels et les fichiers, donc tous détenus par root. Une ancienne version de joomla a été exploitée et des codes de spam malveillants ont été insérés dans tous mes autres hôtes virtuels.

Je suis en train de passer à un nouveau serveur et je cherche les étapes à suivre pour configurer des hôtes virtuels et des comptes d’utilisateurs pouvant y accéder. Comme nous utilisons des logiciels tiers, nous avons parfois eu besoin que quelqu’un d’autre se connecte sur le site pour examiner les fichiers de leur site Web.

Notre serveur actuel est la version 10.04, mais le nouveau serveur est la version 12.04. Tous les fichiers de site Web sont configurés sous

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

etc

En bref, je suppose que c’est ce que je recherche.

  1. Comment configurer correctement un hôte virtuel et un utilisateur, de sorte qu’il n’ait access qu’à ses propres fichiers, et à aucun autre hôte virtuel sur le serveur. Par exemple, si ce site est exploité avec du code malveillant, il ne peut pas infecter d’autres sites sur le serveur.

  2. Comment pourrais-je configurer les utilisateurs de sorte qu’ils ne puissent que ftp dans leurs fichiers et ne puissent accéder à aucun autre site.

Comme mentionné précédemment, il existe de nombreux articles expliquant comment effectuer chacune de ces étapes, mais rien qui les unit de manière transparente.

Vraiment apprécier l’aide que tout le monde peut offrir. N’hésitez pas à demander toute information supplémentaire que vous pourriez avoir besoin de donner des conseils. Je suis actuellement en train de suivre des tutoriels pour configurer chroot, mais je crains de ne pas le faire correctement car j’ai relevé quelques incohérences au fil du temps. Je suis également en train d’enquêter sur Jailkit.

Puisque la question est le premier résultat de recherche dans Google lorsqu’on lui pose la question “Apache hôte virtuel distinct”, j’aimerais donner une réponse plus élaborée à partir de cette réponse . Ma réponse ne couvre pas les cas d’utilisation de PHP et GCI (vous utiliseriez suPHP). Il se concentre sur PHP lorsqu’il est utilisé en tant que module Apache.

Vous pouvez utiliser le module apache apache2-mpm-itk . Il est disponible pour la version actuelle d’apache 2.4. Il vient avec la directive AssignUserID . Cette directive définit l’utilisateur et le groupe avec lesquels une demande de l’hôte virtuel est traitée. Voici un exemple de la configuration du site Apache avec laquelle je me suis retrouvé:

  ServerName www.site1.com DocumentRoot /home/www/site1.com AssignUserID site1 www-data php_admin_value open_basedir /home/www/site1.com ...  

Bien entendu, cela ne fait qu’améliorer la sécurité tant que les DocumentRoots individuels appartiennent à leurs utilisateurs respectifs et ne sont pas accessibles au groupe. Pour davantage de sécurité liée à PHP, les scripts sont stockés dans DocumentRoot avec la ressortingction open_basedir. En ce qui concerne l’access au fichier principal, je préfère le protocole SFTP avec chroot .

Remarque: apache2-mpm-itk est actuellement incompatible avec le module http2 d’Apache.

Je ne considère pas que ceci soit une réponse à votre question moi-même. Mais comme je ne peux pas encore commenter, je dois écrire dans la zone “réponse”. Je fais de la gestion Web de façon saisonnière. Pour moi, un moyen de tester et d’essayer les choses en toute sécurité consiste à configurer un environnement de test sur une machine virtuelle (VirtualBox) ou un “ancien” ordinateur de bureau. L’un des problèmes les plus courants des administrateurs d’hébergement Web débutants est de comprendre le fonctionnement des programmes de serveur Web. Dans ce cas, je suppose que vous devez comprendre le fonctionnement d’Apache et au moins comprendre les fichiers de configuration. Je trouve que Webmin est un outil très utile – pour un débutant – pour gérer Apache et d’autres services. Vous devez passer du temps à essayer des choses dans votre environnement de test pour que les choses deviennent plus claires pour vous.

Pour revenir à votre question, je pense que la réponse peut être un article de tutoriel ou un petit livre. Découvrez ces articles pour commencer:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/