IIS_IUSRS y permisos IUSR en IIS8

147

Me acabo de mudar de IIS6 en Win2003 a IIS8 en Win2012 para alojar aplicaciones ASP.NET.

Dentro de una carpeta en particular en mi aplicación, necesito crear y eliminar archivos. Después de copiar los archivos al nuevo servidor, seguí viendo los siguientes errores cuando intenté eliminar archivos:

Se deniega el acceso a la ruta 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf'.

Cuando verifico IIS, veo que la aplicación se ejecuta con la cuenta DefaultAppPool, sin embargo, nunca configuro los permisos de Windows en esta carpeta para incluir IIS AppPool \ DefaultAppPool

En cambio, para dejar de gritar a los clientes, otorgué los siguientes permisos en la carpeta:

IUSR

  • Leer y ejecutar
  • Lista de contenidos en la carpeta
  • Leer
  • Escribir

IIS_IUSRS

  • Modificar
  • Leer y ejecutar
  • Lista de contenidos en la carpeta
  • Leer
  • Escribir

Esto parece haber funcionado, pero me preocupa que se hayan establecido demasiados privilegios. He leído información contradictoria en línea sobre si realmente se necesita IUSR aquí. ¿Alguien puede aclarar qué usuarios / permisos serían suficientes para crear y eliminar documentos en esta carpeta, por favor? Además, ¿es IUSR parte del grupo IIS_IUSRS?

Actualización y solución

Por favor vea mi respuesta a continuación . Tuve que hacer esto tristemente ya que algunas sugerencias recientes no estaban bien pensadas, ni siquiera eran seguras (OMI).

EvilDr
fuente
Para que WordPress funcionara en IIS 8 en una máquina virtual de Azure (Windows Server 2012 Datacenter) necesitaba otorgar los permisos que ha enumerado para IIS_IUSRS a IUSR para el directorio del blog en inetpub / wwwroot
dumbledad
Para aquellos que vienen a este hilo porque están tratando de ejecutar Joomla bajo IIS y están teniendo problemas con la configuración de seguridad de los archivos, he escrito un artículo de blog con lo que creo que es la solución adecuada. Probablemente también sea aplicable a WordPress u otros programas de servidor web basados ​​en PHP. renniestechblog.com/index.php/information/…
RenniePet
Funciona bien después de agregar permisos completos para la carpeta del grupo de usuarios IIS_IUSRS.
Thulasiram
@Thulasiram, pero luego ha otorgado todos los privilegios a todos los usuarios de IIS. Piensa en eso desde la perspectiva de un hacker. Un sitio débil y obtienen el control total de todo el resto
EvilDr

Respuestas:

146

Odio publicar mi propia respuesta, pero algunas respuestas recientemente han ignorado la solución que publiqué en mi propia pregunta, sugiriendo enfoques que son nada menos que insensatos.

En resumen: no necesita editar ningún privilegio de cuenta de usuario de Windows . Hacerlo solo introduce riesgos. El proceso se administra completamente en IIS utilizando privilegios heredados.

Aplicación de permisos de modificación / escritura a la cuenta de usuario correcta

  1. Haga clic con el botón derecho en el dominio cuando aparezca en la lista de Sitios y elija Editar permisos

    ingrese la descripción de la imagen aquí

    En la pestaña Seguridad , verá que MACHINE_NAME\IIS_IUSRSaparece en la lista. Esto significa que IIS tiene automáticamente permiso de solo lectura en el directorio (por ejemplo, para ejecutar ASP.Net en el sitio). No necesita editar esta entrada .

    ingrese la descripción de la imagen aquí

  2. Haga clic en el botón Editar , luego Agregar ...

  3. En el cuadro de texto, escriba IIS AppPool\MyApplicationPoolName, sustituyendo MyApplicationPoolNamecon su nombre de dominio o cualquier grupo de aplicaciones que esté accediendo a su sitio, p. Ej.IIS AppPool\mydomain.com

    ingrese la descripción de la imagen aquí

  4. Presione el botón Comprobar nombres . El texto que escribió se transformará (observe el subrayado):

    ingrese la descripción de la imagen aquí

  5. Presione OK para agregar el usuario

  6. Con el nuevo usuario (su dominio) seleccionado, ahora puede proporcionar de forma segura cualquier permiso de modificación o escritura

    ingrese la descripción de la imagen aquí

