Exportar (0) Imprimir
Expandir todo

Capítulo 7 - Seguridad de Internet

Publicado: 26 de junio de 2006

J.D. Meier, Alex Mackman, Michael Dunner y Srinath Vasireddy
Microsoft Corporation
Octubre de 2002

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: Este capítulo describe cómo proteger los escenarios más comunes de las aplicaciones de Internet. Presenta las características de cada escenario y describe los pasos necesarios para establecer la seguridad de los mismos. También se incluyen secciones de análisis con el fin de proporcionar más información.

Las aplicaciones de Internet cuentan con un público muy extenso, ofrecen una gran variedad de usos posibles y exigen una serie de requisitos de seguridad. Pueden presentare en forma de aplicaciones de portal que no requieren autenticación de usuario o aplicaciones Web que ofrecen contenido para usuarios registrados o aplicaciones de comercio electrónico a gran escala que exigen autenticación completa, autorización y validación de tarjetas de crédito e incluso una comunicación segura de la información importante tanto a través de redes públicas como internas.

Los desarrolladores de aplicaciones de Internet se hallan ante el reto de garantizar que sus aplicaciones utilicen los mecanismos de defensa adecuados y tengan un diseño con capacidad de ampliación, de elevado rendimiento y seguro. Éstos son algunos de los retos mencionados:

  • Seleccionar un almacén de credenciales de usuario adecuado como, por ejemplo, una base de datos personalizada o un servicio de directorio Active Directory®.

  • Conseguir que la aplicación funcione a través de los servidores de seguridad.

  • Transferir las credenciales de seguridad a través de los distintos niveles de la aplicación.

  • Llevar a cabo la autorización.

  • Garantizar la integridad y privacidad de los datos conforme se distribuyen a través de redes públicas e internas.

  • Garantizar la seguridad del estado de la aplicación con una base de datos.

  • Asegurar la integridad de los datos de la aplicación.

  • Implementar una solución que pueda escalarse para admitir un mayor número de usuarios.

En este capítulo se describen los dos escenarios más comunes de las aplicaciones de Internet, y que también se utilizan para ilustrar las técnicas recomendadas de autenticación, autorización y comunicación segura:

  • De ASP.NET a SQL Server

  • De ASP.NET a Servicios Empresariales remotos a SQL Server

En esta página

De ASP.NET a SQL Server De ASP.NET a SQL Server
De ASP.NET a Servicios Empresariales remotos a SQL Server De ASP.NET a Servicios Empresariales remotos a SQL Server
Resumen Resumen

De ASP.NET a SQL Server

En este escenario con dos niveles físicos, los usuarios registrados inician una sesión de forma segura en la aplicación basada en Web a través del explorador Web. La aplicación Web basada en ASP.NET establece conexiones seguras con una base de datos de Microsoft® SQL Server™ a fin de administrar básicamente las tareas de recuperación de datos. Un ejemplo de estos escenarios son las aplicaciones de portal, que ofrecen contenidos de noticias a los suscriptores registrados. La ilustración 7.1 es un claro ejemplo.

imagen

Ilustración 7.1
Escenario de Internet de una aplicación Web basada en ASP.NET con conexión a SQL Server

Características

Este escenario tiene las siguientes características:

  • Los usuarios cuentan con distintos tipos de exploradores.

  • Los usuarios anónimos pueden explorar las páginas no restringidas de la aplicación.

  • Los usuarios deben registrarse o iniciar una sesión (a través de un formulario HTML) para ver las páginas restringidas.

  • Las credenciales de usuario se validan con una base de datos de SQL Server.

  • Toda la información suministrada por el usuario (como las credenciales) que se utiliza en las consultas a la base de datos se valida a fin de reducir la amenaza de ataques de inyección SQL.

  • La aplicación Web cliente se ubica en una red perimetral (también conocida como DMZ, zona desmilitarizada, y subred apantallada), con servidores de seguridad que la separan de Internet y la red empresarial interna (y la base de datos de SQL Server).

  • La aplicación requiere una seguridad extrema, altos niveles de escalabilidad y un proceso de auditoría exhaustivo.

  • La base de datos confía en la aplicación para llevar a cabo correctamente la autenticación de los usuarios (es decir, la aplicación efectúa llamadas a la base de datos en nombre de los usuarios).

  • La aplicación Web se conecta a la base de datos mediante la cuenta de proceso ASP .NET.

  • Se utiliza una única función de base de datos definida por el usuario en SQL Server para la autorización de la base de datos.

