17 votos

¿Debería hacerse pasar por PHP via FastCGI?

Estoy instalando la versión más reciente de PHP en IIS 7.5 a través de FastCGI, y todas las instrucciones dicen que FastCGI debe suplantar la llamada del cliente mediante el establecimiento de

 fastcgi.impersonate = 1

Si mi sitio web tendrá esta configuración

  • aplicación dedicada a la piscina
  • identidad del grupo de aplicaciones de ApplicationPoolIdentity
  • la autenticación anónima sólo (como IUSR)

¿por qué quiero suplantar?

Yo vengo de un ASP.NET de fondo, donde el IUSR obtiene permisos de solo lectura y la identidad del grupo de aplicaciones obtiene permisos de escritura. Dar acceso de escritura a la IUSR, normalmente se abre la puerta para WebDAV vulnerabilidades. Así que no me atrevo a dejar de ejecución de PHP como el IUSR.

No puedo encontrar a muchas personas haciendo esta pregunta (1 | 2) así que creo que me debe faltar algo. Alguien puede aclarar esto para mí?

19voto

Aaron Puntos 2456

13 meses más tarde, yo quería volver a mi propia pregunta. En ese momento me he trasladado a una media docena de sitios web de IIS 6 IIS 7.5 y configurado con mi método preferido. Todo lo que puedo decir es que los sitios web funcionen, que no he tenido problemas de seguridad (no se que estos son los sitios más populares), y en mi opinión, la instalación es más seguro que lo que learn.iis.net recomienda.

Para la posteridad, aquí están los ajustes pertinentes. En el PHP INI:

cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0

En IIS:

  • Grupo De Aplicaciones > Identidad > ApplicationPoolIdentity
  • Sitio web > Autenticación > Autenticación Anónima > Usuario Específico: IUSR

Los permisos de NTFS y dónde aplicarlos:

  • IUSR a la Concesión de Lectura, Denegar Escribir
    • El directorio root del sitio web de IIS. Por ejemplo, en una Zend Framework proyecto, este sería el directorio /public.
    • Si la aplicación carga los archivos y los guarda en un directorio público, es necesario solicitar este permiso temporal directorio de carga. Esto es debido a que move_uploaded_file de preservar los permisos del directorio de carga. Este es el mayor inconveniente de este permisos de instalación que he encontrado.
  • ApplicationPoolIdentity (IISAPPPOOL\YourApplicationPoolName) - Concesión De La Lectura Y De La Lista De
    • La root de tu aplicación PHP. Por ejemplo, en una Zend Framework proyecto, este sería el proyecto en su totalidad.
    • Cualquier bibliotecas externas (Zend, Doctrina, etc.) incluye por su aplicación que no están en la carpeta de la aplicación.
  • ApplicationPoolIdentity La Concesión Modificar
    • Cualquier lugar donde su aplicación se escribe como upload_tmp_dir, session.save_pathy error_log.
    • A veces necesito agregar este permiso a la root de la aplicación PHP en mi entorno de desarrollo para apoyar cosas como la Doctrina de la auto-generación de proxies.
  • ApplicationPoolIdentity A La Concesión De La Lista
    • Si su aplicación está en un directorio virtual, usted necesitará agregar este permiso a la root del sitio web. Esto permite que la aplicación lea su padre web.config. Por ejemplo, si la root de la aplicación es http://example.com/MyPHPApp, el conjunto de este permiso en el example.com directorio web. Específicamente sólo es necesario aplicar a Esta carpeta y archivos", "sólo dentro de este contenedor".

Espero que esto ayude a alguien que decide que la learn.iis.net las instrucciones no son los ideales.

1voto

bob-the-destroyer Puntos 138

Ver: http://www.php.net/manual/en/install.windows.iis6.php

Suplantación de identidad y acceso al sistema de archivos

Se recomienda habilitar la suplantación en PHP FastCGI cuando el uso de IIS. Esto es controlado por el fastcgi.suplantar la identidad de la directiva en php.en el archivo ini. Cuando está habilitada la suplantación, PHP llevará a cabo todas las operaciones del sistema de archivos en nombre de la cuenta de usuario que ha sido determinar por parte de autenticación de IIS.

Por la documentación, que simplemente permite la fastcgi para actuar en nombre del cliente con todos los permisos (en el caso de lo que parece la cuenta IUSR). En otras palabras, para realizar todas las acciones que normalmente el cliente (o anón) propias credenciales. No más, no menos. Sin este conjunto, me imagino pobre fastcgi quedaría paralizado.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: