1

Sujet : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

Bonjour à tous,

Ca fait longtemps que je suis votre forum et site, étant moi en train de me monter un petit serveur perso..

J'ai de gros soucis quand a la sécurité de php, je vous expose mon problème.

Mon serveur permet d'héberger plusieurs sites et ce de façon dynamique ( Compte Mysql pour le mail, le ftp, Dyanmic vhost pour apache)

Chaque site se retrouve donc (Grâce au dynamique vhost) dans /var/www/html/mondomaine/user/ .

Je viens de mètre à jour Php en version 5.3 et la je constat dans mes log que safe_mode est déprécié, qu'il sera supprimé en Php 6..

Je pars donc à la chasse au info et je tombe évidement sur la directive open_base_dir ( qui conviendrait aussi dans mon cas)

Malheureusement, sans l'utilisation d'un patch pour Apache, open_base_dir ne peut pas être utilisé dynamiquement :

php_admin_value open_base_dir /var/www/html/mondomaine/user   # Fonctionne
php_admin_value open_base_dir /var/www/html/mondomaine/%1  # Ne fonctionne pas

Je suis tombé sur un patch mais il faut alors recompiler Apache (et on perd donc le bénéfice des updates automatique du monde unix)

Auriez-vous une solution ?
Comment gérez vous les droits ?

J'avais abandonné l'idée des utilisateurs réel (machine) car même les hébergeurs ne le font pas..

Merci pour votre aide

2

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

Bonjour,

Perso chez moi le Safe Mode est OFF et effectivement disparaitra sur le PHP 6.

Maintenant pourquoi tu veux que le open base dir soit dynamique ?
Si tu l'active sur
php_admin_value open_base_dir /var/www/html/mondomaine/ ? Çà ne fonctionne pas ?

Pour la sécurité j'ai opté pour prendre DirectAdmin, qui gère lui même les mises à jour et la sécurité. Je ne sais pas si c'est parfait mais certainement mieux que moi.

3

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

rodo37 a écrit:

Bonjour,

Perso chez moi le Safe Mode est OFF et effectivement disparaitra sur le PHP 6.

Et comment empêches-tu l'utilisateur X d'accéder avec un fopen au fichier de l'utilisateur Y ?



rodo37 a écrit:

Maintenant pourquoi tu veux que le open base dir soit dynamique ?

Car j'utilise des vhost dynamique, quelque chose du genre : DocumentRoot /var/www/html/domaine/%1

Et donc si tu tapes http://Test.domaine.be tu tomberas dans /var/www/html/domaine/Test
Par contre si tu tapes http://Rhien.domaine.be tu tomberas dans /var/www/html/domaine/Rhien

Apache ne convertit pas les valeurs des php_admin_value et donc si je donnes un open_base_dir /var/www/html/domaine/%1

Le répertoire correspondra a  /var/www/html/domaine/%1

rodo37 a écrit:

Si tu l'active sur
php_admin_value open_base_dir /var/www/html/mondomaine/ ? Çà ne fonctionne pas ?

Alors l'utilisateur dans /var/www/html/mondomaine/x aura accès a /var/www/html/mondomaine/y car il sera toujours dans son open_base_dir

rodo37 a écrit:

Pour la sécurité j'ai opté pour prendre DirectAdmin, qui gère lui même les mises à jour et la sécurité. Je ne sais pas si c'est parfait mais certainement mieux que moi.

Je ne connaissait pas, mais je trouve plus intéressant de tout faire moi même.. Plus instructif surtout

4 Dernière modification par rodo37 (11-08-2009 13:28:32)

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

Bon je vais essayer de te répondre wink mais comme quoi je débute.

Crupuk a écrit:
rodo37 a écrit:

Bonjour,

Perso chez moi le Safe Mode est OFF et effectivement disparaitra sur le PHP 6.

Et comment empêches-tu l'utilisateur X d'accéder avec un fopen au fichier de l'utilisateur Y ?

Tout simplement car un user est placé dans un dossier du genre
/home/rodo37/
Ensuite pour un domaine c'est par exemple
/home/rodo37/deathrock.be/public_html

Donc un utilisateur X ne peut jamais accéder aux données car impossible pour lui de remonter vers /home/


rodo37 a écrit:

Maintenant pourquoi tu veux que le open base dir soit dynamique ?

Car j'utilise des vhost dynamique, quelque chose du genre : DocumentRoot /var/www/html/domaine/%1

Et donc si tu tapes http://Test.domaine.be tu tomberas dans /var/www/html/domaine/Test
Par contre si tu tapes http://Rhien.domaine.be tu tomberas dans /var/www/html/domaine/Rhien

