Exportar (0) Imprimir
Expandir todo

Capítulo 1 - Introducción

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.

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

Autenticación, autorización y comunicación segura

Resumen: Este capítulo define el alcance y la organización de la guía y resalta sus objetivos. Presenta además la terminología clave y un conjunto de principios esenciales que se aplican a las instrucciones que contienen los capítulos posteriores.

La creación de aplicaciones Web distribuidas seguras constituye un verdadero desafío. El alcance de la seguridad de su aplicación lo define su punto más débil. Las aplicaciones distribuidas contienen muchas piezas móviles y conseguir que esas piezas funcionen conjuntamente de forma segura requiere un conocimiento de base de numerosos productos y tecnologías.

Ya tiene que tener en cuenta muchos aspectos: la integración de varias tecnologías, el mantenerse al día acerca de las tecnologías y aventajar a la competencia. Si todavía desconoce el proceso de creación de aplicaciones seguras, ¿puede permitirse el tiempo y el esfuerzo necesarios para aprenderlo? Y más concretamente, ¿puede permitirse no hacerlo?

En esta página

El entorno conectado El entorno conectado
Alcance Alcance
Objetivos de esta guía Objetivos de esta guía
Lectura recomendada de esta guía Lectura recomendada de esta guía
Organización de la guía Organización de la guía
Terminología clave Terminología clave
Principios Principios
Conclusión Conclusión

El entorno conectado

Si ya sabe cómo crear aplicaciones seguras, ¿puede aplicar sus conocimientos a la hora de crear aplicaciones Web .NET? ¿Puede aplicar sus conocimientos al entorno actual de aplicaciones Web distribuidas, en el que los servicios Web conectan a las empresas con otras empresas y con los clientes, y en el que las aplicaciones traen consigo varios niveles de exposición, como por ejemplo, a usuarios en intranets, extranets e Internet?

Considere algunas de las características principales de este entorno conectado:

  • Los servicios Web utilizan estándares tales como SOAP, Lenguaje de marcado extensible (XML) y Protocolo de transferencia de hipertexto (HTTP), pero sobre todo transmiten información potencialmente confidencial mediante texto sin formato.

  • Las aplicaciones B2C (business-to-consumer) de Internet transmiten información confidencial en el Web.

  • Las aplicaciones B2B (business-to-business) de extranet relajan las condiciones de seguridad y permiten que las aplicaciones sean llamadas por otras aplicaciones de empresas asociadas.

  • Las aplicaciones de Internet comportan riesgos si se considera el carácter confidencial de las aplicaciones de nóminas y de recursos humanos (RR.HH.). Tales aplicaciones son especialmente vulnerables a administradores avispados y empleados descontentos.

Alcance

Esta guía se concentra en:

  • La autenticación (para identificar a los clientes de la aplicación)

  • La autorización (para ofrecer controles de acceso para los clientes)

  • La comunicación segura (para garantizar que los mensajes mantienen su privacidad y no son manipulados por personas no autorizadas)

¿Por qué la autenticación, la autorización y la comunicación segura?

La seguridad es un tema muy amplio. Según los estudios, al diseñar al principio la autenticación y autorización se elimina un alto porcentaje de vulnerabilidades de las aplicaciones. La comunicación segura es una parte esencial de la protección de la aplicación distribuida para garantizar la confidencialidad de los datos (incluidas las credenciales) que se transmiten a la aplicación y desde ella, y entre niveles de la aplicación.

Objetivos de esta guía

Esta guía no constituye una introducción a la seguridad. No se trata de una referencia sobre seguridad para Microsoft .NET Framework, ya que es el Kit de desarrollo de software (SDK) de .NET Framework que se encuentra disponible en MSDN el que cumple esta función (consulte la sección "Referencias" de esta guía para obtener más información). Esta guía es una continuación de la documentación y presenta un enfoque basado en escenarios para compartir experiencias y técnicas probadas, tal y como se desprende de la experiencia práctica y con clientes y de los conocimientos de los equipos de producto de Microsoft.

