Azure: Microsoft Identity Platform en 5 minutos

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.

Información general: active-directory/develop/v2-overview

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:

  1. Azure Active Directory para desarrolladores (v1.0)
  2. Plataforma de identidad de Microsoft (v2.0)

Aqui os dejo un video de presentación de Microsoft Identity:

 

New App registrations experience

Aquí encontrareis la información con las noticias y novedades de esta plataforma para registrar aplicaciones dentro de Azure AD.

Link: new-app-registrations-experience-is-now-generally-available

 

 

 

 

Azure: Application Gateway para Aplicaciones Web en 5 minutos

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.

Mas info: azure/application-gateway/waf-overview

Video para entender como funciona Application Gateway con AppServices:

¿Cuanto cuesta Application Gateway?

Ese servicio se factura según estos criterios:

  • Cantidad de tiempo que una puerta de enlace está aprovisionada y disponible.
  • Cantidad de datos que se procesan (ver volumetrías).
  • Detalle de precios: pricing/details/application-gateway

Link Oficial: https://azure.microsoft.com/es-es/services/application-gateway

Azure: Identidades y accesos en Azure AD en 5 minutos

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
  • Consumer identity and access management
  • Device registration
  • Privileged identity management
  • Identity protection
  • Hybrid identity management/Azure AD connect
  • Azure AD access reviews

Link Oficial: fundamentals/identity-management-overview

Precios y Ediciones

Azure AD tiene 4 ediciones segun el modelo de precios tendremos más caracteristicas:

  • Free: No tiene ningun coste (ver limitaciones en web)
  • Basic/Office365: ver caracteristicas en web
  • Premium P1: ver caracteristicas en web
  • Premium P2: ver caracteristicas en web
  • La edicion Free esta incluida con una suscripción de Azure.

Info Precios: https://azure.microsoft.com/es-es/pricing/details/active-directory

 

Modelos de identidad de Office 365

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.

  • Identidad solo de nube
  • Identidad híbrida

Mas info: https://docs.microsoft.com/es-es/office365/enterprise/about-office-365-identity

Mensaje de «Access to Azure Active Directory» en Azure, explicacion es este link: https://stackoverflow.com/questions/38680483/how-to-remove-or-cancel-access-to-azure-active-directory-subscription

Seguridad Web: OAuth 2.0 and OpenID Connect

openid-logoEn 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.

Que la disfrutéis!!

DevOps: Puma Scanner Analyzer for C#

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:

PM > Get-Project -All | Install-Package Puma.Security.Rules

Para configurarlo, hacerlo como explican en la wiki del enlace oficial: https://github.com/pumasecurity/puma-scan/wiki/Installation

Video DevSecOps con Puma Scan de Eric Johnson

Un video genial de como detectar vulnerabilidades en codigo fuente con Puma.

 

 

Aqui dejo la lista de las vulnerabilidades que detecta:

  • SEC0001 – Debug Build Enabled
  • SEC0002 – Custom Errors Disabled
  • SEC0004 – Forms Authentication: Cookieless Mode
  • SEC0005 – Forms Authentication: Cross App Redirects
  • SEC0007 – Forms Authentication: Weak Timeout
  • SEC0008 – Header Checking Disabled
  • SEC0009 – Version Header Enabled
  • SEC0010 – Event Validation Disabled
  • SEC0011 – View State Mac Disabled
  • SEC0012 – Request Validation Disabled
  • SEC0013 – View State Encryption Disabled
  • SEC0014 – Insecure HTTP Cookies
  • SEC0015 – Cookies Accessible Via Script
  • SEC0016 – Cleartext Machine key
  • SEC0020 – Weak Session Timeout
  • SEC0021 – State Server Mode
  • SEC0024 – Unencoded Response Write
  • SEC0100 – Raw Inline Expression
  • SEC0101 – Raw Binding Expression
  • SEC0102 – Raw Razor Method
  • SEC0103 – Raw WriteLiteral Method
  • SEC0104 – Unencoded Literal Text
  • SEC0105 – Unencoded Label Text
  • SEC0025 – Weak Algorithm: DES
  • SEC0026 – Weak Cipher Mode: ECB
  • SEC0027 – Weak Algorithm: MD5
  • SEC0028 – Weak Algorithm: SHA1
  • SEC0115 – Insecure Random Number Generator
  • SEC0029 – Deserialization: Binary Formatter
  • SEC0030 – Deserialization: Newtonsoft JSON
  • SEC0106 – SQL Injection: Dynamic LINQ Query
  • SEC0107 – SQL Injection: ADO.NET
  • SEC0108 – SQL Injection: Dynamic EF Query
  • SEC0114 – LDAP Injection Directory Entry
  • SEC0117 – LDAP Injection Path Assignment
  • SEC0118 – LDAP Injection Directory Searcher
  • SEC0119 – LDAP Injection Filter Assignment
  • SEC0017 – Identity Weak Password Complexity
  • SEC0018 – Identity Password Lockout Disabled
  • SEC0019 – Missing AntiForgery Token Attribute
  • SEC0022 – Model Request Validation Disabled
  • SEC0023 – Action Request Validation Disabled
  • SEC0109 – Unvalidated MVC Redirect
  • SEC0110 – Unvalidated Web Forms Redirect
  • SEC0111 – Path Tampering: MVC File Path Result
  • SEC0112 – Path Tampering: Unvalidated File Path
  • SEC0113 – Certificate Validation Disabled
  • SEC0116 – Path Tampering: Unvalidated File Path