C'est ce que je fait également, mais à faut d'abord les déclarer. Par exemple, si un de mes users veut http://forum.domaine.be pointe vers un dossier /forum, il doit d'abord créer ce sous domaine sur mon panel et le panel crée automatiquement ce qu'il faut.

Apache ne convertit pas les valeurs des php_admin_value et donc si je donnes un open_base_dir /var/www/html/domaine/%1

Le répertoire correspondra a  /var/www/html/domaine/%1

rodo37 a écrit:

Si tu l'active sur
php_admin_value open_base_dir /var/www/html/mondomaine/ ? Çà ne fonctionne pas ?

Alors l'utilisateur dans /var/www/html/mondomaine/x aura accès a /var/www/html/mondomaine/y car il sera toujours dans son open_base_dir

rodo37 a écrit:

Pour la sécurité j'ai opté pour prendre DirectAdmin, qui gère lui même les mises à jour et la sécurité. Je ne sais pas si c'est parfait mais certainement mieux que moi.

Je ne connaissait pas, mais je trouve plus intéressant de tout faire moi même.. Plus instructif surtout

Faire soi même est très bien, mais je préfère quand même utiliser un Panel sécurisé pour éviter toute sorte de mésaventure qui conduira à l'échec de mon offre d'hébergement.
Maintenant, ceci est un avis personnel car je ne m'y connait pas assez en programmation. C'est à toi de voir.

5

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

rodo37 a écrit:

Bon je vais essayer de te répondre wink mais comme quoi je débute.

Crupuk a écrit:

Et comment empêches-tu l'utilisateur X d'accéder avec un fopen au fichier de l'utilisateur Y ?

Tout simplement car un user est placé dans un dossier du genre
/home/rodo37/
Ensuite pour un domaine c'est par exemple
/home/rodo37/deathrock.be/public_html

Ca ne fonctionne que dans le cas des utilisateurs "réel" et non d'utilisateur virtuel..

En effet, chaque fichier php est accessible à apache, et vu que le home de mes utilisateurs est virtuel, ils ne sont pas chrooter.. Ils peuvent donc remonter l'arborésence jusqu'où ils veulent.. (Dans la limite du open_base_dir)

J'ai donc activé safe_mode, et je venais ici pour voir si vous aviez une solution (Autre que créer des utilisateurs réel..)

6

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

rodo37 a écrit:

Donc un utilisateur X ne peut jamais accéder aux données car impossible pour lui de remonter vers /home/

Comment as-tu fais ?

Je suis dans /var/www/html/domaine/user..

Et pourtant sans le safe_mode je peux lister le contenu de "/" sans problème..

Personne d'autre n'aurais un début de réponse ?

merci quand même a tous ;-)

7 Dernière modification par rodo37 (14-08-2009 19:07:34)

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

Crupuk a écrit:
rodo37 a écrit:

Donc un utilisateur X ne peut jamais accéder aux données car impossible pour lui de remonter vers /home/

Comment as-tu fais ?

Je suis dans /var/www/html/domaine/user..

Et pourtant sans le safe_mode je peux lister le contenu de "/" sans problème..

Personne d'autre n'aurais un début de réponse ?

merci quand même a tous ;-)

Salut,

Y doit avoir un stress ton serveur.

Un user sous Linux est figé dans un dossier.
Tu as activé le Open Base Dir ?

Tu devrais avoir une erreur du style

Warning: is_executable() [function.is-executable]: open_basedir restriction in effect. File(/usr/sbin/lsb_release) is not within the allowed path(s): (/home/rodo37/:/tmp:/usr/local/lib/php/) in /home/rodo37/domains/deathrock.be/public_html/info/test.php on line 1

8

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

rodo37 a écrit:

Tu as activé le Open Base Dir ?

Tu devrais avoir une erreur du style

Warning: is_executable() [function.is-executable]: open_basedir restriction in effect. File(/usr/sbin/lsb_release) is not within the allowed path(s): (/home/rodo37/:/tmp:/usr/local/lib/php/) in /home/rodo37/domains/deathrock.be/public_html/info/test.php on line 1

Le Open Base dir ne fonctionne pas sur des hôtes virtuel (style *.domaine.be ) et donc il faut absolument avoir un virtualhost pas sous domaine...

C'est pour ça que je suis venu vous voir...

9

Re : Sécurité et Php (safe_mode déprécié, open_base_dir pas dynamique)

Ce forum est mort, tu devrais poser ta question autre part.
J'ai moi même fait un post et aucune réponse...