Cómo: Crear una cuenta personalizada para ejecutar ASP.NET

Publicado: 26 de junio de 2006

Consulte la Página de entrada como punto de partida y para obtener una descripción completa del documento Crear aplicaciones ASP.NET seguras.

Resumen: Las aplicaciones Web ASP.NET suelen ejecutarse con la cuenta integrada ASPNET. En algunas ocasiones, puede que prefiera utilizar una cuenta personalizada. En este artículo se muestra cómo crear una cuenta local con privilegios mínimos para ejecutar aplicaciones Web ASP.NET.

En este artículo se describe cómo crear una cuenta local con privilegios mínimos para ejecutar el proceso de trabajo de ASP.NET (aspnet_wp.exe) o para dar servicio en directorios virtuales a usuarios con identidad suplantada. Aunque los procedimientos de este artículo sirven para crear una cuenta local, los mismos conceptos se aplican a una cuenta de dominio.

En esta página

Identidad del proceso de trabajo de ASP.NET Identidad del proceso de trabajo de ASP.NET
Suplantar identidades fijas Suplantar identidades fijas
Notas Notas
Resumen Resumen
1. Crear una nueva cuenta local 1. Crear una nueva cuenta local
2. Asignar privilegios mínimos 2. Asignar privilegios mínimos
3. Asignar permisos NTFS 3. Asignar permisos NTFS
4. Configurar ASP.NET para que se ejecute con la nueva cuenta 4. Configurar ASP.NET para que se ejecute con la nueva cuenta

Identidad del proceso de trabajo de ASP.NET

La cuenta predeterminada para ejecutar ASP.NET se crea en el momento de la instalación y es una cuenta local con privilegios mínimos que está especificada en el archivo machine.config de la siguiente manera:

<processModel enable="true" userName="machine" password="AutoGenerate"    />

La cuenta se identifica como ASPNET en Usuarios locales y grupos, y dispone de una contraseña segura protegida en la Autoridad del sistema local (LSA, Local System Authority).

Cuando es necesario tener acceso a los recursos de la red, por ejemplo a una base de datos, mediante la identidad del proceso ASP.NET, puede llevar a cabo una de las siguientes acciones:

Utilizar una cuenta de dominio.

Utilizar cuentas locales "reflejadas" (cuentas con nombres de usuario y contraseñas coincidentes en dos equipos). Debe utilizar este método si los equipos se encuentran en dominios independientes entre los que no hay una relación de confianza o si los equipos están separados por un servidor de seguridad y no es posible abrir los puertos necesarios para la autenticación NTLM o Kerberos.

El método más sencillo consiste en cambiar en el servidor Web la contraseña de la cuenta ASPNET por un valor conocido y, después, en el equipo de destino crear una cuenta llamada ASPNET con la misma contraseña. En el servidor Web, primero debe cambiar la contraseña de la cuenta ASPNET en Usuarios locales y grupos y, a continuación, reemplazar "AutoGenerate" por la contraseña nueva en machine.config.

<processModel enable="true" userName="machine"  
   password="YourStrongPassword" />

Puede utilizar los pasos que se presentan en este artículo para crear una cuenta local con privilegios mínimos.

Suplantar identidades fijas

Puede establecer identidades fijas para directorios virtuales específicos mediante la siguiente configuración en el archivo web.config.

<identity impersonate="true" userName="YourAccount"     
   password="YourStrongPassword" />

Este método suele utilizarse cuando se dispone de varios sitios Web en el mismo servidor Web que deben ejecutarse bajo identidades diferentes; por ejemplo, en los casos de alojamiento de aplicaciones.

En este artículo se describe cómo crear una cuenta local con privilegios mínimos. Si lo que más le preocupa es la administración, puede utilizar una cuenta de dominio restringida con privilegios mínimos que tenga una contraseña segura.

Notas

Al considerar la cuenta que se utilizará para ejecutar ASP.NET, recuerde lo siguiente:

De forma predeterminada, ASP.NET no realiza suplantaciones. Como consecuencia, la aplicación Web utiliza la identidad del proceso ASP.NET para tener acceso a los recursos. En este caso, los recursos de Windows deben tener una lista de control de acceso (ACL) que conceda el acceso a la cuenta del proceso ASP.NET.

Si habilita la suplantación, la aplicación tiene acceso a los recursos mediante el contexto de seguridad del llamador original o la cuenta de usuario de Internet anónima (de forma predeterminada, IUSR_MACHINE) si IIS está configurado para la autenticación anónima. En este caso, los recursos deben tener listas de control de acceso en la identidad del llamador original (o IUSR_MACHINE).

Respete siempre el principio de privilegios mínimos al crear una cuenta personalizada: asigne solamente el conjunto mínimo de privilegios y permisos necesarios.Evite ejecutar ASP.NET con la cuenta SISTEMA.

Evite conceder a la cuenta el privilegio "Actuar como parte del sistema operativo".

Resumen

En este artículo se incluyen los siguientes procedimientos:

  1. Crear una nueva cuenta local

  2. Asignar privilegios mínimos

  3. Asignar permisos NTFS

  4. Configurar ASP.NET para que se ejecute con la nueva cuenta

1. Crear una nueva cuenta local

En este procedimiento se crea una nueva cuenta local. De forma predeterminada, se agregará al grupo local Usuarios

Para crear una nueva cuenta local

  1. Cree una cuenta local (por ejemplo, "CustomASPNET").
    Asegúrese de que utiliza una contraseña segura para la cuenta. Las contraseñas seguras deben tener siete caracteres como mínimo y utilizar una combinación de mayúsculas y minúsculas, números y otros caracteres, como *, ?, o $.

  2. Desactive la opción El usuario debe cambiar la contraseña en el siguiente inicio de sesión.

  3. Active la opción La contraseña nunca caduca.