Proteger el escenario

En este escenario, la aplicación Web presenta una página de inicio de sesión para aceptar las credenciales. Los usuarios que obtengan la validación tendrán permiso para continuar; el resto verá como se les deniega el acceso. La base de datos lleva a cabo la autenticación mediante la identidad de proceso predeterminada de ASP .NET, una cuenta con privilegios mínimos (es decir, la base de datos confía en la aplicación ASP .NET).

Tabla 7.1: Resumen de seguridad

Categoría

Detalles

Autenticación

  • IIS se configura para permitir el acceso anónimo; la aplicación Web de ASP .NET autentica los usuarios a través de la autenticación mediante Formularios para obtener las credenciales. La validación se efectúa con una base de datos de SQL Server.

  • Las contraseñas de los usuarios no se almacenan en la base de datos. En cambio, sí se almacenan los algoritmos hash de las contraseñas con los valores salt. El valor salt reduce la amenaza asociada a los ataques de diccionario.

  • La autenticación de Windows® se emplea para establecer la conexión con la base de datos que utiliza la cuenta con privilegios mínimos para ejecutar la aplicación Web de ASP.NET.

Autorización

  • La cuenta de proceso ASP.NET recibe autorización para obtener acceso a los recursos de sistema del servidor Web. Los recursos están protegidos mediante listas ACL de Windows.

  • La autorización para el acceso a la base de datos se efectúa mediante la identidad de aplicación de ASP .NET.

Comunicación segura

  • Proteja el envío de datos importantes de los usuarios a la aplicación Web mediante SSL.

  • Proteja el envío de datos importantes del servidor Web al servidor de bases de datos mediante IPSec.

El resultado

La ilustración 7.2 muestra la configuración de seguridad recomendada para este escenario.

imagen

Ilustración 7.2
Configuración de seguridad recomendada para el escenario de Internet de ASP.NET a SQL Server

Pasos para configurar la seguridad

Antes de empezar, debe consultar la forma de:

Configurar el servidor Web

Configurar IIS

Paso

Más información

Habilitar el acceso anónimo para el directorio raíz virtual de la aplicación Web

Para trabajar con la configuración de autenticación de IIS, utilice el complemento MMC de IIS. Haga clic con el botón secundario del mouse (ratón) en el directorio virtual de la aplicación y, a continuación, haga clic en Propiedades.

Haga clic en la ficha Seguridad de directorios y después haga clic en Editar en el grupo Control de autenticación y acceso anónimo.

Configurar ASP.NET

Paso

Más información

Restablecer la contraseña de la cuenta ASPNET (que se utiliza para ejecutar ASP.NET) a una contraseña segura conocida

Esto le permite crear una cuenta local duplicada (con el mismo nombre de usuario y la misma contraseña) en el servidor de bases de datos. Esto es necesario para permitir a la cuenta ASPNET responder a desafíos de autenticación de red del servidor de base de datos cuando se conecte mediante autenticación de Windows.
Una alternativa es utilizar una cuenta de dominio con privilegios mínimos (si se permite la autenticación de Windows a través del servidor de seguridad).

Para obtener más información, consulte "Identidad del proceso de ASP.NET" en el capítulo 8, "Seguridad de ASP.NET". Edite el archivo Machine.config, que se encuentra en %windir%\Microsoft.NET\Framework\v1.0.3705\CONFIGEstablezca los atributos del nombre de usuario y la contraseña de la cuenta personalizada en el elemento <processModel>.Valor predeterminado

<!-- userName="machine" password="AutoGenerate" 
        -->

Se convierte en

<!-- userName="machine"
        password="YourStrongPassword" -->

Configurar la aplicación Web ASP.NET para utilizar la autenticación mediante Formularios (con SSL)

Modifique el archivo Web.config de la raíz del directorio virtual de la aplicación.

Establezca el elemento <authentication> en:

<authentication mode="Forms" >
        <forms name="MyAppFormsAuth" 
        loginUrl="login.aspx" 
        protection="All"
        timeout="20" 
        path="/" >
        </forms>
        </authentication>

Si desea obtener más información acerca de la autenticación mediante Formularios con bases de datos de SQL Server, consulte "Cómo utilizar la autenticación mediante Formularios con SQL Server 2000" en la sección de referencia de este manual.

Configurar SQL Server

Paso

Más información

Crear una cuenta de Windows en el equipo de SQL Server que coincida con la cuenta de proceso ASP.NET

El nombre de usuario y la contraseña deben coincidir con la cuenta personalizada de la aplicación ASP.NET o bien debe tratarse de una cuenta ASPNET si todavía se utiliza la cuenta predeterminada.

Configurar SQL Server para la autenticación de Windows

.

Crear un inicio de sesión de SQL Server para la cuenta personalizada de la aplicación ASP.NET

Esto concede acceso al servidor SQL Server.

Crear un nuevo usuario de la base de datos y asignar el nombre de inicio de sesión al usuario de la base de datos

Permite obtener acceso a la base de datos especificada.

Crear una nueva función de base de datos definida por el usuario en la base de datos y colocar el usuario de la base de datos en esa función

.

Establecer permisos de base de datos para la función de base de datos

Este paso concede permisos mínimos.
Si desea obtener más información, consulte el capítulo 12, "Seguridad del acceso a datos."

Configurar la seguridad de las comunicaciones

Paso

Más información

Configurar el sitio Web para SSL

Consulte "Cómo configurar SSL en un servidor Web" en la sección de referencia de este manual.

Configurar IPSec entre el servidor de aplicaciones y el servidor de bases de datos

Consulte "Cómo utilizar IPSec para proporcionar comunicaciones seguras entre dos servidores" en la sección Referencia de esta guía.

Análisis

  • La autenticación mediante Formularios resulta idónea en este escenario puesto que los usuarios no disponen de cuentas de Windows. La página de inicio de sesión por formularios se utiliza para obtener las credenciales de usuario. La validación de dichas credenciales debe realizarse mediante el código de la aplicación. Puede utilizarse cualquier tipo de datos almacenado. La solución más habitual son las bases de datos de SQL Server, a pesar de que Active Directory también puede utilizarse como almacén de credenciales.

  • La autenticación mediante Formularios exige proteger las credenciales de inicio de sesión iniciales mediante SSL. También es necesario proteger el vale de la autenticación mediante Formularios (que se transmite como si se tratara de una cookie en las solicitudes Web posteriores del cliente autenticado). Podría utilizarse SSL para todas las páginas a fin de proteger el vale, o bien cifrar el vale de la autenticación mediante Formularios mediante la configuración del atributo protection del elemento <forms> (establecerlo en All o Encrypt) y el empleo del método Encrypt de la clase FormsAuthentication para cifrar el vale.

El atributo protection="All" especifica que cuando la aplicación llama a FormsAuthentication.Encrypt, el vale debe validarse (debe comprobarse la integridad) y cifrarse. Debe llamar a este método cuando cree el vale de autenticación (normalmente, en el controlador de eventos del botón Inicio de sesión de la aplicación).

string encryptedTicket = FormsAuthentication.Encrypt(authTicket);

