Forum Linux.debian/ubuntu Sécurité user avec php

Posté par . Licence CC by-sa
Tags : aucun
1
28
déc.
2017

Bonjour,

aujourd'hui j'ai enfin décidé de demander de l'aide sur le forum car je trouve vraiment pas ma réponse. Cela fait au moins 1 semaine ma réponse…
Donc mon problème est que : j'aimerais héberger le site de 3 personnes différentes sur un vps tournant sous debian. Comme configuration j'ai apache qui via des virtualhost dirige chaque site dans son répertoire (Ex: /home/site1).
Via le mod proxy d'apache je redirige le flux php sur des pools php5 en fpm. Chaque site possède sa propre pool et donc son propre utilisateur d'exécution. Les dossiers hébergeant les sites possèdent des droits en 770.
Donc les sites ne peuvent donc pas lire dans les dossiers des autres sites.
Au début j'avais isolé chaque site via le chroot de php fpm mais du coup php ne pouvait plus communiquer avec les librairies…
Donc jusqu'ici tout va bien. Je me pose donc la question de comment isoler php dans son dossier (Ex: /home/site1) et qu'il ne puisse pas en sortir et se balader dans tout le linux.
Et si cela n'est pas possible, est-ce que le fait d'avoir un utilisateur par site suffit à la sécurité ou dois-je quand même mettre certaines choses en place ?

Comment se passe par exemple pour les logs ou d'autres fichiers utilisés par tous les sites ?

Merci beaucoup par avance !
Très bonne journée/soirée.

  • # container ?

    Posté par (page perso) . Évalué à 2 (+1/-0).

    Pour faire de l'isolation, le plus simple à mettre en œuvre est à mon avis les containers, par exemple lxc.

    • [^] # Re: container ?

      Posté par (page perso) . Évalué à 3 (+1/-0).

      C'est vrai mais les inconvénients à mentionner est que les ressources nécessaires vont être plus importantes et qu'il faut probablement de surcroit utiliser un reverse proxy (comme haproxy par exemple) pour connecter les serveurs apache à l'hôte. Dans le cas décrit (avec 3 utilisateurs) c'est certainement une très bonne solution et il n'est pas très difficile de configurer haproxy pour ce cas de figure. Il faut cependant noter que cela ne se redimensionne pas très bien.

      • [^] # Re: container ?

        Posté par . Évalué à 2 (+1/-0).

        J'utilise déjà la technique d'isolation via docker sur un vps chez ovh, j'ai apache sur le système principal qui me sert de proxy via un proxypass mais comme tu le dis, ça a des inconvénients comme le fait que j'aimerais prendre un vps avec plus de stockage chez un autre hébergeur et que celui-ci ne porpose que des vps avec openVZ qui n'est pas compatible avec docker.

    • [^] # Re: container ?

      Posté par . Évalué à 1 (+0/-0).

      Merci de ta répons,
      oui j'avais pensé à faire ça avec docker sinon mais comme la plupart des vps du marché tourne sur du OpenVZ leur kernel est rarement à jour pour avoir la version qui le supporte. J'utilise cette technique sur quelques sites mais qui sont sur un vps OVH. Mais pour ces nouveaux sites j'ai besoin d'avoir plus de stockage donc je souhaiterais prendre un vps avec plus de stockage chez un autre hébergeur. Mais qui qui ne supporte pas docker.

  • # de vrai virtualhost

    Posté par . Évalué à 2 (+0/-0).

    Comment se passe par exemple pour les logs ou d'autres fichiers utilisés par tous les sites ?

    en faisant un vrai virtualhost, les sites utilisent les memes bibliotheques PHP, mais auront chacun leur dossier de site web,
    par exemple /home/user1/www

    c'est par exemple comme cela que fonctionne virtualmin (plugin webmin pour partager un serveur entre plusieurs sites webs, domaine, emails, etc)

    et les logs, dans la config de chaque virtualhost, sont renvoyés dans /home/user1/logs/ , /home /user2/logs/

    • [^] # Re: de vrai virtualhost

      Posté par . Évalué à 1 (+0/-0).

      Avec cette configuration, PHP peut quand même accéder aux fichiers des autres users. En plus d'avoir un vhost par site (avec ces propres repertoires de logs), il faudrait que Apache s'execute avec des users linux différents. Tu dois pouvoir trouver des infos ici : https://cloudkul.com/blog/apache-virtual-hosting-with-different-users/

      • [^] # Re: de vrai virtualhost

        Posté par . Évalué à 1 (+0/-0).

        Merci de ta réponse, dans mon cas PHP ne peut pas accéder aux fichiers des autres sites car j'ai les dossiers de chaque site avec des droits en 770 pour éviter ça. Pour les logs d'apache n'est-il pas possible de mettre www-data dans chaque groupe des users comme ça il peut écrire dans les fichiers de logs situés dans les répertoires des sites ou vaut-il mieux exécuter apache sur plusieurs users comme tu me le dit ?

    • [^] # Re: de vrai virtualhost

      Posté par . Évalué à 1 (+0/-0).

      Merci de ta réponse,
      qu'entends-tu par vrai virtualhost ? Car pour les logs je pourrais utiliser "CustomLog" et "ErrorLog".
      Y a-t-il d'autres fichiers qu'il faudrait mieux placer dans les dossiers des sites ?

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.