La información de esta guía tiene como objetivo mostrarle cómo:

  • Aumentar la seguridad de la aplicación

  • Identificar dónde y cómo es necesario realizar la autenticación

  • Identificar dónde y cómo es necesario realizar la autorización

  • Identificar dónde y cómo es necesario proteger la comunicación entre la aplicación y los usuarios finales, y entre niveles de la aplicación

  • Identificar riesgos comunes y estrategias para evitarlos

  • Identificar los riesgos principales y su mitigación en relación con la autenticación y la autorización

  • Evitar comprometer la seguridad solamente para que todo funcione bien

  • Identificar no sólo cómo, sino también cuándo utilizar varias características de seguridad

  • Eliminar TID (temor, incertidumbre y dudas)

  • Promover prácticas recomendadas y resultados predecibles

Lectura recomendada de esta guía

Esta guía se ha diseñado de forma modular. Esto le permite escoger los capítulos que desea leer. Por ejemplo, si está interesado en obtener información acerca de las características de seguridad avanzadas que proporciona una tecnología concreta, puede pasar directamente a la Parte III de la guía (capítulos 8 a 12), que contiene material detallado acerca de ASP.NET, la aplicación de Servicios Empresariales, servicios Web, .NET Remoting y el acceso a datos.

No obstante, le recomendamos que empiece por leer los primeros capítulos (del 1 al 4) de la Parte I de la guía, puesto que le ayudarán a entender el modelo de seguridad y a identificar las tecnologías y servicios de seguridad básicos de los que dispone. Los arquitectos de aplicaciones deberán asegurarse de leer el capítulo 3, que ofrece conocimientos clave acerca del diseño de una estrategia de autenticación y autorización que se aplica a todos los niveles de la aplicación Web. La Parte I le proporcionará los materiales de base que le permitirán aprovechar al máximo el resto de los capítulos de la guía.

Los capítulos dedicados a las intranets, extranets e Internet (capítulos 5 a 7) de la Parte II de la guía le mostrarán cómo proteger determinados escenarios de aplicaciones. Si conoce la arquitectura y el patrón de implementación que ha adoptado o va a adoptar la aplicación, puede utilizar esta parte de la guía para entender los problemas de seguridad correspondientes y los pasos de configuración básicos para implementar la protección de escenarios específicos. Además, la información adicional y el material de referencia de la Parte IV de la guía le ayudarán a aumentar sus conocimientos acerca de áreas tecnológicas específicas. Contiene también una biblioteca de artículos prácticos que le permitirán desarrollar soluciones de seguridad eficaces en el menor tiempo posible.

Organización de la guía

Esta guía está dividida en cuatro partes. Su objetivo es proporcionar una división lógica, que le facilitará la asimilación del contenido.

Parte I - Modelos de seguridad

La Parte I de la guía ofrece una base para el resto de la guía. Al familiarizarse con los conceptos, tecnologías y principios presentados en esta parte, podrá sacar el máximo partido a las partes restantes de la guía. La Parte I contiene los siguientes capítulos:

  • Capítulo 1 - "Introducción"

  • Capítulo 2 - "Modelo de seguridad para aplicaciones ASP.NET"

  • Capítulo 3 - "Autenticación y autorización"

  • Capítulo 4 - "Comunicación segura"

Parte II - Escenarios de aplicaciones

La mayoría de las aplicaciones pueden clasificarse como aplicaciones de intranet, extranet o Internet. Esta parte de la guía presenta un conjunto de escenarios de aplicaciones comunes, cada uno de los cuales representa una de las categorías anteriores. Se describen las características principales de cada escenario y se analizan las amenazas de seguridad potenciales.

A continuación, se explica cómo configurar e implementar la estrategia de autenticación, autorización y comunicación segura más adecuada para cada escenario de aplicaciones. Cada escenario contiene además secciones con un análisis detallado, los riesgos más comunes que se deben evitar y preguntas más frecuentes (P+F). La Parte II contiene los siguientes capítulos:

  • Capítulo 5 - "Seguridad de intranet"

  • Capítulo 6 - "Seguridad de extranet"

  • Capítulo 7 - "Seguridad de Internet"

Parte III - Proteger los niveles

Esta parte de la guía contiene información detallada relacionada con los distintos niveles y las tecnologías asociadas a las aplicaciones Web seguras conectadas a .NET. La Parte III contiene los siguientes capítulos:

  • Capítulo 8 - "Seguridad de ASP.NET"

  • Capítulo 9 - "Seguridad de la aplicación de Servicios Empresariales"

  • Capítulo 10 - "Seguridad de servicios Web"

  • Capítulo 11 - "Seguridad de .NET Remoting"

  • Capítulo 12 - "Seguridad del acceso a datos"