2. Asignar privilegios mínimos

En este procedimiento se asigna el conjunto mínimo de privilegios necesarios para ejecutar ASP.NET.

Para asignar privilegios mínimos

  1. En el grupo de programas Herramientas administrativas, inicie la herramienta Directiva de seguridad local.

  2. Expanda Directivas locales y, a continuación, seleccione Asignación de derechos de usuario. En el panel derecho aparecerá una lista de privilegios.

  3. Asigne a la nueva cuenta los privilegios siguientes:
    Tener acceso a este equipo desde la red
    Denegar el inicio de sesión localmente
    Iniciar sesión como proceso por lotes
    Iniciar sesión como servicio
    Nota: para asignar un privilegio a una cuenta, haga doble clic en el privilegio y, después, haga clic en Agregar para seleccionar la cuenta correspondiente.

  4. Cierre la herramienta.

3. Asignar permisos NTFS

En este procedimiento se conceden a la cuenta de ASP.NET personalizada los permisos NTFS requeridos en el sistema de archivos local.

Nota

Los pasos de este procedimiento se aplican al sistema de archivos del servidor Web (no de un equipo remoto, en el que se puede duplicar la cuenta con fines de autenticación de red).

Para asignar permisos NTFS

  1. Inicie el Explorador de Windows y asigne los permisos apropiados a las carpetas especificadas en la tabla 1.

La cuenta de suplantación fija que se menciona en la tabla 1 se refiere a la cuenta que se puede configurar opcionalmente con el elemento <identity> en web.config como se muestra a continuación.

<identity impersonate="true" userName="YourImpersonatedIdentity" 
   password="YourStrongPassword" />

Tabla 1: Permisos NTFS requeridos

Carpeta

Permiso requerido

Cuenta

Comentarios

C:\WINNT\Microsoft.NET\
Framework\<versión>\
Temporary ASP.NET Files

Control total

Cuentas de proceso y de suplantación fija

Ésta es la ubicación de compilación dinámica de ASP.NET. Dentro de esta carpeta se genera código de aplicación en un directorio diferente para cada aplicación.
El atributo tempdir del elemento <compilation> se puede utilizar para cambiar la ubicación predeterminada.

C:\WINNT\temp

Leer/Escribir/Eliminar

Proceso

Ubicación que utilizan los servicios Web para generar servidores proxy de serialización.
Observe que el permiso Eliminar se configura mediante el botón Avanzadas de la página Seguridad del cuadro de diálogo de propiedades de la carpeta del Explorador de Windows.

Carpeta de aplicación

Leer

Proceso

Ubicación de los archivos de la aplicación Web (el directorio raíz virtual de la aplicación: por ejemplo, c:\inetpub\wwwroot\webapp1).De forma predeterminada, el grupo Usuarios tiene los derechos de acceso correctos.

Jerarquía de %installroot%(C:\WINNT\Microsoft.Net\Framework\v1.0.3705)

Leer

Cuentas de proceso y de suplantación fija

Ésta es la caché de ensamblados global. No se puede utilizar directamente el Explorador de Windows para modificar las listas de control de acceso de esta carpeta. En su lugar, utilice una ventana de comandos para ejecutar el siguiente comando:
cacls %windir%\assembly /e /t /p domain\useraccount:RComo alternativa, antes de utilizar el Explorador de Windows, cancele el registro de shfusion.dll con el siguiente comando:regsvr32 –u shfusion.dllDespués de establecer los permisos con el Explorador de Windows, vuelva a registrar shfusion.dll con el siguiente comando:regsvr32 shfusion.dll

Raíz del sitio Web:
C:\inetpub\wwwroot o la ruta de acceso a la que apunte el sitio Web predeterminado

Leer

Proceso

ASP.NET lee los archivos de configuración y supervisa los cambios en los archivos de esta carpeta.

C:\WINNT\system32

Leer

Proceso

Para los archivos DLL del sistema cargados por Framework.

Directorios principales de contexto

Listar carpeta / Leer

Proceso

Para las notificaciones de cambios en archivos y el compilador de C#.

4. Configurar ASP.NET para que se ejecute con la nueva cuenta

En este procedimiento se modifica machine.config para configurar que ASP.NET se ejecute con la nueva cuenta.

Para configurar ASP.NET para que se ejecute con la nueva cuenta

  1. Abra machine.config mediante Visual Studio.NET o el Bloc de notas.

    El archivo machine.config se encuentra en la siguiente carpeta:

    C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG
    
  2. Busque el elemento <processModel> y establezca los atributos de nombre de usuario y contraseña de forma que coincidan con los de la nueva cuenta personalizada.

    Default: <!-- userName="machine" password="AutoGenerate"    --> 
       Becomes: <!-- userName="CustomASPNET" password="YourStrongPassword"    -->
    
  3. Guarde los cambios realizados en machine.config.

Nota

Con la versión actual de .NET Framework, no hay forma de evitar que la contraseña se almacene sin cifrar. Aunque no se recomienda almacenar credenciales sin cifrar, el archivo machine.config se considera más seguro porque se encuentra fuera del espacio Web. Debe proteger el archivo machine.config del acceso innecesario mediante una lista de control de acceso (ACL) correctamente configurada.
En Windows Server 2003, las credenciales se cifrarán para aumentar el nivel de protección.

Mostrar: