Compartir a través de


Configuración del paso 4: configurar la seguridad de la aplicación

de Keith Newman y Robert McMurray

En esta fase de la creación del sitio web de ASP.NET configurará las opciones de seguridad que están disponibles en IIS. En las secciones siguientes se describe la configuración de seguridad común para las aplicaciones de ASP.NET:

4.1. Aislar las aplicaciones web

Implemente las recomendaciones siguientes para aislar sitios web y aplicaciones web en el servidor.

  • Utilice un grupo de aplicaciones por sitio web o aplicación web.
  • Limite el acceso a los archivos y las carpetas del sitio a la identidad del grupo de aplicaciones.
  • Configure una carpeta temporal independiente de ASP.NET por cada sitio y permita el acceso únicamente a la identidad del grupo de aplicaciones.
  • Asegúrese de establecer una ACL (lista de control de acceso) en cada raíz del sitio para permitir el acceso solo a la identidad del grupo de aplicaciones.

Si tiene más de una aplicación por grupo de aplicaciones, considere la posibilidad de crear suficiente grupos de aplicaciones y mover algunas de las aplicaciones a los grupos nuevos.

Para crear un grupo de aplicaciones

  1. Abra el Administrador de IIS.
  2. En el panel Conexiones, haga clic en Grupos de aplicaciones.
  3. En el panel Acciones, haga clic en Agregar grupo de aplicaciones.
  4. En el cuadro Nombre, escriba un nombre exclusivo para el grupo de aplicaciones.
  5. Seleccione la Versión de .NET Framework y el Modo de canalización administrada.
  6. Haga clic en OK.

Para mover una aplicación a otro grupo de aplicaciones

  1. Abra el Administrador de IIS.
  2. En la página Conexiones, seleccione la aplicación web o sitio web que desee mover.
  3. En el panel Acciones, haga clic en Configuración básica.
  4. En el cuadro de diálogo Editar sitio, haga clic en Seleccionar para abrir el cuadro de diálogo Seleccionar grupo de aplicaciones y, a continuación, seleccione el grupo de aplicaciones en el menú Grupo de aplicaciones.
  5. Haga clic en Aceptar para cerrar el cuadro de diálogo Seleccionar grupo de aplicaciones y haga clic en Aceptar para cerrar el menú Editar sitio.

Para agregar una identidad del grupo de aplicaciones a una carpeta o archivo ACL

  1. Abra el Explorador de Windows y navegue hasta la carpeta o archivo.
  2. Haga clic con el botón secundario en la carpeta o archivo y, a continuación, haga clic en Propiedades.
  3. Haga clic en la pestaña Seguridad y, a continuación, en Editar.
  4. Haga clic en Agregar, haga clic en Ubicaciones y seleccione el servidor como la ubicación de búsqueda.
  5. En el cuadro de diálogo Escribir los nombres de objeto para seleccionar, escriba IIS APPPOOL\applicationPoolName, donde NombreGrupoAplicaciones es la identidad del grupo de aplicaciones.
  6. Haga clic en Aceptar, haga clic en Aceptar y haga clic en Aceptar para volver a cerrar los cuadros de diálogo.

4.2. Niveles de confianza de .NET

En esta sección se describe cómo establecer el nivel de confianza de la aplicación mediante la interfaz de usuario del Administrador de IIS o la línea de comandos.

Para establecer un nivel de confianza mediante la interfaz de usuario

  1. Abra Administrador de IIS y vaya al nivel que desea administrar.
  2. En Vista de características, haga doble clic en Niveles de confianza de .NET.
  3. En la página Niveles de confianza de .NET, seleccione un nivel de confianza de la lista desplegable Nivel de confianza y, a continuación, haga clic en Aplicar en el panel Acciones.

Para establecer un nivel de confianza mediante la línea de comandos

Para establecer un nivel de confianza, use la siguiente sintaxis:

