Page 1 sur 2

Safe_mode et open_basedir

Posté : 13 août 2008, 12:55
par chrislabricole
Bonjour,

Alors, je commence par mettre les choses au clair :)
Racine total de mon serveur : D:/www/
Racine de mes utilisateurs : D:/www/users/
Puis pour un utilisateur : D:/www/users/son_nom_d_utilisateurs/

dans mon httpd.conf, j'ai ajouté :

Code : Tout sélectionner

<Directory "D:/www/users"> AllowOverride All Order allow,deny Allow from all php_admin_value safe_mode On </Directory>
Puis pour chaque users :

Code : Tout sélectionner

Alias "/utilisateur" "D:/www/users/utilisateur/" <Directory "D:/www/www_users/utilisateur/"> php_admin_value open_basedir ./ Options Indexes FollowSymLinks Includes AllowOverride All Allow from all </Directory>
et donc se qui me pose problème, c'est cette ligne:

Code : Tout sélectionner

php_admin_value open_basedir ./
Le problème c'est que si je l'enlève, mes utilisateurs pourrons remonter dans l'arborescence est très facilement modifier le site des autres ou même du site principal...
Donc je préfère ne pas l'enlever...
Mais si je la laisse, mes utilisateurs ne peuvent pas remonter dans l'arborescence de LEUR espace à eux...
Imaginons un utilisateur s'appelant "mrphp", son répertoire perso sera :
D:/www/www_users/mrphp/
(avec la restriction open_basedir)
Et qu'il mette une page index.php sur son site avec un script qui remonte dans l'arborescence, évidement, il pourra pas, et temps mieux, si maintenant il crée un répertoire "admin" (par exemple) dans son répertoire personnel, qu'il mette cette page index dans le répertoire "admin" ben... ce script ne pourra pas remonter d'un cran dans l'arborescence ! pourtant, il a le droit puisque c'est toujours son répertoire personnel... comment faire pour restreindre son répertoire, JUSTE AVANT qu'il "fraude" ?
C'est à dire qu'il à le droit de faire SE QU'IL VEUT dans son répertoire perso, créer/supprimer des répertoire, remonter dans SON arborescence, mais pas dans celui des autres...

Après, 2ème point, c'est le safe_mode...
Je l'ai activé pour mes utilisateurs mais maintenant, ils ne peuvent plus faire d'action "essentielles", comme, uploader des fichiers, créer des répertoires avec mkdir()... bref, j'ai vu la liste des fonctions bloquées sur la Doc, et j'aimerai en réactivé certaines, c'est possible ?
sinon, comment faire ?

Voilà, si vous avez d'autres moyens de protections de serveur multi-utilisateurs, (sous windows comme vous avez pu le remarquer), je suis preneur ;)

Merci d'avance

Posté : 13 août 2008, 13:14
par Sékiltoyai
Alors, pour le premier problème, ça ne sert à rien d'indiquer les règles de configuration dans la conf apache si tu n'utilises pas les possibilités que cela t'offre. Tu as l'opportunité de spécifier pour chaque utilisateur un open_basedir personnalisé, pourquoi ne le fais-tu pas ? Indique donc le chemin absolu dans l'open_basedir vu que c'est techniquement possible pour toi...

Concernant les fonctions bloquées, si elles sont bloquées, elles sont bloquées. Mais en l'occurence ici ce n'est pas le cas. Si le propriétaire du fichier est bien réglé, tu n'es pas censé avoir de problème. Vérifie de ce côté là. Mais après tu es sur un serveur (un serveur j'espère) windows donc c'est sur que niveau droits c'est moyen...

Posté : 13 août 2008, 13:20
par chrislabricole
Alors, pour le premier problème, ça ne sert à rien d'indiquer les règles de configuration dans la conf apache si tu n'utilises pas les possibilités que cela t'offre. Tu as l'opportunité de spécifier pour chaque utilisateur un open_basedir personnalisé, pourquoi ne le fais-tu pas ? Indique donc le chemin absolu dans l'open_basedir vu que c'est techniquement possible pour toi...
Je ne vois pas trop comment procéder pour tester cette solution :?
Peux-tu plus donner d'information s'il te plait ? :)
Concernant les fonctions bloquées, si elles sont bloquées, elles sont bloquées. Mais en l'occurence ici ce n'est pas le cas. Si le propriétaire du fichier est bien réglé, tu n'es pas censé avoir de problème. Vérifie de ce côté là. Mais après tu es sur un serveur (un serveur j'espère) windows donc c'est sur que niveau droits c'est moyen...
Oui c'est sur :P sous windows y'a pas de propriétaire de fichier comme sous Linux, sous Linux, je saurais comment faite, mais sous windows, c'est autre chose... de plus, si je veux mettre PHP 6 sur mon serveur, je pense que je serais obligé de le désactiver pour mes utilisateurs puisque celui-ci n'inclu pas safe_mode à ma connaissance...