Link: https://www.pumascan.com/rules.html#configuration

Información y Versiones

Puma Scan dispone de 2 versiones: Community (free) y Pro Edition (pay) con sus caracteristicas: https://pumascan.com/pro.html

Nota: En las actualidad soporta .NET Core y contenedores Docker.

 

 

 

 

IIS: Proteger connectionstring y passwords en web.config

iis7-banner

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:

<configuration>
 <connectionStrings>
 <add name=”SqlServices” connectionString=”Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;” />
 </connectionStrings>
 </configuration

2) Encriptar la cadena de conexión(ver enlace codeproject Tips):

Framework: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
ocultar: ASPNET_REGIIS -pef “connectionStrings” “c:\appweb\EncryptWebConfig”
mostrar: ASPNET_REGIIS -pdf “connectionStrings” “c:\appweb\EncryptWebConfig”

 <CipherData>
 <CipherValue>42IPPRUjJxCNDHEBLCAJI4/NyLpLueZSBzUXO69lVdZU8+nLpxO+opnbZNxqddyzNnbCO1Uk2Da3ljExkqnLIxT2zs90JAhZvJ5ljIgCipq7ZEp7zHOpvTH9fBGoZJJWhgdddOrHZsLDE9mILjlvBHDhPQrYcMHtY6oLIbxJq92it82iBJv0fS7v1S/o0p4hAtfky+6hXCZWSKUJHr88NDrKe2EEK3mazD2QD5Ozf/w=</CipherValue>
 </CipherData

3) Para otro tipos de password que esten en appSetting, podemos usar esta técnica:

<appSettings file="..\..\AppSettingsSecrets.config">
   <add key="webpages:Version" value="3.0.0.0" />
   <add key="webpages:Enabled" value="false" />
   <add key="ClientValidationEnabled" value="true" />
   <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

MS-Link: Prácticas recomendadas para implementar las contraseñas y datos confidenciales en applicaciones

Espero que sea de utilidad.

IIS: WebDAV interfiere peticiones PUT y DELETE en servicio WebApi

iis7-banner

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

  1. Abrir el IIS Manager en el servidor donde está la aplicación web
  2. Seleccionar la aplicacion web en el árbol de «sites» que tiene el servicio WebAPI
  3. Seleccionar el «Handler Mappings» de la aplicación en las opciones del IIS
  4. En la lista que aparece en pantalla, seleccionar double click en «WebDAV»
  5. Pulsar click en «Request Restrictions»
  6. En el tabulador «Verbs» seleccionar «All verbs»
  7. Pulsar OK para guardar los cambios

En la imagen se muestra donde están las opciones a configurar en nuestro IIS:

iis7-handler-webdav

Opción 2 – Desactivar protocolo WebDAV en archivo web.config

Desactivar el protocolo WebDAV y permitir las opciones mediante

Seguridad Ofensiva y Defensiva

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.

:::

Todos los videos del evento 2012: aqui

Que los disfruteis!!

Seguridad Informatica by Chema Alonso

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

:::

Los estandares en internet

:::

100% Recomendados – Que los disfruteis…

Fuente noticia: http://www.elladodelmal.com/2011/11/hacker-comico.html

Seguridad en Aplicaciones.Net

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:

Seguridad de aplicaciones Web ASP.NET

Impersonation in ASP.NET

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.

 

Cadenas de Conexion y Bases de Datos

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:

Encriptar y Desencriptar Datos

  • 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 Use DPAPI to Encrypt and Decrypt Data
    Demonstrates how to encrypt and decrypt data using the Data Protection API (DPAPI).

Algoritmos Hashing

  • 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.
  • How to Use Forms Authentication with SQL Server
    This MSDN example can help you implement authentication mechanism using password hashes stored in a database.

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]).