appcmd set config /commit:WEBROOT /section:trust /level:Full|High|Medium|Low|Minimal

El atributo de nivel usa uno de los cinco valores que corresponden a los archivos de directiva CAS preconfigurados. Por ejemplo, para establecer un nivel de confianza Full, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:trust /level:Full

Nota:

Al usar Appcmd.exe para configurar el elemento de confianza en el nivel global de IIS 8, especifique /commit:WEBROOT en el comando para que se efectúen los cambios de configuración en el archivo raíz Web.config, y no en ApplicationHost.config.

4.3. Autenticación de .NET

En Planificar un sitio web de ASP.NET en IIS ha tomado decisiones de diseño acerca del modo de autenticación adecuado para la aplicación.

Autenticación de formularios de ASP.NET

En esta sección se describe cómo configurar la autenticación mediante formularios de ASP.NET mediante la interfaz de usuario del Administrador de IIS o la línea de comandos.

Para configurar la autenticación mediante formularios con la interfaz de usuario

  1. Abra Administrador de IIS y vaya al nivel que desea administrar.
  2. En Vista de características, haga doble clic en Autenticación.
  3. En la página Autenticación, seleccione Autenticación de formularios.
  4. En el panel Acciones, haga clic en Habilitar para utilizar la autenticación de formularios con la configuración predeterminada.
  5. En el panel Acciones, haga clic en Editar.
  6. En el cuadro de diálogo Modificar configuración de autenticación mediante formularios, en el cuadro de texto Dirección URL de inicio de sesión, escriba el nombre de la página en la que inician sesión los clientes.
  7. En el cuadro de texto Tiempo de espera de cookie de autenticación (en minutos), escriba la cantidad de minutos que desea usar para el valor de tiempo de espera.
  8. En la lista Modo, seleccione el modo de cookie que desea usar.
  9. En el cuadro de texto Nombre, escriba el nombre de la cookie.
  10. En la lista Modo de protección, seleccione el modo de protección que desea usar.
  11. Seleccione la casilla Requiere SSL.
  12. Seleccione la casilla Ampliar expiración de cookie en cada solicitud y, a continuación, haga clic en Aceptar.

Para configurar la autenticación mediante formularios con la línea de comandos

Para habilitar la autenticación mediante formularios, use la siguiente sintaxis:

appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:None|Windows|Passport|Forms

De forma predeterminada, IIS 8 establece el atributo mode en Windows, que deshabilita la autenticación mediante formularios. Si establece el atributo en Forms habilitará la autenticación mediante formularios. Por ejemplo, para habilitar la autenticación mediante formularios, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:Forms

Nota:

Al usar Appcmd.exe para configurar el elemento de autenticación en el nivel global de IIS 8, especifique /commit:WEBROOT en el comando para que se efectúen los cambios de configuración en el archivo raíz Web.config, y no en ApplicationHost.config.

Use la siguiente sintaxis para especificar la dirección URL de inicio de sesión para la autenticación mediante formularios:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:string

La variable forms.loginURL:string es el nombre de la página en la que inician sesión los clientes. El valor predeterminado es Login.aspx. Por ejemplo, para especificar la dirección URL de inicio de sesión para la autenticación mediante formularios, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:login.aspx

Nota:

Al usar Appcmd.exe para configurar el elemento de autenticación en el nivel global de IIS 8, especifique /commit:WEBROOT en el comando para que se efectúen los cambios de configuración en el archivo raíz Web.config, y no en ApplicationHost.config.

Utilice la siguiente sintaxis para especificar el tiempo de espera de autenticación para la autenticación mediante formularios:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:TimeSpan

La variable forms.timeout:TimeSpan es el tiempo en minutos en que caduca la cookie utilizada para la autenticación. El valor predeterminado es de 30 minutos. Por ejemplo, para especificar el tiempo de espera de autenticación para la autenticación mediante formularios, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:30

Nota:

