Instalé Apache con FastCGI (mod_fastcgi), suExec y PHP en mi caja de desarrollo local. Funciona perfectamente, excepto una cosa.
Digamos que tengo dos usuarios:
user1 - /home/user1/public_html
user2 - /home/user2/public_html
Descubrí un grave agujero de seguridad en mi configuración: puedo incluir un archivo de la raíz web del usuario2 en el archivo del usuario1. ¿Como prevenir? ¿Algun consejo?
php-cgi
El proceso se está ejecutando con el usuario correcto.
Respuesta1
Te sugiero que configures base_path
dentro de tu VirtualHost:
php_admin_value open_basedir /usr/local/www/sixeightzero
Respuesta2
Si el objetivo es ejecutar php bajo el nombre de los usuarios, para separarlos, intenteapache2-mpm-itk, es mucho más fácil de implementar que fast-cgi y funciona muy bien.
Para usarlo solo necesita agregar esta línea a la configuración del virtualhost:
AssignUserId someuser somegroup
También puede configurar MaxClientsVHost y NiceValue si lo desea.
Respuesta3
La única forma de hacerlo correctamente es prohibir a un usuario leer archivos del directorio principal de otro usuario, pero dejarlos legibles en el servidor web.
Puede lograr esto mediante (ejemplo):
montar el sistema de archivos con opciones acl:
mount -o acl /dev/sda /home
Permitir que el servidor web acceda a él:
setfacl -m u:nobody:r-x /home/user1
setfacl -m u:nobody:r-x /home/user2
Permitir que el propietario lo lea:
setfacl -m u:user1:r-x /home/user1
setfacl -m u:user2:r-x /home/user2