J'ai un serveur dédié qui héberge une petite dizaine de sites web et applications. J'en suis l'unique administrateur mais jusqu'à présent je fonctionnais sur le principe suivant :
- 1 utilisateur linux par site, droits de ssh (pour faire du SFTP), avec son dossier /home/USER/www comme racine de site
- php fonctionnant via suphp pour permettre à chaque site de fonctionner avec son user propre
Contexte : Ubuntu 14.04 LTS / Apache 2.4 / php 5.5.x
C'était un peu les recommandations des années 2010... mais au final j'ai l'impression que
- suphp et compagnie (suexec)... ça n'est plus trop adapté en 2017, je n'arrive notamment pas à upgrader la version de php utilisée par suphp.
- j'ai régulièrement des problèmes de droits car apache a pour habitude de tourner avec comme user www-data et du coup il y a des applis qui n'aiment pas trop quand on les fait tourner avec un user différent
- finalement ma volonté première qui était de vraiment séparer les sites en cas de compromission de l'un n'est que très relative, les droits par défauts des dossiers users (et j'avoue que je flippe un peu de les changer) étant "rx" pour "other" (donc globalement n'importe quel user logué en sftp peut aller regarder le dossier de son voisin). Donc en gros si un site est compromis, l'utilisateur peut aller lire les fichiers de config d'un autre site (clés, mot de passe mysql...). fail.
J'ai commencé à faire un peu le tour des tutos et les avis divergent. J'ai l'impression que php-fpm semble privilégié pour faire tourner php derrière apache, mais peut ont l'air de chercher à faire tourner les process sous le compte des utilisateurs créés (trouvé ici : https://serverfault.com/questions/5 [...] n-centos-6 ).
Si on omet cette pratique (à savoir si php/apache ne tournent pas le compte de l'user) il y a alors la problématique de droits d'accès aux fichiers. Ex typique : un user TOTO en sftp créé des fichiers avec son compte (genre upload de wordpress depuis son pc sous windows via filezilla) du coup c'est TOTO qui est owner, hors c'est www-data qui veut accéder à ces fichiers. Donc ça se finit régulièrement en cauchemar de droits.
Voilà, donc je suis preneur des recommandations sur ce sujet, à savoir pour commencer :
1/ est-il recommandé de virer les droits de lecture "other" du dossier de chaque user ? Si oui pourquoi est-il sur r par défaut lors de la création d'un adduser ?
2/ pour un serveur multi-sites, quel est le moyen le plus pertinent de faire tourner php et apache ? (sous quels comptes, avec quelles librairies...) ?
3/ si vous êtes le seul administrateur, préférez-vous finalement tout mettre dans des sous-dossiers du genre /var/www/site1/ /var/www/site2/... (ou via des liens symboliques) uploadés par le même user et juste créer des virtualhosts qui vont bien ?
Message édité par depart le 24-01-2017 à 13:45:07