Sécuriser php en environnement multi-utilisateurs ou multi-sites

Posté le 13 oct, 2007 dans debian, dedibox, hebergement, linux, sécurité | 4 Commentaires

La hantise de tout admin serveur web: que tout tombe.
Le problème: une mini faille sur un site inutile, completement oublié et donc pas à jour peut suffire à TOUT faire tomber … (on se souvient du cas de sivit)
La solution: tout tenir toujours à jour, tout développer comme une bete et non pas à l’arrache à coup de « Ca marche c’est bon », ne pas utiliser de cms … ?
Facile à dire …

Je vous parle ici surtout du cas de php utilisé dans 99% des sites web dynamiques et je vais essayer de vous présenter quelques astuces ou solutions pour vous éviter le pire.

Exemple concret:
Un client/pote à installé un phpBB il y a 3 ans sur votre serveur, autant dire qu’il n’est pas à jour.
Un gentil pirate se pointe et grace à une faille sur ce pauvre petit forum de 10 visiteurs/an accède à tous les fichiers du serveur, serveur qui contient une dizaine d’autres sites extremement importants.
Sans protections spéciales mises en place le vilain peut modifier / effacer … TOUT les fichiers / dossiers de TOUT le serveur auxquels apache à accès !
Suivant donc comment vous configurer vos groupes ca peut faire très très mal !

Heureusement il existe quelques solutions qui nous permettent de sécuriser un peu php via son l’UID ou le parker dans une zone bien definie (ou les deux) et votre shop ecommerce ne tombera plus à cause de vos photos de vacances mises en ligne avec un script datant de mathusalem ;)

Il y a différentes écoles toutes avec leurs avantages et inconvenients pour parker php dans son coin ou bidouiller ses droits:

SUPHP

suPhp est un module apache qui permet d’éxecuter les scripts php avec les permissions de leurs propriétaires.
Avantages:

  • User1 ne pourra pas modifier les fichiers de User2.
  • De base apache pourra modifier les fichiers de user1 s’il se trouve sur le site web de user1, plus besoin de chmoder.

Si vous installez suphp, il vous suffit donc par exemple de créer un user par site ou si vous créez un nouvel users, vous êtes sur qu’il ne pourra venir foutre le merdier chez vous.

Inconvenient:

  • Cela ralentirait quelque peu le serveur
  • Il vaut mieu avoir mis cette technique en pratique dès le départ
  • Un user par sites si vous en avez beaucoup ca commence à être lourd a gérer
  • Tout le monde n’a pas envie qu’apache puisse modifier tous ces fichiers …

Un exellent tuto la dessus: suphp apache 2 php4 et php5

SUEXEC


La fonctionnalité suEXEC — introduite à partir de la version 1.2 d’Apache — donne aux utilisateurs d’Apache la possibilité d’exécuter des programmes CGI et SSI sous des UID distincts de l’utilisateur associé au serveur Web lui-même. Normalement, lorsqu’un programme CGI ou SSI s’exécute, il tourne sous le même utilisateur que le serveur Web.

Correctement utilisée, cette fonctionnalité peut réduire considérablement les risques lorsque l’autorisation est donnée aux utilisateurs de développer et d’exécuter leurs propres programmes CGI ou SSI. Cependant, si suEXEC n’est pas correctement configuré, de nouveaux problèmes peuvent apparaître, voire de nouveaux « trous » dans votre dispositif de sécurité. Si vous n’êtes pas un familier de la gestion des programmes sous setuid root et de leurs implications sur la sécurité, nous vous recommandons fortement d’éviter d’utiliser suEXEC.
( source )

Les inconvenients sont sensiblement les même que suphp avec en prime une config un poil plus complexe.

Un tuto la dessus égallement: installation-de-apache-php-5-en-cgi-mode-suexec

Open_basedir

Denière métthode de ce papier, l’open_basedir.
Contrairement à suphp ou suexec, l’open basedir ne fonctionne pas par rapport aux utilisateurs mais par dossier:
Si vous tentez d’ouvrir un fichier, php verifie que ce dernier ce sirue bien dans la zone autorisée et si non: il vous refoule.
Vous ne changez donc pas l’UID d’apache, vous indiquez simplement la zone ou php à le droit d’agir.

Avantages: vous pouvez très bien mettre en place cette fonctionnalité une fois le serveur déjà en production car vous n’ajoutez pas de mod apache, open_basedir se configure via les virtualhost apache et peut être automatisé.

Exemple de fichier de configuration:

>VirtualHost *:80<
        ServerAdmin admin@domain.tld
        DocumentRoot /srv/web/domain.tld/htdocs
        ServerName domain.tld
        php_admin_value open_basedir PATH1:PATH2:PATH3
>/VirtualHost<

Attention au "<" et ">" autour de virtualhost à inverser.
La ligne qui nous intéresse est php_admin_value open_basedir.
Remplacez PATHX par les chemins absolus à autoriser. Vous pouvez égallement indiquez "." pour autoriser uniquement le dossier courant (attention modifiable par php ...).

Attention, terminez bien vos path par "/" sinon apache interpretera le path comme path*
Exemple: /var/www/monsite fonctionnera pour /var/www/monsite2, /var/www/monsitecestdlaballe .... à l'inverse de /var/www/monsite/
Sous linux le caractère de séparation des différents chemin est ":" sous windows, c'est ";"

