Configurer correctement les hôtes virtuels Apache avec plusieurs utilisateurs

15

Merci d'avance pour toute aide que vous pourriez fournir. Je me suis autodidacte en utilisant Linux (Ubuntu), Apache, des hôtes virtuels et quelques bits en ce qui concerne la sécurité, bien que je n'aie pas encore rassemblé ces éléments de manière transparente.

J'ai également appris à la dure les erreurs commises dans le passé en ce qui concerne la configuration incorrecte des comptes d'utilisateurs et des sites / hôtes virtuels. Je ssh dans le serveur en tant que root (je sais, très mauvais), et créé tous les hôtes virtuels et les fichiers manuellement, donc tous appartenant à root. J'ai eu une ancienne version de joomla exploitée et un code de spam malveillant inséré dans tous mes autres hôtes virtuels.

Je suis en train de passer à un nouveau serveur et je recherche les étapes correctes à suivre en ce qui concerne la configuration des hôtes virtuels et des comptes d'utilisateurs qui peuvent y accéder. Parce que nous utilisons un logiciel tiers, nous avons parfois eu besoin de quelqu'un d'autre pour accéder au site ftp pour enquêter sur 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 du 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, afin qu'il n'ait accès qu'à ses propres fichiers, et pas à tout 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 configurer les utilisateurs pour qu'ils ne puissent que ftp dans leurs fichiers et ne pas accéder aux autres sites.

Comme mentionné précédemment, il existe de nombreux articles détaillant comment effectuer l'une de ces étapes, mais rien qui les rassemble de manière transparente.

J'apprécie vraiment l'aide que tout le monde peut offrir. N'hésitez pas à demander toute information supplémentaire dont vous pourriez avoir besoin pour 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 en cours de route. J'enquête également sur le jailkit.

user249729
la source

Réponses:

6

Étant donné que la question est le meilleur résultat de recherche dans Google lorsqu'on lui a demandé "Apache Virtual Host Separate User", je voudrais donner une réponse plus élaborée sur la base de cette réponse . Ma réponse ne couvre pas le cas d'utilisation de PHP et CGI (vous utiliseriez suPHP). Il se concentre sur PHP lorsqu'il est utilisé comme 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 la demande d'un hôte virtuel est traitée. Voici un exemple de la configuration du site apache avec laquelle je me suis retrouvé:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

Bien sûr, cela n'améliore la sécurité que tant que les DocumentRoot individuels appartiennent à leurs utilisateurs respectifs et ne sont pas accessibles au groupe. Pour plus de sécurité liée à PHP, les scripts sont emprisonnés DocumentRootavec la restriction open_basedir. Quant à l'accès au fichier backend, je préfère SFTP avec chroot .

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

Hermann
la source
1

Je ne pense pas que ce 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, une façon pour moi de tester et d'essayer les choses en toute sécurité est de configurer un environnement de test dans une machine virtuelle (c'est-à-dire VirtualBox) ou un "ancien" ordinateur de bureau. L'un des problèmes très 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 afin que les choses deviennent plus claires pour vous.

Pour en revenir à votre question, je pense que la réponse peut très bien être un article de tutoriel ou un petit livre. Consultez 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/

biocyberman
la source
Merci biocyberman. Ce sont à peu près les étapes de base que je suis et que je connais assez bien. La seule différence est que je n'ai pas montré chaque site Web à un utilisateur différent, ce que je vais essayer ensuite, mais cela sécurise-t-il les dossiers virtualhosts les uns des autres? Jailkit semble faire partie de la solution, mais je ne suis pas sûr à 100%. J'ai joué avec webmin dans le passé, je vais donc le revoir et voir si cela aidera avec l'une des questions que j'ai.
user249729