¿Cuáles son todas las cuentas de usuario para IIS / ASP.NET y cómo difieren?

En Windows Server 2008 con ASP.NET 4.0 instalado, hay una gran cantidad de cuentas de usuario relacionadas, y no puedo entender cuál es cuál, cómo difieren y cuál es REALMENTE en el que se ejecuta mi aplicación. Aquí hay una lista:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • SERVICIO DE RED
  • SERVICIO LOCAL.

¿Que es que?

Esta es una muy buena pregunta y lamentablemente muchos desarrolladores no hacen suficientes preguntas sobre la seguridad de IIS / ASP.NET en el contexto de ser un desarrollador web y configurar IIS. Así que aquí va …

Para cubrir las identidades enumeradas:

IIS_IUSRS:

Esto es análogo al antiguo grupo IIS_WPG . Es un grupo integrado con su seguridad configurada de modo que cualquier miembro de este grupo pueda actuar como una identidad de grupo de aplicaciones.

IUSR:

Esta cuenta es análoga a la antigua IUSR_ local IUSR_ que era el usuario anónimo predeterminado para los sitios web IIS5 e IIS6 (es decir, el configurado a través de la pestaña Seguridad de directorios de las propiedades de un sitio).

Para obtener más información sobre IIS_IUSRS y IUSR consulte:

Comprender las cuentas integradas de usuario y grupo en IIS 7

DefaultAppPool:

Si un grupo de aplicaciones está configurado para ejecutarse utilizando la función Identidad del grupo de aplicaciones, se creará sobre la marcha una cuenta “sintetizada” llamada IIS AppPool\ para utilizarla como identidad del grupo. En este caso, habrá una cuenta sintetizada llamada IIS AppPool\DefaultAppPool creada para el tiempo de vida del conjunto. Si elimina el grupo, esta cuenta ya no existirá. Al aplicar permisos a archivos y carpetas, estos deben agregarse usando IIS AppPool\ . Tampoco verá estas cuentas de grupo en el Administrador de usuarios de su computadora. Consulte lo siguiente para obtener más información:

Identidades del grupo de aplicaciones

ASP.NET v4.0:

Esta será la identidad del grupo de aplicaciones para el grupo de aplicaciones ASP.NET v4.0. Ver DefaultAppPool arriba.

NETWORK SERVICE:

La cuenta de NETWORK SERVICE es una identidad incorporada introducida en Windows 2003. El NETWORK SERVICE es una cuenta de bajo privilegio bajo la cual puede ejecutar sus grupos de aplicaciones y sitios web. Un sitio web que se ejecuta en un grupo de Windows 2003 aún puede suplantar la cuenta anónima del sitio (IUSR_ o lo que configuró como la identidad anónima).

En ASP.NET antes de Windows 2008, puede hacer que ASP.NET ejecute solicitudes bajo la cuenta del grupo de aplicaciones (generalmente, NETWORK SERVICE ). Alternativamente, puede configurar ASP.NET para suplantar la cuenta anónima del sitio a través de la configuración en web.config archivo web.config localmente (si esa configuración está bloqueada, deberá realizarla un administrador de la machine.config archivo machine.config ).

La configuración es común en entornos de alojamiento compartido donde se usan grupos de aplicaciones compartidas (junto con la configuración de confianza parcial para evitar la anulación de la cuenta suplantada).

En IIS7.x / ASP.NET, el control de suplantación ahora se configura a través de la característica de configuración de autenticación de un sitio. Por lo tanto, puede configurar para ejecutarse como la identidad del grupo, IUSR o una cuenta anónima personalizada específica.

LOCAL SERVICE:

La cuenta de servicio LOCAL SERVICE es una cuenta integrada utilizada por el administrador de control de servicio. Tiene un conjunto mínimo de privilegios en la computadora local. Tiene un scope de uso bastante limitado:

Cuenta LocalService

LOCAL SYSTEM:

No preguntaste sobre este, pero estoy agregando para compleción. Esta es una cuenta local incorporada. Tiene privilegios y confianza bastante extensos. Nunca debe configurar un sitio web o grupo de aplicaciones para ejecutar bajo esta identidad.

Cuenta LocalSystem

En la práctica:

En la práctica, el enfoque preferido para proteger un sitio web (si el sitio obtiene su propio grupo de aplicaciones, que es el predeterminado para un nuevo sitio en MMC de IIS7) es ejecutar bajo Application Pool Identity . Esto significa establecer la identidad del sitio en la configuración avanzada de su grupo de Application Pool Identity :

enter image description here

En el sitio web, debe configurar la función Autenticación:

enter image description here

Haga clic derecho y edite la entrada Autenticación anónima:

enter image description here

Asegúrese de que esté seleccionada la “Identidad del grupo de aplicaciones” :

enter image description here

Cuando llega a aplicar permisos de archivos y carpetas, otorga a la agrupación de aplicaciones la identidad de todos los derechos necesarios. Por ejemplo, si otorga la identidad del grupo de aplicaciones para los permisos del grupo ASP.NET v4.0 , puede hacerlo a través de Explorer:

enter image description here

Haga clic en el botón “Comprobar nombres”:

enter image description here

O puede hacerlo utilizando la utilidad ICACLS.EXE :

  icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M) 

… o … si el grupo de aplicaciones de su sitio se llama BobsCatPicBlog entonces:

  icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M) 

Espero que esto ayude a aclarar las cosas.

Actualizar:

Me topé con esta excelente respuesta de 2009 que contiene un montón de información útil, vale la pena leerla:

¿La diferencia entre la cuenta del “Sistema local” y la cuenta del “Servicio de red”?