Enfin, n'hésitez pas à jeter un oeil à la doc à apache la dessus et tout particulièrement la page sur les hébergements de masse et la page du wiki dedié à la sécurisation de php lien

Si vous conaissez d'autres astuces je suis preneur ;)

mots clefs relatifs : suexec suphp | apache 2 multi site securise | suphp tutoriel | comment sécuriser mon site web php | config apache open_basedir | inconvénients de suphp | modifier open_basedir | multi user virtual host securité | php gestionaire des fichier multiutilisateur | php multi-users security | php_admin_value open_basedir ne marche avec suphp | php_admin_value open_basedir suphp probleme | suphp droit tuto | suphp exec | suphp tuto | sécuriser openbasedir | securise un repertoire avec php | ubuntu apache2 suexec user | inconvénients php | avantages suphp | securiser suphp | apache + suphp + suexec | suphp avantages | apache open_basedir ne fonctionne pas | apache php virtualhost openbasedir | apache suexec php | répertoire courant multi sites | suphp probleme creation repertoire | hebergement multi domaine apache user group | tuto apache php suexec | apache openbasedir | apache php open_basedir | lancer apaches avec plusieurs utilisateurs différents | multi utilisateurs inconvénients | suphp apache | tutoriel open_basedir | php openbasedir | probleme suexec | suphp php open_basedir | php open_basedir | suphp "open basedir" | orthographe multi site | ou est fichier log suexec ubutu | gestion utilisateur php securite | php multi utilisateur apache | apache executer avec des utilisateur différents | faille open_basedir | htaccess multi-utilisateur php | plusieurs utilisateurs apache | configuration serveur web virtualhost open_basedir | hébergement apache multi-utilisateurs | securiser php | apache executer php avec user different | php openbasedir apache | phpbb3 multi utilisateurs sous domaine | apache multi domaine sécurité | multi msn9 | multi utilisateurs php | apache faille courante | open_basedir apache | créer site web multi utilisateurs | multi user php | virtualhost sécurité | openbasedir mod | comment sécuriser page client magento | multi sites orthographe | code pour créer un multi site en php | open_basedir = configuration | droits utilisateur php | open_basedir php "exec" | apache 2 suphp php_admin_value | securisation apache php | problème suphp | securisation apache uid | securise droit apache | securise une var en php | mod utilisateur php | parametre open_basedir ubuntu | utilisateur php | apache exec suphp | gestion ds permissions sur apache2 | openbasedir php vhost | php configuration des droit pour utiliser exec | installation php sécurisé multi | apaches multisites | open basedir suphp | application multi utilisateur php | linker serveur web /var/www | gestion multiutilisateurs php | gérer les droits des utilisateurs php | module apache open_basedir | php multi hebergement | avantage suexec | multisites orthographe | apache2 php5 sécuriser utilisateurs | empecher d'ouvrir un repertoire en php | droit utilisateur php | quelle utilisateur apache creation fichier en php | configuration sécuritaire avec suexec | hebergement web multi user | open_basedir php virtualhost | php exec uid | apache gestion utilisateur | gestion ds droits php debian | comment configurer open_basedir | gestion multi-utilisateur php | magento virtualhost apache | virtualhost apache2 php_admin_value open_basedir | creer site securisé php | debian configurer multi site | ne pas utiliser open_basedir | suphp php_admin_value | apache multi sous domaine | droit apache sur dossier php | apache open_basedir | hebergement web suphp | apache multi domaine windows | apache multi host installation | apache2 securiser php | comment securiser la config d'apache | comment sécurisé une application php | debian apache multi user | php_admin_value open_basedir | apache vhost utilisateur | debian configure apache for suexec | magento suphp | apache gérer des sous domaine avec des users différents | configuration virtualhost apache2 autorisation acces | creer hebergement multiuser | openbasedir | debian sécuriser php | comment modifier open_basedir | comment securiser apache2 | avantages inconvénients munin | apache gestion multi devollopeur | suphp virtualhost | apache virtualhost uid | ajouter repertoire open_basedir | apache autoriser php virtual host | apache php probleme creation dossier | different utilisateur vhost apache2 | "php_admin_value open_basedir" | gestion du droit des utilisateurs en php | apache php config multi users | apache php plusieurs utilisteurs | apache2 multi-domaine virtualhost | autoriser les utilisateurs à développer leurs propres programmes cgi. | comment securisé mon site web apache | configurer openbasedir

4 Commentaires

Recevoir les commentaires par email

  1. pasbesoin dit :

    Le problème de open_basedir c’est qu’il est facilement bypassable avec des fonctions comme exec.
    Donc utiliser le safe_mod, qui disparaîtra avec php6 je crois.

  2. J’avoue ne jamais l’avoir mis en place, exec ne tient pas compte des limitation openbasedir ?

  3. Il semble qu’openbasedir soit maintenant secure.

  4. arrangeur dit :

    quelle surprise dee voir aussi peu de commentaires à votre billlet :)

Trackbacks

URL de trackback: http://www.billyboylindien.com/securite/securisation-php-suphp-suexec-openbasedir.html/trackback/

Commenter

Note: La modération des commentaires est activée