Para obtener más información sobre la autenticación mediante Formularios y el cifrado del vale, consulte el capítulo 8, "Seguridad de ASP.NET".

  • ASP.NET se ejecuta como la cuenta ASPNET local con privilegios mínimos, de modo que se reducen las probabilidades de daños ocasionados por una posible exposición.

  • La autorización de direcciones URL en el servidor Web permite que los usuarios no autenticados puedan explorar páginas Web no restringidas además de exigir la autenticación para las páginas restringidas.

  • Dado que no está habilitada la suplantación, cualquier acceso a recursos locales o remotos que efectúe la aplicación basada en Web se lleva a cabo mediante el contexto de seguridad de la cuenta ASPNET. Las listas ACL de Windows de los recursos seguros deberían configurarse como corresponda.

  • Las credenciales de usuario se validan con relación a una base de datos de SQL Server personalizada. Las contraseñas hash (con valor salt) se almacenan en la base de datos. Si desea obtener más información, consulte "Autenticar usuarios en una base de datos" en el capítulo 12, "Seguridad de acceso a datos."

  • El uso de la autenticación de Windows en SQL Server evita tener que almacenar las credenciales en archivos del servidor Web, además de transferirlas por la red.

  • Si su aplicación utiliza la autenticación de SQL, es preciso que almacene de forma segura la cadena de conexión con la base de datos porque contiene los nombres de usuario y las contraseñas. Valore la posibilidad de utilizar DPAPI. Para obtener más información, consulte "Almacenar cadenas de conexión a bases de datos de forma segura", en el capítulo 12, "Seguridad del acceso a datos".

  • El uso de una cuenta de Windows duplicada en el servidor de bases de datos (una cuenta que coincida con la cuenta de proceso ASP.NET) se traduce en una mayor carga de administración. Si se cambia una contraseña de un equipo, por ejemplo, es preciso sincronizarla y actualizarla en el resto de los equipos. Algunos escenarios ofrecen la posibilidad de utilizar una cuenta de dominio con privilegios mínimos a fin de agilizar la administración.

  • IPSec entre el servidor Web y el servidor de bases de datos garantiza la privacidad de los datos que se envían desde la base de datos y hacia la misma.

  • La implementación de SSL entre el explorador y el Web protege las credenciales y cualquier otro tipo de datos cuya seguridad sea importante como, por ejemplo, los números de las tarjetas de crédito.

  • Si utiliza una batería de servidores Web, asegúrese de que las claves de cifrado, por ejemplo las utilizadas para cifrar el vale de la autenticación mediante Formularios (y especificadas mediante el elemento <machineKey> del archivo Machine.config), son coherentes en todos los servidores de la batería. Consulte el capítulo 8, "Seguridad de ASP.NET", para obtener más información acerca de cómo utilizar ASP.NET en un escenario de baterías de servidores Web.

Desventajas

La aplicación debe transmitir la identidad original del llamador hasta la base de datos para satisfacer los requisitos de auditoría. La identidad del llamador puede transferirse mediante los parámetros de procedimiento almacenado.

Escenarios relacionados

Autenticación mediante Formularios y Active Directory

Las credenciales de usuario aceptadas desde la página de inicio de sesión de Formularios pueden autenticarse con distintos almacenes. Active Directory es una alternativa a las bases de datos de SQL Server.

Más información

Si desea obtener más información, consulte "Cómo utilizar la autenticación mediante Formularios con Active Directory" en la sección de referencia de este manual.

Funciones .NET para la autorización

El escenario previo no tiene en consideración los distintos tipos de usuarios que obtienen acceso a la aplicación. Por ejemplo, un servidor de portal podría tener diferentes niveles de suscripción como, por ejemplo: estándar, especial y empresarial.

Si la información de función se conserva en el almacén del usuario (base de datos de SQL Server), la aplicación puede crear un objeto GenericPrincipal en el que pueda almacenarse la información de la función y la identidad. Una vez creado el objeto GenericPrincipal y después de incluirlo en el contexto de la solicitud Web (mediante HttpContext.User), puede agregar comprobaciones de función mediante programación para generar código metódico o bien insertar atributos PrincipalPermission en los métodos y las páginas a fin de solicitar la pertenencia a la función.

Más información

Utilizar una cuenta de dominio anónima en el servidor Web

En esta variación del escenario, la cuenta de usuario anónima predeterminada de Internet (una cuenta local denominada IUSR_MACHINE) se sustituye por una cuenta de dominio. La cuenta de dominio se configura con los privilegios mínimos necesarios para ejecutar la aplicación (puede empezarse sin privilegio alguno e ir agregando privilegios progresivamente). Si dispone de varias aplicaciones basadas en Web, puede utilizar diferentes cuentas de dominio (una para cada aplicación basada en Web o directorio virtual).

Para transmitir el contexto de seguridad de la cuenta de dominio anónima desde IIS a ASP.NET es preciso habilitar la suplantación para la aplicación basada en Web mediante la siguiente configuración del archivo Web.config.

Si la aplicación basada en Web se comunica con un recurso remoto como puede ser una base de datos, la cuenta de dominio debe tener concedidos los permisos necesarios para el recurso en cuestión. Por ejemplo, si la aplicación obtiene acceso a un sistema de archivos remoto, deben configurarse correctamente las ACL para ofrecer acceso de lectura (como mínimo) a la cuenta de dominio. Si la aplicación obtiene acceso a la base de datos de SQL Server, la cuenta de dominio deberá asignarse a un inicio de sesión de base de datos mediante un inicio de sesión de SQL.