Cada capítulo contiene una breve introducción a la arquitectura de seguridad y su aplicación a la tecnología concreta tratada en el capítulo. Se explican las estrategias de autenticación y la autorización de cada tecnología junto con opciones de seguridad configurables, opciones de seguridad programables y recomendaciones prácticas acerca de cuándo utilizar cada una de las estrategias.

Cada capítulo contiene instrucciones y explicaciones que le permitirán escoger e implementar la opción de autenticación, autorización y comunicación segura más adecuada para cada tecnología. Además, cada capítulo incluye información adicional específica de cada tecnología. Por último, cada capítulo concluye con un breve resumen de recomendaciones.

Parte IV - Referencia

Esta parte de referencia de la guía contiene información complementaria para ayudarle a aumentar sus conocimientos sobre las técnicas, estrategias y soluciones de seguridad presentadas en los capítulos anteriores. Los artículos prácticos contienen procedimientos paso a paso que le permiten implementar soluciones de seguridad específicas. La Parte IV contiene la siguiente información:

  • Capítulo 13 - "Solucionar problemas de seguridad"

  • "Artículos prácticos"

  • "Configuración básica"

  • "Almacenes y herramientas de configuración"

  • "Centro de referencia"

  • "Artículos prácticos"

  • "Funcionamiento"

  • "Matriz de identidades de ASP.NET"

  • "Criptografía y certificados"

  • "Modelo de seguridad de ASP.NET"

  • "Glosario"

Terminología clave

Esta sección presenta varios términos clave de seguridad que se utilizan en toda la guía. Aunque la sección "Referencia" de la guía contiene un glosario terminológico completo, deberá familiarizarse con los siguientes términos:

  • Autenticación. Identificar correctamente los clientes de la aplicación, entre los que pueden figurar usuarios finales, servicios, procesos o equipos.

  • Autorización. Definir lo que pueden ver y hacer en la aplicación los clientes autenticados.

  • Comunicaciones seguras. Garantizar la privacidad y la integridad de los mensajes cuando pasan de una red a otra.

  • Suplantación. Se trata de la técnica utilizada por una aplicación de servidor para obtener acceso a recursos en nombre de un cliente. El contexto de seguridad del cliente se utiliza para los controles de acceso realizados por el servidor.

  • Delegación. Una forma ampliada de suplantación que permite a un proceso de servidor que trabaja en nombre de un cliente el acceso a recursos de un equipo remoto. Kerberos ofrece esta capacidad de forma nativa en Microsoft® Windows® 2000 y sistemas operativos posteriores. La suplantación convencional (por ejemplo, la de NTLM) sólo permite un salto de red. Cuando se utiliza la suplantación de NTLM, este salto se usa entre el equipo cliente y el equipo servidor, con lo que se impide el acceso del servidor a otros recursos que no sean los locales durante la suplantación.

  • Contexto de seguridad. Es un término genérico usado para referirse a la colección de configuraciones de seguridad que afectan al comportamiento relativo a la seguridad de un proceso o subproceso. Los atributos de la sesión de inicio y el testigo de acceso de un proceso conforman el contexto de seguridad del proceso.

  • Identidad. Hace referencia a una característica exclusiva de un usuario o servicio que lo identifica. Suele tratarse, por ejemplo, de un nombre de visualización, que a menudo adopta el formato autoridad/nombre de usuario.

Principios

