Azure Bastion: Conexión segura a máquinas virtuales
Hace ya unos meses que MSFT ha publicado una versión preliminar de Azure Bastion, un servicio PaaS que permite conectarnos a nuestros servidores virtuales en Azure (RDP/SSH) de forma segura y utilizando únicamente un navegador y sin tener IP Públicas en los servidores a los cuales nos queremos conectar remotamente.
Esto nos permite no publicar directamente los puerto 3389 (RDP) o 22 (SSH) para administrador nuestros servidores virtuales, porque nos conectamos al Azure Bastion al puerto 443 del servicio y luego internamente nos conectará utilizando el puerto 3389 o 22 de cada servidor, pero esto es tráfico interno entre los servidores y Azure Bastion. Nosotros, como usuarios, únicamente utilizaremos el puerto 443 para conectarnos.
De momento es una versión preliminar, por lo que:
- No está sujeto a SLA alguno
- Sólo está disponible en algunas regiones:
- Oeste de EE. UU.
- Este de EE. UU
- Europa occidental
- Centro-Sur de EE. UU
- Este de Australia
- Este de Japón
- Si tenemos varias vNets debemos configurar Bastion por vNet (no sé si esto en un futuro cambiará)
Las principales características del servicio son las siguientes (texto copiado de MSFT):
- RDP y SSH directamente en Azure Portal: Puede ir directamente a la sesión RDP y SSH en Azure Portal con un solo clic y sin problemas.
- Sesión remota a través de SSL y firewall para RDP/SSH: Azure Bastion usa un cliente web basado en HTML5 que automáticamente se transmite al dispositivo local, para que obtenga la sesión de RDP/SSH a través de SSL en el puerto 443, lo que le permite recorrer los firewalls corporativos de forma segura.
- No se requiere ninguna dirección IP pública en la máquina virtual de Azure: Azure Bastion abre la conexión RDP/SSH a la máquina virtual de Azure con la dirección IP privada en la máquina virtual. No necesita una dirección IP pública en su máquina virtual.
No hay problemas de administración de los NSG: Azure Bastion es un servicio PaaS de Azure de plataforma totalmente administrada que se refuerza internamente para proporcionar una conexión RDP/SSH segura. No es necesario aplicar los NSG en la subred de Azure Bastion. Dado que Azure Bastion se conecta a las máquinas virtuales a través de la dirección IP privada, puede configurar los NSG para permitir RDP o SSH solo desde Azure Bastion. De este modo se evita tener que administrar los NSG cada vez que necesite conectarse de forma segura a las máquinas virtuales. - Protección frente al examen de puertos: Ya no es necesario exponer las máquinas virtuales a Internet pública, las máquinas virtuales están protegidas contra la exploración de puertos por parte de usuarios malintencionados o no autorizados que se encuentran fuera de la red virtual.
- Protección frente a explotaciones de día cero. Protección en un solo lugar: Azure Bastion es un servicio PaaS totalmente administrado de plataforma. Dado que se encuentra en el perímetro de la red virtual, no es necesario preocuparse por proteger cada una de las máquinas virtuales de la red virtual. La plataforma de Azure protege contra ataques de día cero manteniendo el servicio Azure Bastion protegido y siempre actualizado en su lugar.
Ahora que creo que se ha entendido perfectamente que es Azure Bastion, os dejo una infografía para ponerle “cara” a este servicio:
Yo estoy integrando Azure Bastion en la red de LAB que tengo, así que sólo fijaros en la parte de Azure Bastion (emparejamientos y demás no tiene alcance ni obligatoriedad en este articulo). Lo que quiero mostraros es que tengo varias vNets y en cada una de ellas necesito configurar un Azure Bastion para poder conectarme a los servidores de cada vNet.
Pues “explicado” la infografía, veamos como se configura. El proceso es muy sencillo, en menos de 5 minutos tenemos Azure Bastion configurado y operativo.
Como es una versión preliminar, recordar que sólo está en disponible en ciertas regiones, si cumplís ese requisito podemos configurarlo. Este proceso se puede “configurar de dos formas”:
- Configurar previamente Azure Bastion
- Configurar Azure Bastion cuando nos vayamos a conectar a un servidor virtual
Yo voy a configurarlo utilizando el segundo “método”, porque es el resultado final es el mismo y los pasos iguales pero en otro orden. Pues, pues bien, nos vamos al servidor al cual queremos conectarnos utilizando Azure Bastion y nos vamos a la sección de Azure Bastion en donde empezaremos la configuración.
El Azure Bastion debe estar en una subred específica dentro de la vNet, la cual debe tener una subred /27 como mínimo y debe llamarse Azure BastionSubnet, sino la tenemos previamente creada la podemos crear pulsando en Administrar configuración de subred
Ahora pulsamos en + Subred para crear la subred para Azure Bastion
El nombre de la subred se tiene que llamar obligatoriamente AzureBastionSubnet, luego definimos la subred IP que tendrá y pulsamos en Aceptar
Una vez creada, ya la podemos elegir desde la configuración de Azure Bastion. Ahora, debemos elegir una dirección IP Pública que tengamos creada o bien crear una nueva en este momento. Además, el grupo de recursos donde vamos a crear el Azure Bastion y pulsamos en Crear
Una vez completado el proceso, ya podemos conectarnos utilizando Azure Bastion. Ahora, debemos introducir un usuario y contraseña con permisos sobre el servidor al cual nos vamos a conectar y pulsamos en Conectar:
Como previamente tenía marcada la casilla de Abrir en una nueva ventana, debemos permisos las ventanas emergentes y redirecciones desde https://portal.azure.com
Una vez que lo hemos permitido, vemos que hemos iniciado sesión en el servidor desde un navegador (HTML5), en la misma pantalla si pulsamos pestaña que tenemos en la izquierda de la pantalla
Tenemos una solapa con el portapapeles
Si cerramos sesión desde dentro del servidor, veremos que hemos desconectado del servidor en el navegador
Si ahora buscamos otro servidor dentro de la misma vNet, nos vamos a la sección Bastion, podemos conectarnos directamente
Si nos queremos conectar a otro servidor en otra vNet utilizando Bastion, debemos volver a crear dicho servicio
Por último, si vamos a la configuración de Azure Bastion veremos una opción de Sessions, donde podemos ver las sesiones abiertas en este Azure Bastion. En mi caso no puedo más que mostraros esto vacío, porque, aún teniendo sesiones abiertas .. no he sido capaz de conseguir que se muestre ninguna sesión.
Como veis, la configuración es muy sencilla. Lo que personalmente no me convence es el tener que configurar un Azure Bastion por cada vNet. La ventaja real es el poder conectarse directamente desde el navegador, eso me parece genial.
Por último, comentaros que claramente esto tiene un coste: €0,081 por hora (60€/Mes). Si es así, me planteo una pregunta: Azure Bastion & TS Gateway + AzureMFA (próximo artículo).
Espero que os haya sido de utilidad, ahora, como siempre, os toca a vosotros probarlo!!
Jose mendez / 30 octubre, 2019
Hola Santiago, me pareció muy buena la información, de casualidad conoces el tipo de certificado que utiliza Azure Bastion para establecer la conexión, o que tipo de seguridad es la que maneja para establecer la conexión segura.
Saludos..
Santiago Buitrago Reis / Autor / 31 octubre, 2019
Buenos días Jose,
Muchísimas gracias por tu comentario, es un placer leerlo. En cuanto a la seguridad, esto utiliza SSL hasta llegar a la zona de Bastion y se usa para conectarse a la web en HTML donde tienes integrada la sesión RDP, aquí tienes más info:
Remote Session over SSL and firewall traversal for RDP/SSH: Azure Bastion uses an HTML5 based web client that is automatically streamed to your local device, so that you get your RDP/SSH session over SSL on port 443 enabling you to traverse corporate firewalls securely. (https://docs.microsoft.com/en-us/azure/bastion/bastion-overview)
Lo interesante, es que los servidores a los que te vas a querer conectar no necesitan direccionamiento IP Público ni similar, ya se encarga el Bastion de llegar por la red privada, de ahí que haya que crearlo en cada vNet y no tengas uno para todo (que estaría bien por cierto).
Paul / 20 febrero, 2020
Buenos días.
Como siempre ,muy buen articulo.
Santi Bedoya / 6 abril, 2022
Hola Santiago,
Una pregunta, una vez configurado el Bastion, hay forma de deshabilitarlo para que no siga cobrando?
Saludos y gracias.
Santi
Santiago Buitrago Reis / Autor / 9 mayo, 2022
Hola:
NO, la única forma es borrándolo:
az network bastion list
az network bastion delete –name MyBastionHost –resource-group MyResourceGroup
az network public-ip delete -g MyResourceGroup -n MyIp
Yo para esto prefiero utilizar AVD: https://santiagobuitragoreis.azurewebsites.net/acceso-a-tus-maquinas-virtuales-azure-bastion-o-windows-virtual-desktop/
Un saludo