- Introducción a la seguridad en la plataforma .NET
- Acceso seguro a datos en ASP.NET
-
Autenticación mediante formularios en ASP.NET
-
Autenticación mediante Windows en ASP.NET
-
Autenticación mediante certificados en ASP.NET
-
Ataques de entrada de usuario
- Seguridad
en SQL Server
1. Introducción a la seguridad en la plataforma .NET
La plataforma .NET proporciona como una de sus características más
destacadas una robusta infraestructura de seguridad que facilita tanto a los
desarrolladores, como administradores y usuarios finales, un mayor control
sobre el código que se ejecuta en sus sistemas. En este primer módulo aprenderá
los fundamentos de la seguridad en el acceso a código (CAS), basada en la
identidad de código, en oposición a la identidad de usuario.
- Restricciones de seguridad: identidad de
código vs. identidad de usuario
- Autenticación: acumulación de evidencias
para identificación del código
- Autorización: clases de permisos en .NET
- Inspección de pila
- Directivas de seguridad de código, grupos de
código y niveles de directiva
- Nombres fuertes y firma de ensamblados de
código
- Verificación y validación de ensamblados
- Modelo de seguridad para aplicaciones
ASP.NET
PRÁCTICAS
Identidad de código vs. identidad de
usuario
Se explica de forma práctica con ejemplos el
funcionamiento de ambos modelos: el clásico,
basado en la identidad del usuario que intenta
ejecutar el código, frente al basado en la
identidad del propio código que va a ejecutarse.
Inspección de pila Se
muestra el funcionamiento de la inspección de
pila, que permite verificar que todas las
funciones en la cadena de llamadas poseen permiso
para acceder a un recurso.
Permisos, autorización y directivas de
seguridad de código Mediante algunos
programas de ejemplo se muestra cómo se obtienen
evidencias cuando se carga un ensamblado y cómo se
definen las listas de conjuntos de permisos a
todos los niveles de directiva.
Implantación de un ensamblado seguro
Se utilizan los mecanismos de seguridad de .NET
explicados y se trabaja con los nombres fuertes (SN)
para crear un ensamblado seguro.
2. Acceso seguro
a datos en ASP.NET
La mayor parte de aplicaciones web hoy en día
necesitan acceder a bases de datos para obtener
información sobre productos, servicios, clientes,
etc., y presentar a partir de ella páginas
dinámicas. En este módulo aprenderá cómo
configurar el servidor web (IIS y ASP.NET) y
utilizar ADO.NET para acceder a los datos de forma
segura. Se explica además cómo almacenar y acceder
a secretos de forma segura.
- Acceso a BD de datos mediante ADO.NET
- Acceso no autorizado a BD a través de la
revelación de la cadena de conexión
- Formas seguras de acceder a la BD
- Almacenamiento seguro de secretos
PRÁCTICAS
Acceso a la BD desde las páginas
ASP.NET Se crearán páginas de acceso a
BD utilizando ADO.NET.
Ataque a la BD En aquellos
casos en los que el nombre de usuario y contraseña
de acceso a la BD quedan revelados en la cadena de
conexión, por codificarse ésta en la propia página
ASP.NET o componente .NET o almacenarse en un
fichero include separado o en el "global.asax", es
posible acceder directamente a la BD. Se
demuestran algunas formas de hacerse con esta
información y cómo explotarla para conectarse
directamente a la BD sin pasar por el servidor web.
Diseño de componentes de acceso seguro
a la BD Para solucionar las
limitaciones de los métodos de acceso anteriores
se diseñan varios componentes .NET de conexión a la base
de datos. Se muestran las ventajas del uso de
componentes frente a la codificación en ASP.NET.
También se crea un componente COM+ con cadena de
construcción.
Acceso a secretos con DPAPI
Se crea una biblioteca de funciones para acceso a
secretos mediante los métodos de la DPAPI (Data
Protection API). Después se crean varias
aplicaciones diferentes para utilizar la
biblioteca anterior desde ASP.NET.
3.
Autenticación mediante formularios en ASP.NET
La autenticación y autorización resultan
fundamentales en toda aplicación web en la que se
desee restringir lo que los usuarios pueden hacer.
La autenticación permite conocer la identidad de
quienes se conectan al servidor. La autorización
permite verificar qué privilegios tiene asignados
cada usuario y saber así qué acciones le están
permitidas. Una vez detectada la necesidad de
autenticar y autorizar a los usuarios, surge la
importante cuestión de decidir cómo se llevan a
cabo. ASP.NET incluye todo un conjunto de nuevas
funcionalidades para simplificar la creación de
aplicaciones que autentican a sus usuarios
mediante formularios.
- Autenticación mediante formularios básica
- Autenticación mediante formularios y XML
- Autenticación mediante formularios y base de
datos
- Autenticación mediante formularios y tickets
personalizados
- Autenticación mediante formularios sin
cookies
- Protección de contenido distinto de páginas
.aspx
- Autenticación mediante formularios y
autorización basada en roles
- Autenticación mediante formularios en
granjas de servidores
- Directivas de seguridad de contraseñas
- Conservación de información de sesión
- Ataques contra las distintas formas de
autenticación y defensa
PRÁCTICAS
Autenticación mediante formularios en
ASP.NET
Se muestran varias soluciones con diferentes
niveles de seguridad: almacenamiento de la
información de usuario en el archivo Web.Config,
en un archivo XML, en una base de datos, con y sin
cookies, utilizando o no roles para autorizar el
acceso, con tickets personalizados, etc.
Almacenamiento de contraseñas
Se desarrolla un mecanismo para no almacenar
contraseñas en la base de datos.
Validación de contraseñas
Se examinan distintas soluciones para proteger
la información a la que pueden acceder los
usuarios autenticados en un sitio web.
Conservación de información de sesión
en ASP.NET
Mantener la información de los usuarios resulta
fundamental para seguir su sesión con el servidor.
Se explican las formas alternativas de
conservación de sesión de usuarios introducidas
por ASP.NET.
Ataques contra las distintas formas de
autenticación Se realizan ataques
contra las formas de autenticación analizadas y
cómo defenderse ante ellos.
4.
Autenticación mediante Windows en ASP.NET
La autenticación y autorización mediante
Windows resulta mucho más segura que mediante
formularios. En los casos en los que se puede
utilizar, se explica cómo configurarla
correctamente e integrarla con las aplicaciones
ASP.NET.
- Autenticación básica
- Autenticación mediante resúmenes
- Autenticación integrada de Windows
- Protección de directorios y documentos
- Representación de usuario
- Ataques contra las distintas formas de
autenticación
PRÁCTICAS
Autenticación básica, mediante
resúmenes e integrada de Window Se
explica cómo configurar estos tipos de
autenticación en IIS y se comprueban sus ventajas
y limitaciones.
Protección de directorios y documentos
Se examinan distintas soluciones para proteger la
información a la que pueden acceder los usuarios
autenticados en un sitio web.
Representación de usuario
Configuración y experimentación con las distintas
formas de representación de usuario de IIS y
ASP.NET.
Ataques contra las distintas formas de
autenticación Se realizan ataques
contra las formas de autenticación analizadas y
cómo defenderse ante ellos.
5. Autenticación
mediante certificados en ASP.NET
Los certificados digitales constituyen una de
las formas más seguras y flexibles para autenticar
a los visitantes de un sitio web. En este módulo
se introducen los conceptos y herramientas
necesarios para configurar una solución segura
basada en certificados.
- Introducción a los certificados digitales
- Criptografía con .NET
- Autoridades de certificación
- Canales seguros con SSL
- Autenticación mediante certificados
digitales
- Acceso a la información de los certificados
desde ASP.NET
PRÁCTICAS
Rastreo de contraseñas Se
utilizará un rastreador de red (sniffer), que
permitirá comprobar cómo todo el tráfico,
incluidas las contraseñas, viajan en claro.
Utilización de criptografía con la
plataforma .NET Se crean varios
ejemplos para aprender el funcionamiento de las
clases de criptografía proporcionadas por .NET
para cifrado/descifrado, cálculo de hashes y
generación de números pseudoaleatorios. Más
adelante, estas clases se utilizarán en muchas
aplicaciones.
Instalación y operación de la autoridad
de certificación Se instala y
configura la autoridad de certificación, que será utilizada para expedir certificados
tanto a servidores web como a usuarios.
Instalación del servicio SSL
Para evitar el que las contraseñas y las
transacciones viajen en claro por la red se
implanta el servicio SSL (Secure Sockets Layer) en
el servidor IIS.
Diseño de autenticación basada en
certificados de usuario X-509 Como
importante mejora de la aplicación se desarrollan
los mecanismos para una identificación de usuarios
basada en certificados X-509. Se exploran las
distintas políticas de acceso basando el control
en información contenida en el propio certificado
presentado por el usuario: uno a uno y muchos a
uno, evaluándose sus ventajas e
inconvenientes.
6. Ataques de
entrada de usuario
Uno de los medios de ataque más utilizados y
eficaces consiste en enviar parámetros inesperados
a una página ASP.NET, de manera que no pueda
procesarlos y entre en un estado inestable o bien
ejecute acciones indeseadas, como cambiar el
precio a productos, borrar tablas de una base de
datos o acceder a datos confidenciales de otros
usuarios. El ejemplo más explotado en ASP.NET
consiste en la manipulación de formularios. En
este módulo se repasan algunos de los ataques más
comunes y peligrosos y la manera de protegerse
ante ellos.
- Consultas maliciosas (inyección de SQL)
- Cadenas de entrada hostiles
- Cross Site Scripting e inyección de código
- Cookies
- Cabeceras HTTP
- Comprobaciones locales y campos ocultos
- Técnicas de validación de entrada en cliente
y servidor
PRÁCTICAS
Acceso al servidor web a través de
Telnet Se demuestra cómo valiéndose de
un sencillo cliente de Telnet y un conocimiento
profundo de las cabeceras HTTP, puede manipularse
prácticamente cualquier dato de entrada. Después
se repasan algunas de las herramientas de hacking
web más utilizadas.
Seguridad en los accesos a la base de
datos: ataques de inyección de SQL Un diseño incorrecto de
las consultas a la base de datos puede conducir a
un atacante hostil a realizar interrogaciones en
la base de datos.
Eliminación de vulnerabilidades del
tipo "Cross Site Scripting" e inyección de
código Demostración práctica de la
existencia de estas vulnerabilidades en sitios
reales. Se implantan las medidas correctoras para
evitar estos problemas.
Verificación de las cabeceras HTTP
Una validación de las cabeceras HTTP es muy
importante para protegerse contra algunos tipos de
ataques.
Uso seguro de las cookies y cookies
firmadas Las cookies pueden ser
alteradas por un usuario malicioso. Un uso
correcto de las mismas requiere la implantación de
un mecanismo de firmado criptográfico de los
campos de las cookies.
Comprobaciones locales, campos ocultos
Muchas aplicaciones hacen uso incorrecto de
funcionalidades del navegador tales como campos
ocultos o verificaciones locales para validaciones
de entrada. En este apartado se practica cómo
protegerse de estos riesgos.
Expresiones regulares en ASP.NET Se
estudia a fondo el funcionamiento de las
expresiones regulares, técnica fundamental para
sanear las entradas recibidas de los usuarios. Se
utilizan los controles de validación de entrada de
ASP.NET.
7. Seguridad en
SQL Server
El modelo de seguridad de SQL Server ha
evolucionado de forma considerable durante los
últimos años, hasta llegar a integrarse casi
completamente con la seguridad de Windows XP.
Sin entrar en los detalles complejos de
administración de bases de datos, este módulo
explica las principales características de
seguridad que resultan de importancia para el
creador de aplicaciones web, de manera que se
garantice el acceso a los usuarios autorizados, a
la vez que se evita el acceso no autorizado a la
información de la base de datos.
- Introducción a la seguridad en SQL Server
- Administración de usuarios y roles
- Creación de vistas
- Programación de procedimientos almacenados
- Comunicaciones seguras
PRÁCTICAS
Inicio de sesión y usuarios de
tablas Muchas aplicaciones web
acceden a la base de datos con el usuario "sa". Se
demuestran los graves problemas de seguridad de
esta solución y se explica cómo crear inicios de
sesión y usuarios, con diferentes niveles de
privilegios (roles).
Utilización de vistas y procedimientos
almacenados En lugar de acceder
directamente a los datos de las tablas, se explica
cómo crear vistas y procedimientos almacenados, de
manera que se protege mejor la información a la
que cada usuario tiene acceso. Se explican también
otras muchas ventajas de los procedimientos
almacenados.
Comunicaciones seguras Se
utiliza SSL para cifrar las comunicaciones entre
el servidor de base de datos y el cliente. Se
configura de formas variadas: para el servidor,
para todas las aplicaciones del cliente y para
aplicaciones concretas.
Herramientas de hacking de SQL Server
2000 Se repasan algunas de las
herramientas de ataque más comunes utilizadas
contra servidores SQL Server 2000 y se explica
cómo protegerse ante ellas. |