Merci :)

Posté : 13 août 2008, 13:35
par Sékiltoyai
Alors, pour le premier problème, ça ne sert à rien d'indiquer les règles de configuration dans la conf apache si tu n'utilises pas les possibilités que cela t'offre. Tu as l'opportunité de spécifier pour chaque utilisateur un open_basedir personnalisé, pourquoi ne le fais-tu pas ? Indique donc le chemin absolu dans l'open_basedir vu que c'est techniquement possible pour toi...
Je ne vois pas trop comment procéder pour tester cette solution :?
Peux-tu plus donner d'information s'il te plait ? :)
Bah je t'ai donné la solution. Tu définis open_basedir sur le chemin ./ , soit un chemin relatif. Il te suffit simplement de remplacer ca par le chemin absolu correspondant...

Posté : 13 août 2008, 13:37
par chrislabricole
Eum...

Code : Tout sélectionner

<Directory "D:/www/users"> AllowOverride All Order allow,deny Allow from all php_admin_value safe_mode On php_admin_value open_basedir ./user1 php_admin_value open_basedir ./user2 </Directory>
:?: :?:

Posté : 13 août 2008, 19:23
par Sékiltoyai
Je te dis un chemin ABSOLU.
Réfléchis deux secondes, tu as regardé la doc de open_basedir ? Dedans ils disent que open_basedir est interprété par rapport à là où il est défini ? Que, comme par magie, si tu définis ./ dans une directive apache appliquée au dossier /machin/truc, il comprendra tout de suite que tu veux en réalité que ton open_basedir soit /machin/truc ? A priori non…
Quand tu définis l'open_basedir à ./user, il n'y a aucune raison que le comportement change, il fera ce qui est indiqué, à savoir que si ton script est dans le dossier /truc/, le script ne pourra inclure/ouvrir que des fichiers dans /truc/user, et ce, quelquesoit la manière dont l'open_basedir a été défini.
Bref, il faudrait faire preuve d'un peu de bon sens des fois…

Posté : 13 août 2008, 19:57
par chrislabricole
Bah tu crois que j'essaie pas de comprendre ? Rassure toi avant de posté ici j'ai fais 5 pages Google mais bon, j'ai remarqué que la plus pars des liens s'étaient des copies de la doc php.net :x
Sinon je m'embêterai pas à poster...

Donc j'ai pas vraiment d'infos sur cette fonction...

Mais le chemin absolu, je le défini ou exactement parce-que... :?

Merci à toi :)

Posté : 13 août 2008, 20:45
par Sékiltoyai
Bah exactement là où t'avais défini ./ dans ton premier post. Dans D:/www/users/utilisateur/ c'est à dire pour chaque utilisateur, tu fixes open_basedir en utilisant un chemin absolu et non ./ …

Posté : 13 août 2008, 22:31
par chrislabricole
Ah d'accord je comprends mieux maintenant !
Eh bien ça marche nickel :D
Merci :)

Et puis pour le bloquage personnalisé de certaines fonctions, j'ai trouvé disable_functions de PHP, mais curieusement, il ne peut pas se définir autre par que dans le php.ini :?

Le prob c'est que je voudrai toute les fonctions dispo à la racine, et des fonctions bloquées dans le répertoire /users/

Voilà, des solutions ? :)

Merci

Posté : 13 août 2008, 22:35
par Sékiltoyai
Utilise suhosin et ses directives de limitation des fonctions. Sans oublier d'activer la configuration par répertoire. Je te laisse chercher sur google…

Posté : 14 août 2008, 16:54
par chrislabricole
Salut

Eum... d'après mes recherches il n'existe pas sous windows :roll:

merci

Posté : 14 août 2008, 20:46
par @rthur
Salut

Eum... d'après mes recherches il n'existe pas sous windows :roll:

merci
Va falloir apprendre à utiliser Google... :?

2ème réponse dans Google en cherchant "suhosin windows":
http://forum.hardened-php.net/viewtopic ... 1601#p1601

Posté : 14 août 2008, 22:07
par chrislabricole
Bon voilà, j'ai réussi à installer ce module, j'ai vérifié dans mon phpinfo, et j'ai bien Suhosin qui est chargé, j'ai vue des configurations dans le fichier INI qui sont présentes également dans le phpinfo, maintenant, que faut-il faire pour bloquer les fonctions que je souhaites ? :roll:

Merci

Posté : 14 août 2008, 22:38
par Hywan
Hey :),

Faut pas trop abuser là … Le site de Suhosin est hardenet-php.net, donc tu navigues dedans et tu trouves des choses intéressantes, comme la page de configuration par exemple …

Posté : 14 août 2008, 22:56
par chrislabricole
Oui, j'ai déjà vu cette page ;)

Mais je ne vois pas comment faire pour désactiver des fonctions au répertoire que je veux :shock:

Merci