Dado que el contexto de seguridad que se transmite a través de la aplicación corresponde al de una cuenta anónima, la identidad original del llamador (capturada gracias a la autenticación mediante Formularios) debe transferirse al nivel de la aplicación de nivel en nivel; por ejemplo, mediante métodos y parámetros de procedimiento almacenados.

Más información

  • Si desea obtener más información acerca de este enfoque, consulte " Utilizar la cuenta anónima de usuario de Internet" en el capítulo 8, “Seguridad de ASP.NET".

  • Antes de implementar este escenario, consulte el artículo Q259353, "Must Enter Password Manually After You Set Password Synchronization" (en inglés) de la Knowledge Base de Microsoft.

De ASP.NET a Servicios Empresariales remotos a SQL Server

En este escenario, un servidor Web que ejecuta páginas ASP.NET establece conexiones seguras con los componentes revisados, ubicados en un servidor de aplicaciones remoto que, a su vez, se conecta a una base de datos de SQL Server. Al igual que muchas infraestructuras de aplicaciones de Internet, el servidor Web y el servidor de aplicaciones se hallan separados por un servidor de seguridad (el servidor Web se ubica en una red perimetral). Los componentes revisados establecen conexiones seguras con SQL Server.

A modo de ejemplo, piense en una aplicación de banca por Internet que ofrezca a los usuarios información importante (como por ejemplo información financiera personal). Todas las transacciones bancarias que efectúe el cliente con relación a la base de datos deben tener garantizada la seguridad, del mismo modo que resulta fundamental mantener la integridad de los datos. No sólo debe garantizarse la seguridad del tráfico entrante y saliente del usuario, sino también el tráfico relativo a la base de datos. La ilustración 7.3 refleja este escenario.

imagen

Ilustración 7.3
Escenario de Internet de ASP.NET a Servicios Empresariales y SQL Server

Características

  • Los usuarios cuentan con distintos tipos de exploradores.

  • Los usuarios anónimos pueden explorar las páginas no restringidas de la aplicación.

  • Los usuarios deben registrarse o iniciar una sesión (a través de un formulario HTML) para ver las páginas restringidas.

  • La aplicación Web cliente se ubica en una red perimetral con servidores de seguridad que la separan de Internet y la red empresarial interna (y el servidor de aplicaciones).

  • La aplicación requiere una seguridad extrema, elevados niveles de escalabilidad y un proceso de auditoría exhaustivo.

  • La aplicación basada en Web utiliza SOAP para conectarse al nivel de servicios Web, que ofrece una interfaz para los componentes revisados de una aplicación de servicios empresariales del servidor de aplicaciones. Es preferible utilizar SOAP en vez de DCOM debido a las restricciones del servidor de seguridad.

  • SQL Server utiliza una función de base de datos exclusiva definida por el usuario para fines de autorización.

  • La seguridad de los datos es importante y debe garantizarse la integridad y privacidad de los mismos en la red y en todos los almacenes de datos permanentes.

  • Las transacciones de Servicios Empresariales (COM+) se utilizan para reforzar la integridad de los datos.

Proteger el escenario

En este escenario, el servicio Web acepta las credenciales de la página de inicio de sesión mediante formularios y autentica al llamador con relación a una base de datos de SQL Server. La página de inicio de sesión utiliza SSL para la protección de las credenciales del usuario cuando se transfieren por Internet.

La aplicación basada en Web se comunica con un servicio Web, que incluye una interfaz con los servicios empresariales implementados en los componentes revisados El servicio Web confía en la aplicación basada en Web (incluida en la red perimetral) y autentica la identidad de proceso ASP.NET. La identidad del usuario se transfiere a través de todos los niveles de aplicación mediante parámetros de método y procedimiento almacenados. Esta información se utiliza para realizar una auditoría de las acciones de los usuarios en todos los niveles.

Tabla 7.2: medidas de seguridad

Categoría

Detalles

