1 / 72

Desarrollo de aplicaciones seguras con .NET

Desarrollo de aplicaciones seguras con .NET. Alejandro Mezcua MVP .NET Zaltor Soluciones Informáticas amezcua@zaltor.com. Agenda. Objetivo La importancia de la seguridad en las aplicaciones Prácticas aconsejables de seguridad Tecnologías de seguridad Implementación en .NET Conclusiones.

roseanne
Télécharger la présentation

Desarrollo de aplicaciones seguras con .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desarrollo de aplicaciones seguras con .NET Alejandro Mezcua MVP .NET Zaltor Soluciones Informáticas amezcua@zaltor.com

  2. Agenda • Objetivo • La importancia de la seguridad en las aplicaciones • Prácticas aconsejables de seguridad • Tecnologías de seguridad • Implementación en .NET • Conclusiones

  3. Agenda • Objetivo • Importancia de la seguridad en las aplicaciones • Prácticas aconsejables de seguridad • Tecnologías de seguridad • Implementación en .NET • Conclusiones

  4. Objetivo • Mostrar distintos aspectos de seguridad a tener en cuenta por los desarrolladores • Enseñar diversas capacidades de .NET en el área de seguridad

  5. Agenda • Objetivo • La importancia de la seguridad en las aplicaciones • Prácticas aconsejables de seguridad • Tecnologías de seguridad • Implementación en .NET • Conclusiones

  6. Importancia de la seguridad en las aplicacionesUn mundo hostil (I) • Usuarios móviles conectan desde redes públicas • Trabajadores conectando a la red corporativa • Redes fijas, Wireless, modem, VPN • PCs de la empresa, PCs privados • Trabajadores conectando a (y desde) otras redes • Puntos de acceso a Internet públicos, redes de partners, de clientes • Partners conectando a Servicios Web

  7. Importancia de la seguridad en las aplicacionesUn mundo hostil (II) • Dependencia de Internet • Cada vez más aplicaciones requieren el uso de Internet • ¡Internet ES hostil por naturaleza! • Lleno de ladrones, vándalos, criminales y hackers,  • Prácticas dañinas por negligencia o deliberadas • Procedimientos internos débiles hacen a las aplicaciones susceptibles de ataques

  8. Ataques corporativos Hackers Ataques Automatizados Datos restringidos DoS Fallos de seguridad accidentales Fallos de conectividad Denegación de Servicio (DoS) Virus, Troyanos, y gusanos Importancia de la seguridad en las aplicacionesTipos comunes de problemas

  9. Importancia de la seguridad en las aplicacionesConsecuencias • Virus de correo, fraude financiero, sabotaje de las redes y otros problemas de seguridad derivan en: • Robos de propiedad intelectual • Caídas de sistemas • Pérdidas de productividad • Daños a la reputación • Pérdida de confianza de los clientes • Pérdidas financieras por falta de ingresos

  10. Importancia de la seguridad en las aplicacionesEjemplos (I) • Gusano CodeRed • Inicio de la infección el 19 de julio de 2001 • Infectó a más de 359.000 equipos en 14 horas • Programado para lanzar un ataque DoS a www.whitehouse.gov • Aprovechaba un error de ‘buffer overrun’ conocido de IIS (en Index Server)

  11. Importancia de la seguridad en las aplicacionesEjemplos (II) • ILoveYou • Infecta mediante un archivo adjunto de tipo .vbs que simulaba ser una carta de amor (extensión no visible para usuarios normales) • El email se copia a si mismo a todos los contactos de la agenda • Borra imágenes y archivos .mp3 y corrompe el registro del sistema

  12. Importancia de la seguridad en las aplicacionesEjemplos (III) • Gusano Nimda • Explota la vulnerabilidad ‘Web server folder traversal’ • Se infecta vía email, o mediante conexiones de red abiertas • Crea nuevas conexiones de red que ponen en peligro la seguridad del sistema • Se copia a si mismo a determinado usuarios de la agenda • Mantuvo a Internet ‘bloqueada’ el 18 de septiembre de 2001

  13. Importancia de la seguridad en las aplicacionesEjemplos (IV) • Gusano MyDoom • Se propaga mediante correo electrónico • Adjunta diversos archivos con distinto nombre • Simula ser un mensaje del administrador • El usuario lo abre y sólo ve texto ininteligible en el bloc de notas • Copia un ejecutable preparado para lanzar un DoS contra www.sco.com y www.microsoft.com • Se reenvía modificando el campo from con los usuarios de la agenda

  14. Importancia de la seguridad en las aplicacionesEjemplos (V) • Uso de ‘ingeniería social’ • La mayoría de estos ingenios utiliza la ingeniería social para hacer ‘picar’ a los receptores • Para funcionar confían en que una gran cantidad de usuarios abrirán un determinado correo y quedarán infectados

  15. Importancia de la seguridad en las aplicacionesRetos ¿Necesito seguridad?…

  16. Importancia de la seguridad en las aplicacionesVulnerabilidades comunes • Dos fallos principales de seguridad • Confianza en los datos de entrada • “¡Todos los datos de entrada son culpables hasta que se demuestre lo contrario!” • Son la fuente de los problemas más graves • Buffer Overruns • Inyección de SQL • Cross-site Scripting • Todo lo demás

  17. Agenda • Objetivo • Importancia de la seguridad en las aplicaciones • Prácticas aconsejables de seguridad • Tecnologías de seguridad • Implementación en .NET • Conclusiones

  18. Prácticas aconsejables de seguridadAproximación funcional a la seguridad • Cualquier sistema es tan seguro como el menos seguro de sus componentes • La seguridad ha de ser considerada en todos sus niveles • Durante el diseño, el desarrollo y la puesta en producción • A nivel de la red, de los equipos y de la aplicación

  19. Prácticas aconsejables de seguridadSeguridad durante todo el proyecto Acuerdo sobre los criterios de seguridad Auditoría de seguridad Preguntas de seguridad en las entrevistas Modelo de riesgos Revisión externa Empuje Aprender y refinar Concepto / Requisitos Diseños Completos Planes de pruebaCompletos Código Completo V1.0 Pasos posteriores Revisión de fallos anteriores Uso de guías comunes de seguridad Uso de herramientas Revisión de seguridad Formación del grupo Pruebas de mínimos privilegios

  20. Prácticas aconsejables de seguridadUn marco de seguridad SD3 Arquitectura y código seguros Análisis de riesgos Reducción de vulnerabilidades Seguro por Diseño (Design) Seguro por Defecto (Default) Reducción del posible área de ataque Características no usadas del producto sin habilitar por defecto Requerir mínimos privilegios privilege Proteger, detectar, defender, recuperar, administrar Procesos: How to’s, guías de arquitectura Formación Seguro en la Distribución (Deployment)

  21. Prácticas aconsejables de seguridadQué es el análisis de riesgos • Es un análisis de la aplicación desde el punto de vista de la seguridad • Ayuda a ver al equipo de desarrollo dónde es más vulnerable la aplicación • Determina que riesgos hay que disminuir y cómo hacerlo • Es una parte crucial del proceso de diseño • Es imposible construir sistemas seguros sin un buen conocimiento de los riesgos potenciales • Reduce el coste requerido para asegurar una aplicación • Es más barato encontrar un bug en el diseño y solucionarlo en ese momento que arreglar código a posteriori

  22. Prácticas aconsejables de seguridadProceso de análisis de riesgos • El proceso será similar al siguiente: • Crear un equipo que realizará el análisis • Descomponer la aplicación en sus apartados – analizar su operación mediante diagramas de flujo de datos por ejemplo • Examinar los flujos datos y determinar si existe algún riesgo en cualquier parte del sistema • Numerar los riesgos por orden decreciente de importancia • Escoger cómo responder a cada uno de los riesgos • Seleccionar las técnicas que permitan mitigarlos • Seleccionar las tecnologías apropiadas para cada una de las técnicas seleccionadas

  23. Prácticas aconsejables de seguridadReparto de tareas • La seguridad en las aplicaciones se consigue involucrando a todas las partes implicadas: • Arquitectos de la solución • Desarrolladores • Administradores de los sistemas finales • Es común ver que se contrata un desarrollo y luego no se puede implantar por problemas de seguridad en los sistemas finales • Firewalls, permisos, etc.

  24. Prácticas aconsejables de seguridadLa responsabilidad de los programadores • Los desarrolladores deben contribuir mediante: • Su entendimiento de las técnicas de programación segura existentes • Conociendo cuáles son las vulnerabilidades más comunes y cómo evitarlas • Adoptando prácticas de programación que incorporen conceptos de seguridad desde el principio

  25. Prácticas aconsejables de seguridadConsejos (I) • Utilizar el análisis de riesgos • Identificar las posibles vulnerabilidades durante la fase de diseño • Educación • Aprender sobre los defectos comunes y cómo evitarlos • Entender la aplicación correcta de las tecnologías de seguridad • Revisión del código • Hacer énfasis en código que: • Accede a la red • Se ejecuta por defecto o con privilegios elevados • Utiliza protocolos no autenticados

  26. Prácticas aconsejables de seguridadConsejos (II) • Utilización de herramientas: • Crea herramientas para automatizar las pruebas, a gran escala • La mejor herramienta es ¡tu cabeza! • Por si solas las herramientas no arreglan los problemas • Considera la migración a código .NET • No reinventes la rueda • Evita la encriptación propia - La encriptación es difícil y las soluciones propias raramente son buenas • Utiliza la infraestructura (SSL/IPSec) • Utiliza componentes probados, como CAPICOM o el namespace de Cryptography de .NET

  27. Prácticas aconsejables de seguridadConsejos (III) • No uses el equipo como administrador • Es posible ejecutar cualquier aplicación con usuarios con menos privilegios • Es necesario realizar una configuración más avanzada • Mucha gente no lo usa por decir que no se puede • Muy recomendable si la máquina está conectada a Internet • Guía de configuración: http://msdn.microsoft.com/library/en-us/dv_vstechart/html/tchdevelopingsoftwareinvisualstudionetwithnon-administrativeprivileges.asp

  28. Agenda • Objetivo • Importancia de la seguridad en las aplicaciones • Prácticas aconsejables de seguridad • Tecnologías de seguridad • Implementación en .NET • Conclusiones

  29. Tecnologías de seguridadResumen • Los programadores han de conocer cuáles son y cómo se utilizan: • Encriptación • Comunicación segura • Autenticación • Autorización • Firewalls • Auditoría

  30. Tecnologías de seguridad¿Que es la encriptación? (I) • Es la ciencia que trata la codificación de la información • Protege la identidad de un usuario o sus datos para que no puedan ser leídos • Protege la información para que no pueda ser modificada • Verifica que la información es originada por un determinado usuario

  31. Datos Tecnologías de seguridad¿Que es la encriptación? (II) • Es el proceso de codificación de la información • Una clave es una cadena de bits que varía el resultado de una determinada encriptación • La encriptación sólo es tan fuerte como la fuerza de su clave Clave Algoritmo de encriptación

  32. Datos Datos La clave es conocida por el emisor y el receptor Encriptar Desencriptar Tecnologías de seguridadEncriptación simétrica • Se utiliza la misma clave y el mismo algoritmo para codificar y decodificar la información • Rápida y eficiente • Es difícil intercambiar las claves de manera segura con lo que se modifican frecuentemente

  33. Tecnologías de seguridadEncriptación simétrica. Algoritmos • DES • Relativamente lenta • Clave de 56 bits, no muy segura • Triple DES • Realiza tres operaciones DES. Equivale a tener una clave de 168 bits. Relativamente lenta. Más segura que DES y ampliamente utilizada. • Advanced Encryption Standard (AES) • Claves de 128, 192 y 256 bits. Actualmente el estándar usado por el gobierno norteamericano • International Data Encryption Algorithm (IDEA) • Clave de 128 bit. Requiere una licencia para su uso comercial • RC2 • Claves de 8 a 128 bits. Cifrado basado en ‘streams’.

  34. Tecnologías de seguridadEncriptación asimétrica • Dos claves, una privada y una pública • Los mensajes codificados con la clave pública sólo pueden ser decodificados usando la clave privada y vice versa • La encriptación asimétrica es más segura que la simétrica, pero no tan eficiente Usuario B Usuario A Clave Privada Clave Pública Clave Pública

  35. Tecnologías de seguridad Encriptación asimétrica. Algoritmos • RSA • Claves de 384 a 16384. Utilizada normalmente para codificar datos y crear firmas digitales. Estándar de-facto para codificación pública • Diffie-Helman • Claves de 768 a 1014 bits. Primer algoritmo de clave pública, reemplazado por RSA • DSA • Claves de 512 a 1024 bits. Sólo para firmas digitales

  36. Usuario B Usuario A Datos Datos Datos Algoritmo Hash Valor Hash Si los valores coinciden los datos son válidos Algoritmo Hash Valor Hash Valor Hash Usuario A envía los datos y el hash al Usuario B Tecnologías de seguridad Encriptación. Verificación hash

  37. User B Usuario A Algoritmo Hash Datos Datos Algoritmo Hash Valor Hash Valor Hash Valor Hash Tecnologías de seguridad Encriptación. Firmas digitales Decodificación del Hash con clave pública del Usuario A Si los valores hash coinciden los datos han de venir del Usuario A, es el único que lo puede codificar Codificación del Hash con clave privada del Usuario A

  38. Tecnologías de seguridad Encriptación. Certificados digitales • Un certificado digital vincula una clave pública a una entidad o persona a través de una tercera parte (autoridad de certificación, CA) • Un usuario, equipo, servicio o aplicación crea su par de claves (publica/privada) • La clave pública se envía a la autoridad de certificación de manera segura • La CA verifica la información y, si lo aprueba, firma la clave pública con su clave privada • Un usuario puede entonces verificar, a través de la CA, si la clave pública viene de quien dice venir • Usos típicos • Comunicación wireless 802.1x, certificados digitales, autenticación en Internet, IPSec, firmas de código

  39. IPSec codificación RPC SSL Tecnologías de seguridad Comunicación segura • Son técnicas probadas que utilizan la encriptación para codificar la comunicación en la red • Incluyen: • IPSec, SSL, codificación RPC

  40. Tecnologías de seguridad Comunicación segura. SSL Certificado del Servidor Web 2 Mensaje Navegador SSL Servidor Web 3 4 HTTPS 1 El usuario accede al servidor Web mediante HTTPS El navegador crea una clave de sesión única y la codifica usando la clave pública del servidor Web, generada a partir de un certificado El servidor Web recibe la clave de la sesión y la decodifica mediante su clave privada A partir de ese momento el navegador codifica la información usando la clave pública del servidor 1 2 3 4

  41. DemoCreación de un certificado SSL para un servidor

  42. Tecnologías de seguridad Autenticación • Proceso para obtener las credenciales de un usuario/agente y verificarlas frente a una autoridad • Métodos • Básica, Digest • Firmas y certificados digitales • Integrada • Kerberos v5 • NTLM • Microsoft Passport • Biometría

  43. Tecnologías de seguridad Autenticación. Cuándo usar certificados • En aplicaciones Web • SSL usa certificados X.509 para autenticar el servidor • Opcionalmente el servidor puede requerir que el cliente se autentique con su propio certificado • En aplicaciones distribuidas: • Las aplicaciones pueden usar un canal SSL • El cliente y el servidor se verifican mutuamente con sus certificados • En SmartCards • Los certificados de cliente se almacenan en una tarjeta

  44. Cliente Tecnologías de seguridad Autenticación. Cuándo usar integrada ¿Intranet? No No se puede Firewall Si ¿Windows 2000 O posterior? No NTLM - Autenticación del Servidor Si Integrada ¿Dominio de Active Directory? No Kerberos - Autenticación del Cliente y del servidor Si

  45. DemoDistintos métodos de autenticación con IIS

  46. Tecnologías de seguridad Autorización • Es el proceso de confirmar que un agente autenticado puede realizar distintas tareas • Se aplican derechos sobre los distintos recursos (archivos, bases de datos, etc) • Basados en usuarios • Grupos y roles • Basado en código • Derechos del código

  47. Aplicación Web Base de datos u otro recurso A A B B C C Tecnologías de seguridad Autorización. Modelo de delegación • El cliente se autentica en el primer punto y sus credenciales se pasan a los demás

  48. Aplicación Web Base de datos u otro recurso Rol 1 1 A B Rol 2 2 C Tecnologías de seguridad Autorización. Modelo de confianza • Los clientes se asocian a roles • Dependiendo del rol se usan unas credenciales u otras • El servidor de recursos confía en el de aplicación

  49. Tecnologías de seguridad Firewalls • Los firewalls proporcionan: • Filtrado de paquetes de red • Filtrado de aplicaciones • Auditoria • Los firewalls NO proporcionan: • Protección contra ataques a nivel de aplicación al utilizar HTTP o HTTPS

  50. Tecnologías de seguridad Auditoría (I) • La auditoría permite: • Detectar intrusiones y actividades sospechosas • Mantener un registro legal de actividad • Ayuda a diagnosticar posibles fallos de seguridad

More Related