Existen varios principios generales que se aplican a las instrucciones presentadas en capítulos posteriores. A continuación, figura un resumen de estos principios:

  • Adoptar el principio de privilegios mínimos. Los procesos que ejecutan código o secuencias de comandos deberán ejecutarse con una cuenta con privilegios mínimos para limitar los posibles daños que podrían producirse si se ve comprometido el proceso. Si un usuario malintencionado consigue insertar código en un proceso de servidor, los privilegios concedidos al proceso determinan en gran medida los tipos de operaciones que puede realizar el usuario. El código que requiere confianza adicional (y privilegios elevados) deberá aislarse en procesos independientes.

    El equipo de ASP.NET decidió deliberadamente ejecutar la cuenta de ASP.NET con los mínimos privilegios (mediante la cuenta ASPNET). Durante el lanzamiento de la versión beta de .NET Framework, ASP.NET se ejecutó como SISTEMA, una configuración intrínsecamente menos segura.

  • Usar las defensas a fondo. Coloque puntos de control en cada una de las capas y subsistemas de la aplicación. Los puntos de control son los guardianes que garantizan que sólo los usuarios autenticados y autorizados puedan obtener acceso a la siguiente capa inferior.

  • No confiar en los datos introducidos por el usuario. Las aplicaciones deberán validar al completo todos los datos introducidos por el usuario antes de ejecutar operaciones con esos datos. La validación podría incluir el filtrado de caracteres especiales. Esta medida preventiva protege a la aplicación de usos incorrectos accidentales o ataques deliberados por parte de usuarios que intentan insertar comandos dañinos en el sistema. Entre los ejemplos más habituales, figuran los ataques de inyección SQL, la inserción de secuencias de comandos y el desbordamiento del búfer.

  • Utilizar opciones predeterminadas seguras. Una práctica habitual entre los desarrolladores es la de utilizar opciones de configuración de seguridad reducida, simplemente para que funcione la aplicación. Si la aplicación requiere características que le obligan a reducir o cambiar la configuración de seguridad predeterminada, pruébelo primero para comprobar sus efectos y consecuencias antes de realizar el cambio.

  • No depender de la seguridad por medio de la oscuridad. Si intenta ocultar secretos mediante el uso de nombres de variables engañosos o los guarda en ubicaciones de archivos no habituales, no estará mejorando la seguridad. En el juego del escondite, es mejor utilizar características de la plataforma o técnicas de probada eficacia para proteger los datos.

  • Realizar controles en la puerta. No siempre es necesario transmitir el contexto de seguridad del usuario hasta el servidor para realizar comprobaciones de autorización. A menudo, ésta no suele ser la mejor opción en un sistema distribuido. El control de clientes en la puerta se refiere a autorizar al usuario en el primer punto de autenticación (por ejemplo, en la aplicación Web del servidor Web) y a determinar los recursos y operaciones (que pueden proporcionar los servicios de capas inferiores) a los que se permite obtener acceso al usuario.

    Si diseña estrategias de autenticación y autorización sólidas en la puerta, podrá evitar la necesidad de delegar el contexto de seguridad del llamador original hasta el nivel de datos de la aplicación.

  • Asumir que los sistemas externos no son seguros. Si no es de su propiedad, no presuponga que alguien se esté ocupando de la seguridad por usted.

  • Reducir el área expuesta. Evite exponer información no necesaria. Si lo hace, posiblemente estará abriendo puertas que pueden traer consigo vulnerabilidades adicionales. También deberá tener cuidado con los errores; no exponga más información de la necesaria al devolver un mensaje de error al usuario final.

  • Cometer errores de forma segura. Si se produce un error en la aplicación, asegúrese de no dejar al descubierto ninguna información confidencial. Tampoco deberá proporcionar demasiados detalles en los mensajes de error; es decir, no deberá incluir información que pueda ayudar a un intruso a explotar una vulnerabilidad de la aplicación. Escriba información detallada de errores en el registro de sucesos de Windows.

  • No olvidar que el alcance de la seguridad lo define su punto más débil. La seguridad es un motivo de preocupación en todos los niveles de la aplicación.

  • Si no lo utiliza, deshabilítelo. Puede eliminar posibles puntos de ataque si deshabilita módulos y componentes innecesarios para la aplicación. Por ejemplo, si la aplicación no utiliza el almacenamiento en caché de resultados, debería deshabilitar el módulo de caché de resultados de ASP.NET. Si más adelante se detecta una vulnerabilidad de seguridad en el módulo, su aplicación no se verá amenazada.

Conclusión

Este capítulo le ha proporcionado material básico de preparación para el resto de la guía. Se han descrito los objetivos de la guía y se ha presentado su estructura general. Asegúrese de haberse familiarizado con la terminología clave y los principios presentados en este capítulo, puesto que se mencionan y se utilizan a menudo en todos los capítulos posteriores.

Mostrar:
© 2014 Microsoft