Autenticación

  • Proporciona una autenticación segura en el servidor Web.

  • Autentica la identidad de la aplicación Servicios Empresariales en la base de datos.

  • IIS se configura para permitir el acceso anónimo y la aplicación basada en Web autentica los usuarios con la autenticación mediante Formularios (con una base de datos de SQL Server).

  • Se configura el directorio virtual del servicio Web para la autenticación de Windows integrada. Los servicios Web autentican la identidad de proceso de la aplicación basada en Web.

  • Se utiliza la autenticación de Windows para realizar la conexión a la base de datos. La base de datos autentica la cuenta de Windows con privilegios mínimos utilizada para ejecutar la aplicación Servicios Empresariales.

Autorización

  • Se utiliza el modelo de subsistema de confianza y se lleva a cabo la autorización por usuario únicamente en la aplicación Web.

  • El acceso de los usuarios a las páginas del servidor Web se controla mediante la autorización de direcciones URL.

  • La cuenta de proceso ASP.NET recibe autorización para obtener acceso a los recursos de sistema del servidor Web. La protección de los recursos se lleva a cabo mediante las listas ACL.

  • Los permisos de la base de datos se controlan mediante una función definida por el usuario. La identidad de la aplicación de Servicios Empresariales es miembro de la función.

  • La cuenta de proceso de Servicios Empresariales recibe autorización para obtener acceso a los recursos de sistema del servidor de aplicaciones. La protección de los recursos se lleva a cabo mediante las ACL.

Comunicación segura

  • La seguridad del envío de datos importantes entre usuarios y la aplicación basada en Web se protege mediante SSL.

  • La seguridad del envío de datos importantes entre el servidor Web y el servicio Web se garantiza mediante SSL.

  • La seguridad del envío de datos importantes entre componentes revisados y la base de datos se garantiza mediante IPSec

El resultado

La ilustración 7.4 muestra la configuración de seguridad recomendada para este escenario.

imagen

Ilustración 7.4
Configuración de seguridad recomendada para el escenario de Internet de ASP.NET a Servicios Empresariales y SQL Server

Pasos para la configuración de la seguridad

Antes de empezar es preciso considerar los siguientes aspectos:

Configurar el servidor Web

Configurar IIS

Paso

Más información

Habilitar el acceso anónimo para el directorio raíz virtual de la aplicación Web

.

Configurar ASP.NET

Paso

Más información

Restablecer la contraseña de la cuenta ASPNET (que se utiliza para ejecutar ASP.NET) a una contraseña segura conocida

Permite crear una cuenta local duplicada (con el mismo nombre de usuario y contraseña) en el servidor de aplicaciones. Este paso es necesario para que la cuenta ASPNET pueda responder a los desafíos de la autenticación de red desde el servidor de aplicaciones.
Existe una alternativa que consiste en utilizar una cuenta de dominio con privilegios mínimos (siempre y cuando se permita la autenticación de Windows a través del servidor de seguridad).
Para obtener más información, consulte "Identidad del proceso de ASP.NET" en el capítulo 8, "Seguridad de ASP.NET".
Edite el archivo Machine.config, que se encuentra en %windir%\Microsoft.NET\Framework\v1.0.3705\CONFIGEstablezca los atributos de nombre de usuario y contraseña de la cuenta personalizada en el elemento <processModel>.Valor predeterminado

<!-- userName="machine" password="AutoGenerate" 
        -->

Se convierte en

<!-- userName="machine"
        password="YourStrongPassword" -->

Configurar la aplicación Web para utilizar la autenticación mediante Formularios (con SSL)

Modifique el archivo Web.config de la raíz del directorio virtual de la aplicación.

Establezca el elemento <authentication> en:

<authentication mode="Forms" >
        <forms name="MyAppFormsAuth" 
        loginUrl="login.aspx"
        protection="All"
        timeout="20" 
        path="/" >
        </forms>
        </authentication>

Si desea obtener más información acerca de la autenticación mediante Formularios con bases de datos de SQL Server, consulte "Cómo utilizar la autenticación mediante Formularios con SQL Server 2000" en la sección de referencia de este manual.

Configurar el servidor de aplicaciones

Configurar ASP.NET

Paso

Más información

Configurar ASP.NET

Paso

Más información

Configurar ASP.NET

Paso

Más información

Resumen

texto texto texto

Mostrar:
© 2015 Microsoft