EvilDr
fuente
2
Esto no funcionó en mi servidor IIS 8.5. Añadiendo IUSRobras. Agregar IIS AppPool\Cache(el nombre de mi grupo de aplicaciones) rindeHTTP Error 401.3 - Unauthorized
Charles Burns
14
@CharlesBurns Tuve el mismo problema, descubrí que esta es mi causa raíz: techras.wordpress.com/2016/03/09/… (la autenticación anónima se configuró para usar IUSR en lugar de Application Pool Identity)
Jon
2
Tenía una carpeta utilizada solo como directorio virtual y funcionó bien hasta que la compartí (la carpeta de Windows a la que apuntaba) con otra cuenta de dominio, para que pudiera ver los archivos en nuestra intranet. Cuando hice esto, los archivos en el Directorio virtual de repente se volvieron inalcanzables. Terminé teniendo que agregar ambos MyComputerName\IIS_IUSRSy IUSRcon permisos de solo lectura para que funcione nuevamente. Esto es solo para directorios virtuales (no para aplicaciones .net), pero creo que alguien puede encontrarlo útil.
MikeTeeVee
13
Solo una nota: cuando busca al usuario y la computadora es miembro de un dominio, es posible que no se encuentre IIS AppPool \ MyApplicationPoolName. En mi caso, necesitaba hacer clic en el botón Ubicaciones y cambiar la ubicación a la computadora local.
statler
3
En mis pruebas, el nombre del usuario especial para usar aquí no tiene nada que ver con un nombre de dominio. Es el nombre del grupo de aplicaciones que se asigna al sitio en IIS. Este grupo de aplicaciones puede o no tener un nombre que coincida con el dominio de su sitio web. Por lo que el patrón es: IIS AppPool\[APPLICATION POOL NAME]. Se aceptan espacios en blanco en el nombre del grupo de aplicaciones. Tenga en cuenta también que solo se encontrará a este usuario si se marca "Principios de seguridad integrados" como tipo de objeto para la búsqueda de nombre (campo superior en el cuadro de diálogo "Seleccionar usuarios o grupos").
Jpsy
50

IUSR es parte del grupo IIS_IUSER. Por lo tanto, supongo que puede eliminar los permisos para IUSR sin preocuparse. Otras lecturas

Sin embargo, surgió un problema con el tiempo a medida que más y más servicios del sistema de Windows comenzaron a ejecutarse como NETWORKSERVICE. Esto se debe a que los servicios que se ejecutan como NETWORKSERVICE pueden alterar otros servicios que se ejecutan con la misma identidad. Debido a que los procesos de trabajo de IIS ejecutan código de terceros de manera predeterminada (código ASP clásico, ASP.NET, PHP), era hora de aislar los procesos de trabajo de IIS de otros servicios del sistema de Windows y ejecutar procesos de trabajo de IIS con identidades únicas. El sistema operativo Windows proporciona una característica llamada "Cuentas virtuales" que permite a IIS crear identidades únicas para cada uno de sus Grupos de aplicaciones. DefaultAppPool es el grupo predeterminado que se asigna a todos los grupos de aplicaciones que cree.

Para hacerlo más seguro, puede cambiar la identidad IIS DefaultAppPool a ApplicationPoolIdentity.

Con respecto al permiso, Crear y Eliminar resume todos los derechos que se pueden otorgar. Entonces, lo que haya asignado al grupo IIS_USERS es que lo requerirán. Nada más y nada menos.

espero que esto ayude.

Travis G
fuente
3
Acabo de instalar IIS 8 en Server Essentials 2012 R2. Esta máquina también es un controlador de dominio. En Usuarios y equipos de AD, el grupo IIS_IUSRS está vacío; no contiene el usuario IUSR. Supongo que podría agregarlo al grupo, pero para sitios anónimos, solo otorgaré permisos al usuario de IUSR.
Mark Berry
77
Cuando concedí permisos para IUSR funcionó. Cuando concedí permisos a IIS_IUSER, no funcionó.
ihebiheb
Iusr no es miembro de IIS_Iusrs. (o las ventanas tienen un error) Generalmente, Windows usa IIS_Iusrs. (ejecutando páginas dinámicas o accediendo a páginas estáticas) pero hay algunos casos en que Windows usa Iusr, no IIS_Iusrs. cargar archivos usando PHP es uno de esos casos. (y si se le concede iis_iusr solamente, se encontrará con excepción privilegio) Creo que M $ se debe dar "Una de las mejores prácticas" para la concesión de permssion IUSR y IIS_IUSRS ...
finejustice
Creo que ahora ha cambiado al grupo de grupo de aplicaciones, es decir (IWGP). Le di permisos a IWGP y funcionó.
Rohit Arora
66
IUSR es parte de IIS_IUSER. ¡NO, NO ES! IUSR es el usuario anónimo, IIS_IUSER es el grupo para usuarios del grupo de aplicaciones
giammin
6

