Exécution de plusieurs sites sur un LAMP avec isolation sécurisée

J’ai administré quelques serveurs LAMP avec 2 à 5 sites sur chacun d’eux. Celles-ci sont essentiellement la propriété du même utilisateur / client, il n’y a donc pas de problèmes de sécurité, à l’exception des attaques via des démons ou des scripts vulnérables. Je construis mon propre serveur et souhaite commencer à héberger plusieurs sites. Ma première préoccupation est … ISOLEMENT. Comment puis-je éviter qu’un script c99 puisse dégrader tous les hôtes virtuels? De plus, devrais-je empêcher que c99 puisse écrire / lire les répertoires des autres sites? (Il est facile de “chatter” un config.php depuis un autre site et ensuite de rentrer dans la firebase database mysql) Mon serveur est un VPS avec 512M en rafale à 1G. Parmi les responsables de l’hébergement gratuit, y en a-t-il un petit qui fonctionne pour mon VPS? (ce qui est peut-être compatible avec l’approche de sécurité que j’aimerais avoir) Actuellement, je ne prévois pas héberger plus de 10 sites, mais je n’accepterais pas qu’un client / pirate puisse naviguer dans des répertoires indésirables ou, pire, exécuter des scripts malveillants. La gestion FTP serait bien. Je ne veux pas compliquer les choses avec l’isolement SSH.

Quelle est la meilleure pratique dans ce cas? Fondamentalement, que font les sociétés d’hébergement pour bien dormir? 🙂

Merci beaucoup! David

Vous devez utiliser la directive PHP open_basedir dans votre configuration Apache pour chaque hôte virtuel en ajoutant cette ligne:

 ServeName www.example.com DocumentRoot /path/to/your/virtualroot ... ... usual stuff ... ... php_admin_value open_basedir /path/to/your/virtualroot:/some/other/path  

Cela limitera tous vos processus PHP pour accéder uniquement à ce (ou ces) chemin sur votre système de fichiers. L’ouverture des fichiers sur d’autres emplacements sera interdite, même par chdir () ou en utilisant des liens symboliques.

Vous pouvez également fournir cette directive à l’exécution avec ini_set () depuis PHP5.3.0 mais à mon avis, il est préférable de l’appliquer directement dans vos fichiers vhosts.conf.

PHP Manual

Découvrez ITK MPM pour Apache 2.x: http://mpm-itk.sesse.net/

Je l’utilise sur un certain nombre de sites occupés depuis quelques années maintenant, sans aucun problème.

Pour une isolation maximale, envisagez une virtualisation légère (OpenVZ sous Linux, jails FreeBSD ou similaire). Il est similaire aux machines virtuelles d’Orginary, mais partage le kernel et ne supporte donc pas la virtualisation complète. Les machines virtuelles légères peuvent également partager l’espace disque de manière coopérative au lieu d’utiliser chacune une image de disque distincte, et peuvent toutes utiliser des copies uniques des mêmes fichiers. L’inconvénient est que les machines virtuelles légères exécutent toujours le même kernel, c’est-à-dire que vous ne pouvez pas exécuter un système d’exploitation sur un autre, ce qui ne semble pas être un problème pour vous.