ASP.NET permite a los administradores hospedar aplicaciones en modos de confianza parcial, por ejemplo confianza media. También permite la configuración de niveles personalizados de confianza parcial a través de archivos de directivas personalizados. Para obtener más información acerca de cómo utilizar la confianza media en ASP.NET 2.0, vaya a la siguiente página web de Microsoft Developer Network (MSDN):
Cómo: Utilizar la confianza media en ASP.NET 2.0Anteriormente hemos descrito la confianza parcial de ASP.NET como un mecanismo para la imposición del aislamiento de aplicaciones en un entorno de hospedaje compartido en el que varias aplicaciones que tienen diferentes niveles de confianza están hospedadas en el mismo servidor web. Vamos a actualizar nuestra orientación acerca de ello para reflejar que la ejecución de una aplicación de marco de página de ASP.NET en modo de confianza parcial no garantiza el aislamiento completo de otras aplicaciones que se ejecutan en el mismo proceso o en el mismo equipo. El procedimiento recomendado para estar seguro del aislamiento entre las aplicaciones de marco de página de ASP.NET en el mismo servidor web es configurar dichas aplicaciones para que se ejecuten en distintos procesos con privilegios bajos. En la sección siguiente se proporcionan detalles acerca de cómo configurar las aplicaciones para el aislamiento. Actualizaremos nuestra otra documentación para reflejar el cambio en la directiva que se describe en este artículo.
INTRODUCCIÓN
Los administradores de servidor deben aplicar las directrices que se describen en este artículo para estar seguros de que en entornos de hospedaje compartido las aplicaciones están aisladas. Estas directrices se aplican al hospedaje de ASP.NET en Windows Server 2003 SP2 y versiones posteriores. Las directrices incluyen Internet Information Services (IIS) de la versión 6.0 a la 7.5. AppCmd.exe incluida en IIS 7 y 7.5 y los scripts de administración de IIS incluidos en IIS 6.0.
Muchas de las tareas que se describen aquí se pueden automatizar mediante la herramienta de línea de comandos de IISCómo colocar las aplicaciones en sitios de IIS distintos
En un entorno de hospedaje compartido, las aplicaciones se deben colocar en sitios de IIS distintos. La configuración se aísla mejor entre aplicaciones cuando estas se hospedan en sitios distintos. Además, el host de CLR de .NET Framework estará en un lugar aparte. De esta manera, se proporciona aislamiento adicional en ese nivel.
Para colocar cada aplicación en un sitio distinto, siga estos pasos:Internet Information Services 6.0 (Windows Server 2003 SP2)
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel izquierdo, expanda el nodo del servidor actual.
-
Haga clic con el botón secundario en el nodo Sitios Web, seleccione Nuevo y, a continuación, haga clic en Sitio Web.
-
Haga clic en Siguiente.
-
Escriba un nombre único para el nuevo sitio web y, a continuación, haga clic en Siguiente.
-
Configure los enlaces de sitios para el entorno de hospedaje.
-
Escriba la ruta de acceso física de la carpeta en la que se almacenan los archivos de aplicación.
-
Haga clic para activar la casilla Ejecutar scripts (por ejemplo, ASP) y, después, haga clic en Siguiente.
-
Haga clic en Finalizar. El nuevo sitio aparece en el nodo Sitios Web.
Internet Information Services 7 (Windows Vista SP2 y Windows Server 2008 SP1) e Internet Information Services 7.5 (Windows 7 y Windows Server 2008 R2)
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel Conexiones, expanda el nodo del servidor actual.
-
Seleccione el nodo Sitios y, a continuación, en el panel Acciones, haga clic en Agregar sitio web.
-
En el cuadro de diálogo Agregar sitio web, escriba un nombre único para el nuevo sitio web y, a continuación, especifique la ruta de acceso física de la carpeta en la que están almacenados los archivos de aplicación. De forma predeterminada, se crea un nuevo grupo de aplicaciones con el mismo nombre que el sitio y el sitio se configura para usar este grupo de aplicaciones. (Esta es la configuración recomendada).
-
Configure los enlaces de sitios para el entorno de hospedaje.
-
Haga clic para desactivar la casilla Iniciar sitio web inmediatamente a fin de asegurarse de que el sitio no esté disponible hasta haber finalizado las directrices sobre aislamiento aquí descritas.
-
Haga clic en Aceptar. El sitio configurado aparece en el nodo Sitios en el panel Conexiones.
Cómo colocar los sitios en distintos grupos de aplicaciones
En un entorno de hospedaje compartido, las aplicaciones se deben colocar en grupos de aplicaciones distintos. De esta forma, se pueden aislar en procesos distintos del sistema operativo con identidades únicas. Esto proporciona un nivel de aislamiento de un sitio a otro. (En la siguiente sección se describe cómo configurar las identidades del grupo de aplicaciones para el aislamiento).
Internet Information Services 6.0 (Windows Server 2003 SP2)
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel izquierdo, expanda el nodo del servidor actual.
-
Haga clic con el botón secundario en Grupos de aplicaciones, haga clic en Nuevo y, a continuación, haga clic en Grupo de aplicaciones.
-
Escriba un nombre único para el nuevo grupo de aplicaciones y, a continuación, haga clic en Aceptar.
-
Expanda el nodo Sitios Web.
-
Haga clic con el botón secundario en el sitio web de destino y, a continuación, haga clic en Propiedades.
-
Haga clic en la pestaña Directorio particular.
-
En el campo Grupo de aplicaciones en la parte inferior del cuadro de diálogo, seleccione el nuevo grupo de aplicaciones.
-
Haga clic en Aceptar.
Internet Information Services 7 (Windows Vista SP2 y Windows Server 2008 SP1) e Internet Information Services 7.5 (Windows 7 y Windows Server 2008 R2)
Después de seguir los pasos de la sección "Cómo colocar las aplicaciones en sitios de IIS distintos", el nuevo sitio se coloca automáticamente en un grupo de aplicaciones nuevo. Sin embargo, si tiene que configurar un sitio existente para usar un nuevo grupo de aplicaciones, siga estos pasos:
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel Conexiones, expanda el nodo del servidor actual.
-
Seleccione el nodo Grupos de aplicaciones.
-
En el panel Acciones, haga clic en el vínculo Agregar grupo de aplicaciones.
-
Escriba un nombre único para el nuevo grupo de aplicaciones y, a continuación, seleccione una versión de .NET Framework de destino y un modo de canalización.
-
Haga clic en Aceptar. El nuevo grupo de aplicaciones se muestra en la lista.
-
En el panel Conexiones, expanda el nodo Sitios.
-
Seleccione el sitio que desea mover al grupo de aplicaciones que creó anteriormente en este procedimiento.
-
En el panel Acciones, haga clic en el vínculo Configuración básica.
-
En el cuadro de diálogo Editar sitio, haga clic en Seleccionar.
-
En la lista Grupo de aplicaciones, seleccione el grupo de aplicaciones que creó anteriormente.
-
Haga clic en Aceptar.
En el cuadro de diálogo Editar sitio, haga clic en Aceptar.
Cómo configurar grupos de aplicaciones para el aislamiento (identidad de proceso)
Los grupos de aplicaciones hospedan aplicaciones y sitios en procesos de Windows. La identidad bajo la que se ejecuta el proceso es configurable. En un entorno de hospedaje compartido, debe haber una identidad diferente para cada aplicación. De esta forma, se tiene la seguridad de que cada aplicación se ejecuta en el contexto de una cuenta única. Este procedimiento permite el aislamiento correcto mediante las listas de control de acceso discrecional (DACL) del sistema de archivos y las características integradas de aislamiento de procesos del sistema operativo subyacente. Para crear una cuenta de usuario y, a continuación, asignar un grupo de aplicaciones para utilizar esa cuenta, siga estos pasos.
Internet Information Services 6.0 (Windows Server 2003 SP2)
Cree una cuenta de usuario local para usar como identidad del grupo de aplicaciones
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel izquierdo, expanda Usuarios y grupos locales.
-
Haga clic con el botón secundario en el nodo Usuarios y, a continuación, haga clic en Usuario nuevo.
-
Escriba un nombre único y una contraseña segura para la nueva cuenta de usuario.
-
Haga clic para desactivar la casilla El usuario debe cambiar la contraseña en el siguiente inicio de sesión.
-
Haga clic para activar la casilla El usuario no puede cambiar la contraseña.
-
Haga clic en Crear y, después, haga clic en Cerrar.
-
En el panel izquierdo, seleccione el nodo Usuarios. La nueva cuenta aparece en la lista.
Configurar el grupo de aplicaciones para utilizar la nueva cuenta de usuario local
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel izquierdo, expanda el nodo del servidor actual.
-
Expanda el nodo Grupos de aplicaciones.
-
Haga clic con el botón secundario en el grupo de aplicaciones y, a continuación, haga clic en Propiedades.
-
Haga clic en la pestaña Identidad.
-
Seleccione el botón de opción Configurable.
-
Escriba el nombre de usuario y la contraseña de la nueva cuenta.
-
Haga clic en Aceptar.
-
Escriba la misma contraseña en el cuadro Confirmar contraseña y haga clic en Aceptar.
Internet Information Services 7 y 7.5 (Windows Vista SP2, Windows Server 2008 SP1, Windows 7 y Windows Server 2008 R2)
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel Conexiones, expanda el nodo del servidor actual.
-
Seleccione el nodo Grupos de aplicaciones.
-
Seleccione el grupo de aplicaciones de destino.
-
En el panel Acciones, haga clic en el vínculo Configuración avanzada.
-
En la sección Modelo de proceso, establezca la propiedad Identidad en ApplicationPoolIdentity. Esta configuración crea automáticamente una identidad única para este grupo de aplicaciones. En las siguientes secciones, puede utilizar esta identidad única para definir listas de control de acceso discrecional (DACL) en las ubicaciones de archivo a las que necesita tener acceso la aplicación.
-
Haga clic en Aceptar.
Cómo configurar listas DACL en ubicaciones de contenido de la aplicación
La lista de control de acceso discrecional (DACL) es una lista de permisos que están asociados con un objeto y que se pueden usar para controlar el acceso a este. El uso de listas DACL para restringir el acceso al contenido de la aplicación ayuda a reforzar el aislamiento entre los sitios que están hospedados en el mismo servidor web. Para obtener más información acerca de las listas ACL y las identidades de IIS, consulte Proteger el contenido de IIS a través de listas ACL del sistema de archivos
Todas las versiones de IIS
-
Abra la carpeta raíz del contenido del sitio en un símbolo del sistema o en el Explorador de Windows.
-
Utilice uno de los métodos siguientes para quitar las entradas de acceso a esta ubicación que no sean de administrador. (Esto incluye el grupo Usuarios).
-
En el Explorador de Windows, haga clic con el botón secundario en la carpeta, seleccione Propiedades, haga clic en la pestaña Seguridad y, después, cambie la lista de control de acceso.
-
En un símbolo del sistema, use la utilidad icacls.exe (o cacls.exe o en versiones antiguas del sistema operativo Windows) para cambiar la lista de control de acceso.
-
-
Agregue una nueva entrada para la identidad del proceso que ha seleccionado para el sitio.
-
Proporcione a la nueva identidad acceso de lectura y ejecución para la carpeta.
Si hay algunas carpetas que requieran permisos de escritura por la aplicación (por ejemplo, una carpeta "Cargas"), siga estos pasos:
Internet Information Services 6.0 (Windows Server 2003 SP2)
-
En el Explorador de Windows, haga clic con el botón secundario en la carpeta, seleccione Propiedades, haga clic en la pestaña Seguridad y agregue el acceso Modificar para la identidad del proceso.
-
En el caso de carpetas que contengan contenido estático (imágenes, archivos de texto, etc.), siga estos pasos:
-
Abra el Administrador de Internet Information Services (IIS):
-
En el panel izquierdo, haga clic con el botón secundario en el nombre de la carpeta apropiada y, a continuación, haga clic en Propiedades.
-
Haga clic en la pestaña Directorio.
-
En la lista Permisos de ejecución, seleccione Ninguno.
-
Internet Information Services 7 y 7.5 (Windows Vista SP2, Windows Server 2008 SP1, Windows 7 y Windows Server 2008 R2)
-
En el Explorador de Windows, haga clic con el botón secundario en la carpeta, seleccione Propiedades, haga clic en la pestaña Seguridad y agregue el acceso Modificar para la identidad del proceso.
-
Si las carpetas contienen contenido estático (imágenes, archivos de texto, etc.), agregue una entrada de archivo "web.config" para la ubicación que deniegue el permiso de scripts en la configuración de accessPolicy: <system.webServer> <handlers accessPolicy="Read,Write" /> </system.webServer>
Cómo configurar una ubicación para la carpeta de archivos temporales de ASP.NET y cómo establecer listas DACL por sitio
ASP.NET requiere una ubicación en el servidor para almacenar datos temporales, por ejemplo, archivos compilados. Normalmente suele ser la carpeta de archivos temporales de ASP.NET. De forma predeterminada, esta carpeta se encuentra bajo la carpeta donde está instalado .NET Framework. La asignación de una ubicación temporal diferente para cada sitio y la protección adecuada de la carpeta de forma individual ayudan a reforzar el aislamiento entre sitios hospedados en el mismo servidor web. Para obtener más información acerca de la carpeta de archivos temporales de ASP.NET, consulte Descripción de la compilación dinámica de ASP.NET.
Cómo configurar una ubicación diferente para la carpeta de archivos temporales de ASP.NET para cada sitio
-
Cree una nueva carpeta para cada sitio para almacenar los archivos temporales de ASP.NET del sitio correspondiente. Es mejor utilizar una unidad que no sea del sistema para almacenar los archivos temporales.
-
En el archivo raíz web.config o applicationHost.config del servidor, incluya un valor que apunte a la ubicación de la nueva carpeta para ese sitio en particular mediante un elemento <location>, como este: <configuration> <location path="path"> <system.web> <compilation tempDirectory="temp-files-path" /> </system.web> </location> <!-- and so on --> </configuration>
Cómo configurar listas DACL adecuadas en la ubicación de la carpeta de archivos temporales de ASP.NET
-
Utilice un símbolo del sistema o el Explorador de Windows para quitar los permisos de acceso a esta ubicación que no sean de administrador. (Esto incluye el grupo Usuarios).
-
Agregue una nueva entrada para la identidad del proceso que seleccionó anteriormente para este sitio y, a continuación, asigne a esta identidad el acceso Modificar para la carpeta.
Cómo quitar datos de configuración de seguridad de los archivos de configuración raíz
Los archivos web.config de las aplicaciones están ubicados en la carpeta de contenido de la aplicación a la que se atiende. Aunque ASP.NET no va a atender el archivo web.config de la aplicación, en la práctica, es mejor colocar la información de seguridad, como la configuración de claves del equipo y las cadenas de conexión, en un archivo de configuración que esté fuera de la ubicación de la aplicación. Esto añade un nivel de protección frente a la revelación de información.
Internet Information Services 6.0 (Windows Server 2003 SP2)
El almacenamiento de la información de configuración de seguridad en el archivo raíz web.config no es una buena opción para aislar los datos entre diferentes sitios dado que todos los sitios tienen acceso de lectura a este archivo. Por lo tanto, en IIS 6 la configuración de seguridad se debe almacenar en el archivo web.config de la aplicación. De esta forma, la configuración de seguridad de un sitio queda aislada de la de otro. En ese caso, la aplicación estará dependiendo de las defensas de ASP.NET para impedir que se atienda al archivo web.config y para asegurarse de que la información confidencial no sea revelada.
Internet Information Services 7 y 7.5 (Windows Vista SP2, Windows Server 2008 SP1, Windows 7 y Windows Server 2008 R2)
En IIS 7 y versiones posteriores, mueva la configuración de seguridad que se encuentra en el archivo applicationHost.config de IIS en un elemento <location> que abarca la configuración, al sitio al que se aplica. Para obtener más información, consulte Cómo utilizar el bloqueo en la configuración de IIS 7.0. Microsoft agradece a las siguientes personas su ayuda para proteger a los clientes: