¿Cuáles son todas las cuentas de usuario para IIS / ASP.NET y en qué se diferencian?

282

Bajo 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, en qué difieren, y cuál es REALMENTE con la 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?

Vilx-
fuente
¿Y usando Windows Server 2012 con ASP.NET 4.0 o superior?
Kiquenet

Respuestas:

432

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 IIS_WPGgrupo IIS6 . Es un grupo integrado con su seguridad configurada para 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_<MACHINE_NAME>cuenta local 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 directorio de las propiedades de un sitio).

Para obtener más información IIS_IUSRSy IUSRver:

Comprender las cuentas integradas de usuarios y grupos en IIS 7

DefaultAppPool:

Si un grupo de aplicaciones está configurado para ejecutarse utilizando la función Identidad del grupo de aplicaciones IIS AppPool\<pool name>, se creará una cuenta "sintetizada" sobre la marcha para utilizarla como identidad del grupo. En este caso, habrá una cuenta sintetizada llamada IIS AppPool\DefaultAppPoolcreada para el tiempo de vida del grupo. Si elimina el grupo, esta cuenta ya no existirá. Al aplicar permisos a archivos y carpetas, estos deben agregarse usando IIS AppPool\<pool name>. 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 DefaultAppPoolarriba

NETWORK SERVICE: -

La NETWORK SERVICEcuenta es una identidad incorporada introducida en Windows 2003. NETWORK SERVICEes una cuenta con pocos privilegios 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 haya configurado como identidad anónima).

En ASP.NET anterior a 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 <identity impersonate="true" />configuración en el web.configarchivo localmente (si esa configuración está bloqueada, un administrador debe hacerla en el machine.configarchivo).

La configuración <identity impersonate="true">es común en entornos de alojamiento compartido donde se usan grupos de aplicaciones compartidas (junto con configuraciones de confianza parciales para evitar el desenrollamiento de la cuenta suplantada).

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

LOCAL SERVICE:

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

Cuenta de servicio local

LOCAL SYSTEM:

No preguntaste sobre esto, pero estoy agregando que está completo. Esta es una cuenta local incorporada. Tiene privilegios y confianza bastante amplios. Nunca debe configurar un sitio web o grupo de aplicaciones para ejecutarse con esta identidad.

Cuenta de sistema local

En la práctica:

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

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

Asegúrese de que se haya seleccionado "Identidad del grupo de aplicaciones" :

ingrese la descripción de la imagen aquí

Cuando se trata de aplicar permisos de archivos y carpetas, otorga a la identidad del grupo de aplicaciones los derechos necesarios. Por ejemplo, si otorga la identidad del grupo de aplicaciones para los ASP.NET v4.0permisos del grupo, puede hacerlo a través del Explorador:

ingrese la descripción de la imagen aquí

Haga clic en el botón "Verificar nombres":

ingrese la descripción de la imagen aquí

O puede hacer esto usando la ICACLS.EXEutilidad:

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

... o ... si se llama al grupo de aplicaciones de su sitio, BobsCatPicBlogentonces:

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

Espero que esto ayude a aclarar las cosas.

Actualizar:

Acabo de encontrar esta excelente respuesta de 2009 que contiene mucha información útil, que vale la pena leer:

¿La diferencia entre la cuenta 'Sistema local' y la cuenta 'Servicio de red'?

Kev
fuente
no acepte usar el mismo usuario para la autenticación anónima y la identidad del grupo de aplicaciones ... si necesita otorgar a apppoolidentity, escriba el permiso en una carpeta ...
giammin
1
@giammin: ¿por qué no? A menos que tenga un caso especial, el uso de identidades de grupo de aplicaciones es el enfoque más seguro siempre que cada sitio esté en su propio grupo de aplicaciones. Odio hacer el "llamamiento a la autoridad" pero ha sido ingeniero de alojamiento web compartido y tipo de seguridad durante 15 años, este enfoque es obvio en IIS7 +.
Kev
@Kev simplemente no me gusta dar permiso de escritura en un sitio al usuario anónimo
giammin
1
Sus grupos de aplicaciones pueden ser aún más específicos al usar IIS AppPool \ <name_of_apppool>. En una nota relacionada, IIS Express solo funcionará con IIS AppPool \ ASP.NET v4.0 porque las cuentas virtuales del grupo de aplicaciones no se crean.
kevindaub
@ daub815 - IIS Express funciona de manera diferente porque estaba destinado a ejecutarse bajo su inicio de sesión y inicio de Windows y se apaga según sea necesario al desarrollar y depurar En realidad, no utiliza ni depende de los grupos de aplicaciones o la infraestructura de Full Fat IIS. La intención de IIS Express era dar a los desarrolladores el mismo comportamiento, sabor y configuración que el real porque el servidor web de juguetes de VS estaba muy limitado ...
Kev