Al usar Appcmd.exe para configurar el elemento de autenticación en el nivel global de IIS 8, debe especificar /commit:WEBROOT en el comando para que se efectúen los cambios de configuración en el archivo raíz Web.config, y no en ApplicationHost.config.

Utilice la siguiente sintaxis para configurar el nombre de la cookie para la autenticación mediante formularios:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:string

La variable forms.name:string es el nombre de la cookie usada para la autenticación mediante formularios. El valor predeterminado es .ASPXAUTH. Por ejemplo, para configurar el nombre de la cookie para la autenticación mediante formularios, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:.ASPXUTH

Utilice la siguiente sintaxis para configurar el modo de cookie para la autenticación mediante formularios:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseUri|UseCookies|AutoDetect|UseDeviceProfile

El valor predeterminado de forms.cookieless es UseDeviceProfile. Por ejemplo, para configurar el modo de cookie para la autenticación mediante formularios para usar la configuración Usar perfil del dispositivo, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseDeviceProfile

Utilice la siguiente sintaxis para configurar el modo de protección de cookie para la autenticación mediante formularios:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All|None|Encryption|Validation

El valor predeterminado de forms.protection es All. Por ejemplo, para configurar el modo de protección de cookie para la autenticación mediante formularios para usar la configuración Cifrado y validación, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All

Para requerir SSL para una cookie de autenticación, use la siguiente sintaxis:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true|false

El valor predeterminado de forms.requireSSL es false. Si establece este atributo en true requerirá SSL. Por ejemplo, para requerir SSL para una cookie de autenticación, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true

Para almacenar en caché el contenido solicitado con frecuencia, use la siguiente sintaxis:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true|false

El valor predeterminado de forms.slidingExpiration es true. Por ejemplo, para almacenar en caché el contenido solicitado con frecuencia, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true

Autenticación de suplantación de ASP.NET

Para configurar la autenticación de suplantación con la interfaz de usuario

  1. Abra Administrador de IIS y vaya al nivel que desea administrar.
  2. En Vista de características, haga doble clic en Autenticación.
  3. En la página Autenticación, seleccione Suplantación de ASP.NET.
  4. En el panel Acciones, haga clic en Habilitar para utilizar la autenticación de suplantación de ASP.NET con la configuración predeterminada.
  5. Opcionalmente, en el panel Acciones, haga clic en Editar para establecer la entidad de seguridad.
  6. En el cuadro de diálogo Editar configuración de suplantación de ASP.NET, seleccione Usuario específico o Usuario autenticado. Decida lo que decida, IIS usa esta identidad para el contexto de seguridad de la aplicación de ASP.NET. De forma predeterminada se establece IIS 8 para suplantar al usuario autenticado.
  7. Haga clic en Aceptar para finalizar o continúe con los siguientes pasos opcionales para cambiar la identidad de suplantación.
  8. Opcionalmente, haga clic en Establecer para cambiar la identidad Usuario específico.
  9. En el cuadro de diálogo Establecer credenciales, escriba el nombre de una cuenta de usuario existente en Nombre de usuario, la contraseña asociada a dicha cuenta de usuario en Contraseña y el mismo valor en Confirmar contraseña para una nueva cuenta que debe usar IIS para acceder de forma anónima.
  10. Haga clic en Aceptar para cerrar el cuadro de diálogo Establecer credenciales.
  11. Haga clic en Aceptar para cerrar el cuadro de diálogo Editar la configuración de suplantación de ASP.NET.

Para configurar la autenticación de suplantación con la línea de comandos

Para habilitar o deshabilitar la suplantación de ASP.NET, use la siguiente sintaxis:

appcmd set config /commit:WEBROOT /section:identity /impersonate:true|false

De forma predeterminada, IIS establece el atributo impersonate en false, lo que deshabilita la autenticación de suplantación de ASP.NET. Si el atributo se establece en true, habilitará la autenticación de suplantación de ASP.NET. Por ejemplo, para habilitar la autenticación de suplantación de ASP.NET, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:identity /impersonate:true

