suPHP

suPHP est un outil pour executer des scripts PHP avec les droits de leur proprietaire. Il est composé d’un module Apache (mod_suphp) et d’un setuid root binary (suphp) appelé par le module Apache pour changer l’uid du processus exécutant l’interprétateur PHP.

Par défaut, le code PHP est réalisé sous les privilèges de l’utilisateur faisant tourner Apache ; Sous Debian, c’est www-data. Si vous faîtes tourner des sites virtuels (comme le font les hébergeurs), tous les scripts PHP utiliseront le même utilisateur.

Il faut donc être très attentif aux permissions de cet utilisateur (fichiers de configuration des applications avec des mots de passe à l’intérieur, etc.).

Au fur et à mesure des versions de PHP, l’interpréteur s’est vu gonflé d’options pour améliorer la sécurité de l’interpréteur lui-même mais aussi afin de brider le langage pour éviter les pièges :

  • Magic_quote
  • Magic variable
  • Safe_mode
  • Limitation du temps d’exécution
  • Consommation de mémoire…, etc.

Si cela est possible, utilisez impérativement le safe_mode !

 

 EXECUTION DU CODE PHP

Nous avons vu le problème pour l’exécution du code : toutes les applications sont lançées sous le même utilisateur.

Une solution tierce existe pour résoudre ce souci en utilisant un module supplémentaire, mod_suphp.

En résumé, mod_suphp exécute le code PHP uniquement sous l’identité du propriétaire du fichier.

Dans le cadre d’un service d’hébergement, nous aurons alors à créer un utilisateur par domaine, pour que chaque site web soit cloisonné des autres.

Remarquez tout de même que cela ne protègera pas le site si une faille de sécurité est trouvée dans l’une de ses applications PHP.

à SafeBrands les permissions sont fixées avec un umask = 0022.

Les dossiers et fichiers ne seront accessibles que par le propriétaire du site web.