Microsoft Identity Platform, es la nueva versión de plataforma para que las aplicaciones inicien sesión en todas las identidades de Microsoft en Azure AD, obtener tokens para llamar a las APIs de Microsoft y otras API que los desarrolladores hayan creado.
Utiliza para ello, Azure Active Directory para registrar la aplicación y el dialogo de login de Microsoft que podemos personalizar para introducir las credenciales de los usuarios.
En realidad ahora disponemos de 2 versiones de plataforma:
Application Gateway es un balanceador de carga y firewall para aplicaciones web que usa Azure Load Balancer en el nivel de transporte TCP y permite aplicar reglas basadas en URLs para admitir escenarios avanzados y tomar decisiones de enrutamiento basadas en atributos adicionales de una solicitud HTTP.
El servicio de Azure Application Gateway sirve en concreto para:
Afinidad de cookies. Resulta útil cuando se quiere mantener una sesión de usuario en el mismo servidor back-end.
Terminación de SSL. Application Gateway puede administrar los certificados SSL y pasar tráfico sin cifrar a los servidores back-end para evitar la sobrecarga del cifrado y el descifrado. También admite el cifrado de un extremo a otro para las aplicaciones que lo requieran.
Firewall de aplicaciones web. Application Gateway admite un firewall de aplicaciones web sofisticado con supervisión y registro detallados para detectar ataques malintencionados contra la infraestructura de red.
Rutas basadas en reglas de dirección URL. Application Gateway permite enrutar el tráfico en función de patrones de URL, dirección IP y puerto de origen a la dirección IP y puerto de destino. Esto resulta útil cuando se configura una red de entrega de contenido.
Reescritura de encabezados HTTP. Puede agregar o quitar información de los encabezados HTTP de entrada y salida de cada solicitud para habilitar escenarios de seguridad importantes, o bien eliminar información confidencial como los nombres de servidor.
Para entender mejor que ofrece este servicio, veamos este diagrama:
Firewall de aplicaciones web
Este servicio también ofrece un Firewall de aplicaciones web (WAF) que proporciona una protección centralizada contra vulnerabilidades de seguridad comunes OWASP (Open Web Application Security Project). En concreto se basa en el conjunto de reglas básicas (CRS) y el servicio de WAF se actualiza automáticamente para incluir protección frente a nuevas vulnerabilidades sin necesidad de configuración adicional.
Azure AD es el servicio de directorio multitenant que proporciona administración de identidad y acceso en la nube, se trata de una de las piezas claves dentro de la plataforma de Azure para gestión de las identidades y accesos de las aplicaciones y servicios, en este video entenderemos en 5 minutos mediante explicaciones muy sencillas los fundamentos de como funcionan los servicios de Azure AD, Grupos de recursos y activar de RBAC en Microsoft Azure.
Dentro de las características de Azure AD y gestión de identidades encontramos:
Single sign-on
Reverse proxy
Multi-Factor Authentication
Role based access control (RBAC)
Security monitoring, alerts, and machine learning-based reports
Office 365 usa Azure Active Directory (Azure AD), una identidad de usuario basada en la nube y un servicio de autenticación que se incluye con su suscripción a Office 365, para administrar las identidades y la autenticación de Office 365.La configuración correcta de la infraestructura de identidades es fundamental para administrar el acceso de usuarios y los permisos de Office 365 para la organización.
En el anterior post, Roadmap: Web Developer 2018 vimos la lista de necesidades a nivel de skills y tecnologías que un Developer Frontend y Backend actual debe cumplir para estar al día.
Uno de los aspectos más importantes y a la vez más difíciles es el tema de la seguridad en Backend , en el gráfico se pueden observar de varias de ellas como:
oAuth 2.0
OpenId Connect
Tokens
JWT
No vamos a explicar en este articulo, cada una de ellas, porque en internet encontrareis muchos artículos con las explicaciones pertinentes, alguna mejores y otros más confusos pero en general hay mucha documentación al respecto.
Precisamente, hoy quiero compartir una charla presentada por el speaker Nate Barbettini, hablando sobre OAuth 2.0 and OpenID Connect, para mi, una de las mejores que he visto y recomiendo que la veáis si es necesario varias veces porque esta genial.
En el mundo de los analizadores de código estático, todos conocemos Sonarqube, sin duda, uno de los mejores para todo tipo de proyectos, pero cuando queremos analizar la seguridad del código fuente, se queda un poco corto, porque está más enfocado a la calidad del código fuente y análisis de la deuda técnica de los proyectos.
También tenemos herramientas gratuitas como: Security Code Scan y Roslynator que nos ayudan en el analisis de código y seguridad, pero a veces es bueno ejecutar más de una para comparar la información y tener un informe más completo para auditar el codigo.
Puma Scan, este enfocado 100% en la seguridad del código fuente C#, revisa en tiempo real a medida que los equipos de desarrollo escriben código o cada vez que compilan el proyecto. Las vulnerabilidades se muestran de inmediato en el entorno de desarrollo como corrector ortográfico y advertencias del compilador, evitando que los errores de seguridad entren en sus aplicaciones.
Para instalarlo, podemos hacerlo como una extension de Visual Studio o mediante un paquete Nuget y si fuera necesario podemos incluirlo dentro del pipeline CI:
Si estamos publicando una aplicación en servidores de producción como IIS, debemos proteger dentro de nuestro web.config, la cadena de conexión de BBDD para no mostrar usuario y password, para ello, hay varias formas de hacerlo:
1) Usar seguridad integrada “SSPI” y evitar user/password en cadena de conexión:
Si estas publicando WebAPI en un servidor con IIS7, IIS7.5, IIS8 funcionará bien para las peticiones GET y POST con solo crear el sitio y dejarlo funcionando.
Pero encontraras problemas para responder a las peticiones con los verbos PUT y DELETE porque por defecto, el IIS no responde a estos verbos y se tiene que configurar la extensión del protocolo WebDAV o bien desactivarlo y modificar vuestro web.config
Opción 1 – Activar todos los verbos en WebDAV
Abrir el IIS Manager en el servidor donde está la aplicación web
Seleccionar la aplicacion web en el árbol de «sites» que tiene el servicio WebAPI
Seleccionar el «Handler Mappings» de la aplicación en las opciones del IIS
En la lista que aparece en pantalla, seleccionar double click en «WebDAV»
Pulsar click en «Request Restrictions»
En el tabulador «Verbs» seleccionar «All verbs»
Pulsar OK para guardar los cambios
En la imagen se muestra donde están las opciones a configurar en nuestro IIS:
Opción 2 – Desactivar protocolo WebDAV en archivo web.config
Desactivar el protocolo WebDAV y permitir las opciones mediante
El motivo es que el módulo WebDav estaba interfiriendo en las peticiones, si ponemos esto en nuestro config se soluciona el problema.
Aqui os dejo un video de seguridad informatica del evento realizado en Madrid por la Red Innova 2012, de la mano de cracks como Chema Alonso, Nico Waisman, Javier Santiso.
Interesante información para que la gente común sepa como funciona la compra-venta de exploits en el mercado negro, lo que se paga por ellos y como los gobiernos son uno de los principales compradores y promotores de este tipo de software.
Excelentes videos donde Chema Alonso, MVP de Microsoft, nos habla de hackers, seguridad informatica en general y seguridad en aplicaciones web, sin lugar a dudas, una de las mejores explicaciones que he visto.
Según las propias palabras de Chema Alonso: «No es la primera vez que me dicen que si soy un actor o un cómico aprende los chistes en lugar de ser informático. Tanto es así, que ya creé de No Lusers en el que explicaba que sí, que es verdad, que lo mío aprendido de memoria, como un monólogo. Pero… qué le vamos a hacer,la vida.»
«Os dejo aquí las charlas que di en Creo en Internet, Internet es tuyo y Innova, donde tenéis algunas de esas charlas generalistas de seguridad con me gano esa «¿mala?» fama… }:P»
:::
La Red Innova
:::
Inseguridad de las redes telemáticas
:::
Como nos atacan los hackers y consiguen el control de nuestro PC
Recientemente he tenido que realizar una serie de rutinas para encriptar y desencriptar datos en una aplicación web y buscando por internet he visto una serie de recursos y enlaces interantes en ingles y castellano que dejo aquí para compartir:
El concepto de «impersonación o suplantación» es la acción de ejecutar una aplicación ASP.NET con el usuario que nosotros indicamos desde nuestra aplicación web y no dejando que sea el servidor IIS quien asigne siempre el mismo usuario (el definido en el fichero machine.config).
Esto nos garantiza que cada aplicación se ejecuta con los permisos de usuario que realmente le corresponden y evitamos riesgos al dar solo los privilegios necesarios a cada aplicacion.
Storing Your Secret Data in Windows
An article by Michael Howard describing several techniques, which can be used to store sensitive information in Windows®.
Securing SQL Connection String
This paper was written by Dmitry Dessiatnikov and is available from the GIAC (Global Information Assurance Certification) practical repository at SANS Institute. The paper summarizes different options, which can be used to protect SQL connection strings.
Safeguard Database Connection Strings and Other Sensitive Settings in Your Code
In this MSDN Magazine article, Alek Davis explains the fundamentals of data protection and compares a variety of techniques that can be used to protect sensitive application data. It provides an assessment of such techniques and technologies as data hiding, Local Security Authority (LSA) API, and Data Protection API (DPAPI). It also covers such topics as symmetric-key encryption, hashing, and protection of encryption keys.
ASP.NET: Connection Strings
An article by Steven Smith, which discusses different options of storing connection strings used by ASP.NET applications.
Data Access Security
A very informative chapter from the «Building Secure ASP.NET Applications» publication mentioned above. Check the topic «Storing Database Connection Strings Securely»; it includes a very good description of the Data Protection API (DPAPI) and other data protection technologies.
CONFIG Files, XCOPY, and Security
This article explains security implications relevant to storing sensitive settings of applications distributed via XCOPY deployment.
Ofuscación
Code obfuscation is a technology, which makes .NET application binaries harder to decompile. If you want to protect your .NET application from reverse engineering, you may consider obfuscation. Different aspects of code obfuscation are covered in the following online articles:
Protect Your Code Investment
This article by Jason Bock illustrates how .NET applications can be reverse engineered and how obfuscation can protect the application code.
How to Encrypt and Decrypt Data Using a Symmetric Key
Illustrates how to (a) generate a persistent (i.e. non-random) symmetric key and (b) use this key to encrypt and decrypt data. This sample is intended to help novice users get a grasp on encryption and decryption. It uses Rijndael (AES) algorithm, but you can easily adjust it to use Triple-DES or any other symmetric key algorithm supported by .NET.
How to Encrypt Data With Salt
Explains how to use salt when encrypting the same plain text value with the same symmetric (Rijndael) key to generate different cipher text. This approach eliminates the need to use different initialization vectors or keys for the purpose of avoiding dictionary attacks.
How to Create an Encryption Library
This MSDN example can help you build a reusable encryption library for different symmetric key algorithms. It is more robust than the previous example, but may not be as straight forward.
How to Store an Encrypted Connection String in the Registry
This MSDN example can be used to encrypt and store sensitive data in the Windows® registry. It explains how to build a GUI application, which can be used to encrypt data in the registry, and retrieve these data from an ASP.NET application.
How to Hash Data with Salt
Illustrates how to (a) hash a text string with a random salt value using MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hashing algorithms and (b) verify a hash against a plain text value. If you just want to use MD5 or SHA1 hashing algorithm, you can simply call the HashPasswordForStoringInConfigFile method of the FormsAuthentication class, which belongs to the System.Web.Security namespace.
Generador de Contraseñas Aleatorias en C# y VB.Net
How to Generate a Random Password
Shows how to generate a random password, which consists of a combination of 7-bit ASCII alpha-numeric characters and special symbols, but does not contain ambiguous characters (such as [1,I,l]).