Opcionalmente, puede establecer la cuenta para que IIS lleve a cabo la suplantación; para hacerlo, utilice la siguiente sintaxis:

appcmd set config /commit:WEBROOT /section:identity /userName:string /password:string

La variable userName:string es la cuenta que utiliza IIS para suplantar, y la variable password:string es la contraseña. Por ejemplo, para usar una cuenta denominada Moe para que IIS lleve a cabo la suplantación, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /commit:WEBROOT /section:identity /userName: Moe /password:pass@word1

Nota:

Al usar Appcmd.exe para configurar el elemento de identidad en el nivel global de IIS 8, especifique /commit:WEBROOT en el comando para que se efectúen los cambios de configuración en el archivo raíz Web.config, y no en ApplicationHost.config.

4.4. Configuración de claves del equipo

En esta sección se describe cómo generar claves de equipo para la aplicación de ASP.NET mediante la interfaz de usuario del Administrador de IIS.

Para generar claves de equipo mediante la interfaz de usuario

  1. Abra Administrador de IIS y vaya al nivel que desea administrar.
  2. En Vista de características, haga doble clic en Clave de equipo.
  3. En la página Clave de equipo, seleccione un método de validación de la lista Método de validación. El método de validación predeterminado es SHA1.
  4. Seleccione un método de cifrado de la lista Método de cifrado. El método de cifrado predeterminado es Automático.
  5. Opcionalmente, puede configurar las opciones de las claves de descifrado y de validación.
  6. En el panel Acciones, haga clic en Generar claves y, a continuación, haga clic en Aplicar.

4.5. Comunicación TLS/SSL

En esta sección se describe cómo configurar la seguridad TLS/SSL de la aplicación.

Tras obtener un certificado de servidor de una entidad de certificación (CA), siga los procedimientos de las secciones siguientes:

  1. Enlace SSL
  2. Requerir SSL para el sitio
  3. Certificados de cliente

Enlace SSL

En esta sección se describe cómo agregar un enlace SSL al sitio mediante la interfaz de usuario del Administrador de IIS o la línea de comandos.

Para agregar un enlace SSL a un sitio mediante la interfaz de usuario

  1. Abra el Administrador de IIS.
  2. En el panel Conexiones, expanda el nodo Sitios en el árbol y, a continuación, haga clic para seleccionar el sitio para el que desea agregar un enlace.
  3. En el panel Acciones , haga clic en Enlaces.
  4. En el cuadro de diálogo Enlaces de sitios , haga clic en Agregar.
  5. En el cuadro de diálogo Agregar enlace de sitio, en la lista Tipo, seleccione https.
  6. En la lista Dirección IP, seleccione Sin asignar (a menos que exista una dirección IP específica que desee usar).
  7. En el cuadro de diálogo Puerto, escriba el número de puerto (el valor predeterminado es 443).
  8. En el cuadro de diálogo Nombre de host, escriba el nombre del equipo host.
  9. Si desea que se sirvan varios sitios web seguros con la misma dirección IP, seleccione la casilla Requerir Indicación de nombre de servidor.
  10. En la lista Certificado SSL, seleccione el certificado para el sitio web. Si el certificado no aparece en la lista, haga clic en Seleccionar y busque el certificado utilizando el cuadro de diálogo Seleccionar certificado.
  11. Haga clic en OK.

Para agregar un enlace SSL a un sitio mediante la línea de comandos

Para agregar un enlace a un sitio, use la siguiente sintaxis:

appcmd set site /site.name:string /+bindings.[protocol='string', bindingInformation='string']

La variable site.name:string es el nombre del sitio en el que desea agregar un enlace. La variable protocol='string' es el protocolo que desea utilizar, y la variable bindingInformation='string' es la combinación de dirección IP, puerto y encabezado de host.

