EDIT # 2 23 juillet 2015: à la recherche d'une nouvelle réponse qui identifie un élément de sécurité important manquant dans la configuration ci-dessous ou peut donner des raisons de croire que tout est couvert.
EDIT # 3 29 juillet 2015: Je recherche en particulier une mauvaise configuration possible comme autoriser par inadvertance quelque chose qui pourrait être exploité pour contourner les restrictions de sécurité ou pire encore laisser quelque chose de grand ouvert.
Il s'agit d'une configuration d'hébergement multi-site / partagé et nous voulons utiliser une instance Apache partagée (c'est-à-dire qu'elle s'exécute sous un seul compte utilisateur) mais avec PHP / CGI fonctionnant en tant qu'utilisateur de chaque site Web pour garantir qu'aucun site ne peut accéder aux fichiers d'un autre site, et nous voulons assurez-vous que rien ne manque (par exemple si nous ne connaissions pas la prévention des attaques par lien symbolique).
Voici ce que j'ai jusqu'à présent:
- Assurez-vous que les scripts PHP s'exécutent en tant que compte et groupe d'utilisateurs Linux du site Web et sont soit emprisonnés (comme CageFS), soit au moins correctement restreints à l'aide des autorisations du système de fichiers Linux.
- Utilisez suexec pour vous assurer que les scripts CGI ne peuvent pas être exécutés en tant qu'utilisateur Apache.
- Si
Options IncludesNOEXEC
vous avez besoin d'une prise en charge côté serveur (comme dans les fichiers shtml), utilisez-la pour empêcher CGI d'être exécuté lorsque vous ne vous y attendez pas (bien que cela ne devrait pas être un problème si vous utilisez suexec). - Mettez en place une protection contre les attaques par lien symbolique afin qu'un pirate ne puisse pas tromper Apache pour qu'il serve les fichiers d'un autre site Web sous forme de texte en clair et divulgue des informations exploitables comme les mots de passe de base de données.
- Configurez
AllowOverride
/AllowOverrideList
pour n'autoriser que les directives qu'un pirate ne pourrait pas exploiter. Je pense que cela est moins préoccupant si les éléments ci-dessus sont effectués correctement.
J'irais avec MPM ITK si ce n'était pas si lent et ne s'exécutait pas en tant que root, mais nous souhaitons spécifiquement utiliser un Apache partagé tout en nous assurant qu'il est fait en toute sécurité.
J'ai trouvé http://httpd.apache.org/docs/2.4/misc/security_tips.html , mais ce n'était pas complet sur ce sujet.
S'il est utile de le savoir, nous prévoyons d'utiliser CloudLinux avec CageFS et mod_lsapi.
Y a-t-il autre chose à faire ou à savoir?
EDIT 20 juillet 2015: Les gens ont soumis de bonnes solutions alternatives qui sont utiles en général, mais veuillez noter que cette question ne concerne que la sécurité d'une configuration Apache partagée. Plus précisément, y a-t-il quelque chose qui n'est pas couvert ci-dessus qui pourrait permettre à un site d'accéder aux fichiers d'un autre site ou compromettre d'autres sites d'une manière ou d'une autre?
Merci!