Bonjour,
Possédant un hébergement mutualisé, j'aimerais utiliser les logins FTP qui permettraient d'avoir un accès limité pour d'autres usagers à certains dossiers. Ces dossiers correspondent à la racine de multisites.
En gros, nous aurions un login FTP par site configuré sur mon hébergement mutualisé.
Cependant, j'ai remarqué qu'un utilisateur FTP ayant un accès limité à un certain dossier, peut grâce un simple script PHP (scandir, readfile), lister voire télécharger tous les autres dossiers qui sont présents sur mon hébergement mutualisé.
J'ai tenté de modifier les droits sur les dossiers et fichiers afin de limiter cet accès. Cependant, seul un 600 sur les fichiers et un 700 sur les dossiers permettraient de résoudre le cas. Or, comme les dossiers correspondent à des multisites, ceux-ci ne sont plus accessibles par le web avec cette manipulation.
Ma question est donc : comment résoudre ce problème ? En utilisant le .htaccess?
Est-ce une limitation voire une faiblesse de l'offre mutualisée?
Merci de votre réponse !
Bonjour Olivier.
Tu mets le doigt sur un problème important de sécurité de l'hébergement mutualisé. Un site piraté (comme j'ai déjà été confronté) peut en conséquence infecter les autres sites hébergés sur le même espace. Je l'ai déjà soulevé auprès du support il y a bien longtemps avec une solution possible qui serait d'utiliser la directive open_basedir qui permet de limiter l'accès des scripts à 1 ou plusieurs répertoires configurés.
Or je viens de découvrir en regardant à nouveau la doc PHP que cette directive qui n'était pas modifiable dans un .htaccess (PHP_INI_SYSTEM) l'est depuis la version 5.3 de PHP (PHP_INI_ALL).
ATTENTION : L'usage de cette directive implique qu'il faut probablement reconfigurer certaines variables notamment pour les répertoires d'upload ou de stockage de sessions.
Je pense qu'il faut donc investiguer dans ce sens et voir déjà si l'hébergement mutualisé OVH nous autorise l'usage de cette directive … j'y cours (dans la limite de mon temps libre actuel) et te tiens au courant.
Laurent
Bonjour @OlivierP3,
Nous assurons une étanchéité compléte de nos hébergements web entre eux : depuis ton hébergement, tu ne pourras pas aller chercher les données de l'hébergement voisin.
Cependant, nous n'assurons pas d'étanchéité entre nos multisites depuis les serveurs web. L'usage des utilisateur FTP/SSH peut être limité par dossier, ce qui est utile pour restreindre le périmétre de dépot des fichiers.
Les scripts exécutés par le serveur web peuvent bien entendu parcourir tous les dossiers puisqu'il tourne avec le groupe du serveur web. Vous pouvez bien entendu le restreindre en lecture (`chmod 750`) voir lui bloquer tout accés (`chmod 700`) !
Si vous avez un accés en écriture depuis vos scripts web (`chmod 777` ou `chmod 770`), je vous conseille de le couper : si des failles sont exploitables dans votre site, vous risqueriez de vous faire pirater votre site web. Seul cas acceptable : les dossiers de cache (mais profitez du /tmp en ram pour votre cache !).
A partir de là, il reste deux risques :
* Vous souhaitez héberger des fichiers sur un hébergement web et gérer de multiples utilisateurs : dans ce cas, vous n'êtes pas dans l'usage commun des hébergements web.
* Vous n'avez pas confiance dans le code de certains de vos multisites et souhaitez les isoler : dans ce cas, nous vous conseillons d'ouvrir plusieurs comptes d'hébergements web : 1 pour les sites auxquels vous n'avez pas confiance, et un pour les sites auquel vous avez confiance.
Bonne journée,
Vincent
Bonjour Vincent,
Je comprends donc là qu'il n'est pas envisageable sur le mutualisé d'utiliser la fameuse directive PHP open_basedir dont je parlais … ni même de la voir intégrée de façon subtile et réfléchie dans un multisite comme on pourrait le faire dans un VirtualHost ?
Laurent
Bonjour Vincent,
Je comprends donc là qu'il n'est pas envisageable sur le mutualisé d'utiliser la fameuse directive PHP open_basedir dont je parlais ... ni même de la voir intégrée de façon subtile et réfléchie dans un multisite comme on pourrait le faire dans un VirtualHost ?
Laurent
Pour ne rien cacher : je n'ai pas essayé ! C'est possible qu'elle fonctionne correctement.
Par contre, je ne pense pas qu'elle fonctionne en PHP CLI et n'empêche pas totalement de passer d'un dossier à l'autre.
Bonne journée
Vincent
Pour ne rien cacher : je n'ai pas essayé ! C'est possible qu'elle fonctionne correctement.
Par contre, je ne pense pas qu'elle fonctionne en PHP CLI et n'empêche pas totalement de passer d'un dossier à l'autre.
OK. J'essaye dès que je peux et je vous tiens au courant.
Laurent
Je suis bête … les tests sont vite faits car évidemment en PHP CLI on ne peut pas passer de directives PHP dans les .htaccess ni même dans les VirtualHosts puisqu'on n'utilise pas le module PHP d'Apache.
J'ai la même contrainte sur ma config de développement qui est similaire avec toutes les versions de PHP installées sur ma machine et différenciées dans mes VirtualHosts suivant le port avec un
`ScriptAlias /php/ "cheminDuPhp"`
… et donc du coup les directives Apache `php_(admin)_(value|flag)` ne sont pas utilisables.
Dommage ![]()
Laurent