Por ejemplo, para configurar un sitio denominado contoso para tener un enlace HTTPS para todas las direcciones IP, en el puerto 443, sin encabezados de host, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set site /site.name:contoso /+bindings.[protocol='https', bindingInformation='*:443:']

Requerir SSL para el sitio

En esta sección se describe cómo requerir SSL para el sitio web mediante el uso de la interfaz de usuario del Administrador de IIS o la línea de comandos.

Para requerir SSL mediante la interfaz de usuario

  1. Abra Administrador de IIS y vaya al nivel que desea administrar. Asegúrese de que está en el sitio, en la aplicación o en el nivel de directorio; la configuración SSL no está disponible en el nivel de servidor.

    Nota:

    Si desea configurar SSL en el nivel de archivo, navegue hasta el archivo en Vista Contenido y, a continuación, haga clic en Cambiar a Vista de características del panel Acciones.

  2. En Vista de características, haga doble clic en Configuración SSL.

  3. En la página Configuración SSL, seleccione Requerir SSL.

  4. En el panel Acciones, haga clic en Aplicar.

Para requerir SSL mediante la línea de comandos

Para requerir SSL use la siguiente sintaxis:

appcmd set config "site|URL" /section:access /sslFlags:Ssl /commit:APPHOST

La variable site|URL es el sitio, la aplicación, el directorio virtual o el archivo donde desea que IIS 8 requiera SSL. Por ejemplo, para requerir SSL para el sitio web predeterminado, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config "Default Web Site" /section:access /sslFlags:Ssl /commit:APPHOST

Para requerir SSL para el archivo iisstart.htm en el sitio web predeterminado, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:Ssl /commit:APPHOST

Certificados de cliente

Para especificar los certificados de cliente mediante la interfaz de usuario

  1. Abra Administrador de IIS y vaya al nivel que desea administrar. Asegúrese de que está en el sitio, en la aplicación o en el nivel de directorio; la configuración SSL no está disponible en el nivel de servidor.

    Nota:

    Si desea configurar SSL en el nivel de archivo, navegue hasta el archivo en Vista Contenido y, a continuación, haga clic en Cambiar a Vista de características del panel Acciones.

  2. En Vista de características, haga doble clic en Configuración SSL.

  3. En la página Configuración SSL, seleccione opcionalmente Requerir SSL. No es necesario para SSL Omitir o Aceptar los certificados de cliente.

  4. En la página Configuración SSL, en el área Certificados de cliente, utilice uno de los siguientes procedimientos:

    • Seleccione Omitir si no desea aceptar un certificado de cliente, incluso si un cliente presenta uno.
    • Seleccione Aceptar para aceptar los certificados de cliente.
    • Seleccione Requerir para requerir certificados de cliente. Para usar Requerir certificados de cliente debe habilitar Requerir SSL.
  5. En el panel Acciones, haga clic en Aplicar.

Para especificar los certificados de cliente mediante la línea de comandos

Para especificar si desea usar certificados de cliente, use la siguiente sintaxis:

appcmd set config "site|URL" /section:access /sslFlags:Ssl|SslNegotiateCert|SslRequireCert /commit:APPHOST

La variable site|URL es el sitio, la aplicación, el directorio virtual o el archivo donde desea que IIS habilite los certificados de cliente. Por ejemplo, para aceptar los certificados de cliente para el sitio web predeterminado, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config "Default Web Site" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST

Para aceptar los certificados de cliente para el archivo iisstart.htm en el sitio web predeterminado, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST

Puede especificar uno o varios de los valores del atributo sslFlags. Si desea especificar más de un valor, separe cada uno con una coma (,). Por ejemplo, para especificar un requisito para los certificados de cliente y de SSL en el sitio web predeterminado, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config "Default Web Site" /section:access /sslFlags:Ssl,SslRequireCert /commit:APPHOST