Cuando agregué el permiso IIS_IUSRS a la carpeta del sitio, los recursos, como js y css, aún no eran accesibles (error 401, prohibido). Sin embargo, cuando agregué IUSR, todo estuvo bien. Así que seguro "NO PUEDES eliminar los permisos para IUSR sin preocuparte", querido @Travis G @

Alejandro
fuente
77
No olvide que (si tiene IIS7 +) la solución correcta es usar IIS AppPool\MyApplicationPoolNamesegún mi respuesta actualizada. ¡Ya no es necesario que te metas con IUSR (S)!
EvilDr
2
He probado tu sugerencia, pero no funciona. Eliminé IUSR (S) del permiso y seguí siendo solo el nombre del grupo, la aplicación se está ejecutando. Los recursos se volvieron inaccesibles. IIS 8.5. Cuando agregué IUSR, funcionó.
Alexander
Necesita publicar su propia pregunta con tanta información sobre su situación, por favor.
EvilDr
4

@EvilDr Puede crear una cuenta IUSR_ [identificador] dentro de su entorno AD y dejar que el grupo de aplicaciones en particular se ejecute bajo esa cuenta IUSR_ [identificador]:

"Grupo de aplicaciones"> "Configuración avanzada"> "Identidad"> "Cuenta personalizada"

Configure su sitio web en "Usuario de Applicaton (autenticación de paso)" y no en "Usuario específico", en la Configuración avanzada.

Ahora otorgue a IUSR_ [identificador] los permisos NTFS apropiados en archivos y carpetas, por ejemplo: modificar en datos de la compañía.

Jan Reilink
fuente
Gracias pero no estoy usando AD. Además, según la documentación reciente de MS, IIS 7 y 8 ya están configurados para funcionar como usted describe. La pregunta realmente es si una de las cuentas especificadas es realmente necesaria o no, y ¿cuál es el negocio?
EvilDr
@EvilDr Gracias por aclarar que no está utilizando un AD. Bueno, IIS_IUSRS no es un usuario, es un grupo. Como IIS_WPG en IIS 6.0. Puede leer sobre IIS_IUSRS e IUSR aquí: enlace . Puede establecer permisos de modificación en datos de empresa * para la cuenta IUSR y puede agregar a este usuario al grupo IIS_IUSRS y usar esa cuenta de uso para ejecutar su grupo de aplicaciones. Solo necesita grandes permisos para IIS_IUSRS en carpetas compartidas (TMP, por ejemplo), si tiene varias cuentas IUSR.
Jan Reilink
Jan, ¿siempre pensé que IUSR era parte del grupo IIS_IUSRS por defecto? ¿Cómo puede verificar si esto es así, ya que la cuenta IUSR es una cuenta integrada? ¿Estás diciendo que debería desmarcar Modificar para IIS_USRS y marcarlo para IUSR? Dado el requisito de aplicación única, no creo que realmente haga una diferencia, ¿verdad?
EvilDr
3

El grupo IIS_IUSRS tiene prominencia solo si está utilizando la identidad de grupo de aplicaciones. A pesar de que este grupo se ve vacío en el tiempo de ejecución, IIS agrega a este grupo para ejecutar un proceso de trabajo de acuerdo con la literatura de Microsoft.

Ashburn RK
fuente
No estoy seguro de por qué esto fue rechazado. docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Greg
0

Usaría un usuario específico (y NO un usuario de la aplicación). Entonces habilitaré la suplantación en la aplicación. Una vez que haga eso, sea cual sea la cuenta establecida como usuario específico, esas credenciales se usarían para acceder a los recursos locales en ese servidor (no para recursos externos).

La configuración específica del usuario está específicamente diseñada para acceder a los recursos locales.

desarrollador747
fuente