1 / 28

Rodrigo Salinas Arquitecto / Consultor / Trainer .NET, Java EE, Seguridad & Business Intelligence

Rodrigo Salinas Arquitecto / Consultor / Trainer .NET, Java EE, Seguridad & Business Intelligence Gerente de Desarrollo Tecnológico de Direkto S. A. http://www.rodrigosalinas.cl. Principios de la Seguridad In-Depth Seguridad In-Depth en ASP.NET Ataques y Debilidades más comunes

vielka-diaz
Download Presentation

Rodrigo Salinas Arquitecto / Consultor / Trainer .NET, Java EE, Seguridad & Business Intelligence

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. Rodrigo Salinas Arquitecto / Consultor / Trainer .NET, Java EE, Seguridad & Business Intelligence Gerente de Desarrollo Tecnológico de Direkto S. A. http://www.rodrigosalinas.cl

  2. Principios de la Seguridad In-Depth • Seguridad In-Depth en ASP.NET • Ataques y Debilidades más comunes • ¿Cómo prevenir esos ataques? • Buenas Prácticas de Seguridad • Herramientas de apoyo • Patrones de Diseño de Seguridad

  3. “Intelectuales resuelven problemas. Genios los previenen.” Albert Einstein.

  4. Seguridad no es apenas uso de hardware • Aplicaciones suelen sufrir de vulnerabilidades relacionadas más bien con el desarrollo, no solo con las comunicaciones • La seguridad por lo tanto se debe aplicar a todos los niveles de la organización

  5. Confidencialidad • Autenticación • Integridad • No-repudiación • Autorización • Confianza • Privacidad

  6. Autenticación de Usuarios Configuración Segura Protección de Información Confidencial Prevención de Manipulación de Parámetros Manejo de Excepciones Protección de Información Confidencial Prevención de Robos de Sesiones o de Cookies Autorización de Usuarios Auditoría y Logging de Actividades y Transacciones Validación de la Entrada Autenticación y Autorización de Identidades transferidas Encriptación o Hashing de Datos Confidenciales

  7. Es esencial que el proceso de autenticación del usuario de un sistema web sea seguro • El mecanismo de manejo de sesiones utilizado para continuar reconociendo a un usuario durante su uso de la aplicación debe ser igualmente bien protegido

  8. ¿Cómo se envían las credenciales del usuario? • ¿Cómo se almacenan las credenciales? • ¿Cómo son verificadas las credenciales? • ¿Cómo es autenticado el usuario después del login inicial?

  9. Separación de áreas públicas y restringidas • Use pólizas de bloqueo de cuentas de usuario • Establezca contraseñas expirables • Siempre debe ser posible deshabilitar cuentas • No almacene las contraseñas, use hashes y salts • Requiera contraseñas seguras • No envíe contraseñas como texto plano a través de la red • Proteja las cookies de autenticación

  10. ¿Se usará Impersonation / Delegation o Trusted Subsystems para el acceso a recursos corporativos? Ambas estrategias tienen sus ventajas y desventajas • Windows 2003 Server soporta además Constrained Delegation

  11. using System.Security.Principal; ... WindowsIdentity wi = new WindowsIdentity(usuario@nombreDominio); WindowsImpersonationContext ctx = null; try { ctx = wi.Impersonate(); // El Thread actual de procesamiento está impersonado. } catch { // Aquí se previenen las propagaciones de excepciones. } finally { // Se debe asegurar que la impersonación es terminada. ctx.Undo(); }

  12. Utilice múltiples Gatekeepers (IPSec, ACL, URL Authorization) • Restrinja el acceso a recursos del sistema • Considere implementar Autorización Granular (Impersonation)

  13. Asegure las interfaces de administración • Asegure el almacén de configuración • Mantenga privilegios granulares de administración • Use cuentas de Servicio y de Proceso separadas y con Privilegios Mínimos (Least Privileged)

  14. Secretos • No los almacene si es posible • Menos tenerlos en código • No almacene nada en texto plano, use encriptación • No usar LSA (Local Security Authority) • Use la interfaz DPAPI de Windows para manejar secretos • Privacidad • Retorne información sensible encriptada solo cuando es requerida, evitando tenerla en caché • Asegure el canal (SSL, IPSec) • Considere asegurar el mensaje cuando éste debe pasar por varios intermediarios o cuando la Auditoría y la No-Repudiación son requerimientos importantes • No almacenar información importante en cookies persistentes • Evite el protocolo HTTP-GET para pasar información sensible

  15. Proporciona: • Confidencialidad • No-Repudiación • Integridad • Autenticación • Buenas Prácticas: • No desarrolle su propio algoritmo • Mantenga la data desencriptada cerca del algoritmo

  16. ¿Cómo elegir el algoritmo apropiado? • Encriptación Simétrica (AES, 3DES) • Encriptación Asimétrica (DSA, RSA) • Hashing (MD5, SHA1, SHA256, HMACSHA256) • ¿Cómo elegir el tamaño de llave apropiado? • ¿Cómo generar números aleatorios? • Use RNGCryptoServiceProvider, no Random • ¿Cómo usar passwords para generar claves? • Use Rfc2898DeriveBytes el cual soporta RSA Password-Based Key Derivation Function version 2 (PBKDF2)

  17. using System.Security.Cryptography; ... // Cree el salt (random bytes) usando RNGCryptoServiceProvider. byte[] salt = new byte[8]; new RNGCryptoServiceProvider().GetBytes(salt); // Obtenga los bytes derivados de la password y del salt. Rfc2898DeriveBytes passwordBytes = new Rfc2898DeriveBytes ("P@ssword!", salt); // Cree un objeto TripleDESCryptoServiceProvider. TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); // Obtenga la llave derivada de largo 16 bytes y // agréguela a la propiedad Key. tdes.Key = passwordBytes.GetBytes(16); // Use el objeto TripleDESCryptoServiceProvider para encriptar // y desencriptar la información. ...

  18. Utilice SSL para proteger cookies de autenticación de sesión • Encripte el contenido de las cookies de autenticación • Limite el tiempo de vida de la sesión • Proteja el estado de la sesión del acceso no autorizado

  19. Encripte estados de cookies sensibles • Asegúrese de que usuarios no pasen a llevar sus restricciones • Valide todos los valores enviados por el usuario • No confíe en el HTTP Header

  20. No filtre información hacia el usuario • Mande el detalle de los errores hacia el log • Atrape todas las excepciones

  21. Audite y escriba logs desde todas las capas de la aplicación • Considere el flujo de la identidad • Escriba a log eventos clave • Asegure los archivos de log • Respalde y analice los logs frecuentemente

  22. El Open Web Application Security Project (www.owasp.org) es una organización sin fines de lucro • Proporciona mínimos standards para la seguridad de aplicaciones web • Contiene mucha documentación acerca de las mejores prácticas de seguridad • Tiene links a varias herramientas de aseguramiento de aplicaciones • Publica una lista de los principales tipos de ataques a aplicaciones web (TOP TEN)

  23. Unvalidated Input • Broken Access Control • Broken Authorization & Session Management • Cross Site Scripting (XSS) • Buffer Overflows • Injection Flaws • Manejo de Errores Inapropiados • Almacenamiento Inseguro • Denial-Of-Service (DOS) • Administración de Configuración Insegura

  24. Minimizar el área de superficie de ataque • Seguro por defecto • Principio del Least Privilege • Principio de Defense in Depth • Fallo Seguro • Sistemas externos son inseguros • Separación de deberes • No confiar en la seguridad solamente mediante Obfuscation • Simplicidad • Corregir sin demora items de seguridad

  25. Microsoft Anti-XSS Library • Best Practices Analyzer • FxCop

  26. Patrones de Disponibilidad de Aplicación • Checkpointed System • Standby • Comparator-Checked Fault-Tolerant System • Replicated System • Error Detection/Correction • Patrones de Sistemas Protegidos • Protected System • Policy • Authenticator • Subject Descriptor • Secure Communication • Security Context • Security Association • Secure Proxy

More Related