Uso de Azure Bastion para acceso seguro a máquinas virtuales

Uso de Azure Bastion para acceso seguro a máquinas virtuales

01/04/2025

Este artículo técnico y educativo tiene como objetivo guiar a los analistas de seguridad, administradores de TI e ingenieros de sistemas en la implementación y configuración de Azure Bastion para el acceso seguro a máquinas virtuales (VM) en Azure. In a cloud environment, security of access to VMs is essential to protect resources and data. Tradicionalmente, acceder a las máquinas virtuales a través de RDP (Protocolo de escritorio remoto) o SSH (Secure Shell) requería exponer los puertos públicos a Internet, lo que aumentaba significativamente la superficie de ataque. Azure Bastion ofrece una solución sólida y segura para eliminar esta exposición al proporcionar acceso seguro sin necesidad de VPN o IP públicas [1].

Introducción

La migración de infraestructuras a la nube ha traído numerosos beneficios en términos de escalabilidad y flexibilidad. Sin embargo, la seguridad sigue siendo una de las principales preocupaciones. El acceso a las máquinas virtuales es un punto crítico, ya que suelen ser el corazón de muchas aplicaciones y servicios. Exponer los puertos RDP (3389) o SSH (22) directamente a Internet es una práctica de seguridad desaconsejable, ya que los convierte en objetivos fáciles para ataques de fuerza bruta y otros exploits [2].

Azure Bastion es un servicio PaaS (plataforma como servicio) totalmente gerenciado que proporciona su red virtual. Le permite conectarse a máquinas virtuales en su red virtual directamente desde Azure Portal, usando RDP y SSH, sin la necesidad de IP públicas en las VM, agentes instalados en las VM o clientes/configuraciones especiales en su máquina local. Bastion actúa como un proxy seguro, enrutando el tráfico RDP/SSH a través de una conexión TLS (Transport Layer Security) segura al navegador del usuario, protegiendo las máquinas virtuales de la exposición directa a Internet [3].

Esta guía práctica cubrirá los requisitos previos, cómo aprovisionar y configurar Azure Bastion, cómo conectarse a máquinas virtuales Windows y Linux mediante RDP y SSH, cómo administrar sesiones y cómo probar y validar el acceso seguro. Se proporcionarán instrucciones paso a paso, ejemplos prácticos y explicaciones concisas para que el lector pueda implementar, probar y validar estas características. Además, se discutirán consejos de seguridad, comprobaciones de cumplimiento y mejores prácticas para garantizar un acceso remoto seguro y eficiente a sus máquinas virtuales, de forma autónoma, profesional y confiable.

¿Por qué Azure Bastion es fundamental para el acceso a las máquinas virtuales?

  • Seguridad mejorada: Elimina la necesidad de IP públicas en las máquinas virtuales, protegiéndolas contra ataques directos desde Internet. El acceso es vía TLS a través del navegador.
  • Acceso simplificado: se conecta a las máquinas virtuales directamente desde Azure Portal, sin la necesidad de clientes RDP/SSH nativos o VPN.
  • Zero Trust: Se alinea con los principios de Zero Trust, asegurando que el acceso esté siempre verificado y autorizado, independientemente de la ubicación del usuario.
  • Auditoría y monitoreo: Le permite monitorear y administrar sesiones, con la opción de grabar sesiones (disponible en el SKU Premium) para fines de auditoría y cumplimiento.
  • Costo y complejidad reducidos: como servicio PaaS totalmente administrado, elimina la necesidad de administrar sus propios jump boxes o VPN complejas.
  • Protección de escaneo de puertos: las máquinas virtuales no tienen IP públicas, lo que las hace invisibles para los escáneres de puertos y los robots maliciosos en Internet.

Requisitos previos

Para implementar Azure Bastion, necesitará los siguientes elementos:

  1. Suscripción activa de Azure: una suscripción de Azure para crear y administrar recursos.
  2. Acceso administrativo: una cuenta con la función de "Propietario" o "Colaborador" en la suscripción o grupo de recursos donde se encuentran las máquinas virtuales.
  3. Azure Virtual Network (VNet): una red virtual existente que contiene las máquinas virtuales a las que desea conectarse.
  4. Subred dedicada para Azure Bastion: una subred dentro de su VNet con el nombre "AzureBastionSubnet" y un prefijo de al menos "/27" (por ejemplo, "10.0.2.0/27"). Esta subred es exclusiva de Bastion y no se puede utilizar para otros recursos [4].
  5. Máquinas virtuales (VM): máquinas virtuales Windows o Linux existentes en la misma VNet (o VNets emparejadas) a las que desea conectarse.

Paso a paso: configurar Azure Bastion

Aprovisionemos Azure Bastion y usémoslo para conectarnos a una máquina virtual.

1. Creación de la subred AzureBastionSubnet

antese implementar Bastion, necesita crear una subred dedicada.

  1. Abra su navegador y navegue hasta el portal de Azure: https://portal.azure.com.
  2. Inicie sesión con una cuenta que tenga los permisos necesarios.
  3. En el campo de búsqueda superior, escriba "Redes virtuales" y selecciónelo de los resultados.
  4. Seleccione la red virtual donde se encuentran sus máquinas virtuales.
  5. En el panel de navegación izquierdo, en "Configuración", seleccione Subredes.
  6. Haga clic en +Subred.

  7. Agregar subred:

    • Nombre: escriba AzureBastionSubnet (este nombre es obligatorio).
    • Rango de direcciones de subred: proporcione un rango de direcciones con un prefijo de al menos /27 (por ejemplo, 10.0.2.0/27).
    • Deje otras configuraciones por defecto.
  8. Haga clic en Guardar.

    • Explicación: AzureBastionSubnet es donde se implementará el servicio Azure Bastion. Es fundamental que el nombre sea exactamente "AzureBastionSubnet" para que el servicio pueda aprovisionarse correctamente.

2. Aprovisionamiento de Azure Bastion

Ahora que la subred está lista, podemos implementar el servicio Bastion.

  1. En Azure Portal, en el campo de búsqueda superior, escriba "Bastion" y selecciónelo de los resultados.
  2. Haga clic en + Crear.

  3. Conceptos básicos:

    • Suscripción: Selecciona tu suscripción.
    • Grupo de recursos: seleccione el mismo grupo de recursos que su VNet.
    • Nombre: asigne un nombre a su instancia de Bastion (por ejemplo, myBastionHost).
    • Región: seleccione la misma región que su VNet.
    • Nivel: seleccione Básico (para RDP/SSH básico) o Estándar (para funciones adicionales como grabación de sesiones, uso compartido de enlaces, etc.). Para esta guía, usaremos "Básico".
  4. Red virtual:

    • Red virtual: seleccione la VNet donde creó AzureBastionSubnet.
    • Subred: AzureBastionSubnet se seleccionará automáticamente.
    • Dirección IP pública: Haga clic en Crear nuevo. Asigne un nombre a la IP pública (por ejemplo, myBastionPublicIP). Esta IP pública es para el servicio Bastion y no está expuesta a sus máquinas virtuales.
  5. Haga clic en Revisar + crear y luego en Crear.

    • Explicación: El aprovisionamiento de Azure Bastion puede tardar de 5 a 10 minutos. Una vez implementado, estará listo para usarse para acceder a sus máquinas virtuales.

3. Conexión a una máquina virtual Windows a través de RDP

Conectémonos a una máquina virtual Windows sin exponer su puerto RDP.

  1. En Azure Portal, navegue hasta su Windows VM.
  2. En el panel de navegación izquierdo, seleccione Conectar.
  3. Seleccione Bastión.
  4. Ingrese sus credenciales de usuario y contraseña de Windows VM.
  5. Haga clic en Conectar.

    • Acción esperada: se abrirá una nueva pestaña del navegador y verá el escritorio de su máquina virtual de Windows. La conexión se basa completamente en HTML5 en el navegador.

4. Conexión a una máquina virtual Linux a través de SSH

Conectémonos a una máquina virtual Linux sin exponer su puerto SSH.

  1. En Azure Portal, navegue hasta su VM Linux.
  2. En el panel de navegación izquierdo, seleccione Conectar.
  3. Seleccione Bastión.
  4. Elija el "Tipo de autenticación": "Nombre de usuario y contraseña" o "Clave privada SSH".
    • Si es "Nombre de usuario y contraseña", ingrese sus credenciales de VM Linux.
    • Si es "Clave privada SSH", cargue su archivo de clave privada (.pem o .ppk).
  5. Haga clic en Conectar.

    • Acción esperada: se abrirá una nueva pestaña del navegador y verá la terminal de su máquina virtual Linux, lo que le permitirá ejecutar comandos SSH.

Validación y pruebas

Es fundamental validar que el acceso a través de Azure Bastion funcione según lo esperado y que no se pueda acceder a las máquinas virtuales de otras formas.

1. Comprobación de la conectividad del bastión

  1. Escenario: intente acceder a sus máquinas virtuales Windows y Linux mediante Azure Bastion, según los pasos 3 y 4 anteriores.
  2. Acción esperada: Las conexiones RDP y SSH deben establecerse correctamente a través del navegador.
  3. Verificación:
    • Confirme que puede interactuar con el escritorio de la VM de Windows y ejecutar comandos en la terminal de la VM de Linux.

2. Comprobación de la inaccesibilidad directa de las máquinas virtuales

  1. Escenario: intente acceder a sus máquinas virtuales directamente desde Internet mediante un cliente RDP o SSH, apuntando a la IP pública de la máquina virtual (si existe) o a la IP privada (si está fuera de la red virtual).
  2. Acción esperada: Los intentos de conexión directa deberían fallar ya que los puertos RDP/SSH no deberían exponerse públicamente.
  3. Verificación: *Si sus máquinas virtuales tienen IP públicas, verifique las reglas del grupo de seguridad de red (NSG) asociadas con la interfaz de red de la máquina virtual o la subred de la máquina virtual. Asegúrese de que los puertos 3389 (RDP) y 22 (SSH) no estén abiertos a "Cualquiera" o "Internet".
    • Idealmente, las máquinas virtuales a las que se accede a través de Bastion no deberían tener IP públicas asociadas.

3. Monitoreo de sesión de bastión (SKU estándar)

Si aprovisionó Bastion con el SKU estándar, puede monitorear las sesiones activas.

  1. En Azure Portal, navegue hasta su recurso Azure Bastion (myBastionHost).
  2. En el panel de navegación izquierdo, en "Monitoreo", seleccione Sesiones.
  3. Verá una lista de sesiones RDP y SSH activas, incluido el usuario, la IP de origen y la VM de destino.

Consejos de seguridad y mejores prácticas

  • Eliminar las IP públicas de las máquinas virtuales: después de configurar Azure Bastion, elimine las IP públicas de las máquinas virtuales. Este es el principal beneficio de seguridad de Bastion.
  • Configure los NSG adecuadamente: asegúrese de que los grupos de seguridad de red (NSG) de sus subredes de VM y AzureBastionSubnet estén configurados correctamente para permitir solo el tráfico necesario. Bastion necesita acceso a los puertos RDP/SSH privados de las VM, pero las VM no necesitan acceso entrante público.
  • Principio de privilegio mínimo: Asigne solo los permisos necesarios para que los usuarios puedan conectarse a las máquinas virtuales a través de Bastion. Azure RBAC se puede usar para controlar quién puede usar Bastion.
  • Autenticación sólida: utilice siempre una autenticación sólida para sus credenciales de VM. Combínelo con Azure AD para autenticación y, si es posible, acceso condicional para requerir MFA para acceder a Azure Portal, que a su vez controla el acceso a Bastion.
  • Grabación de sesiones (SKU Premium): para entornos que requieren auditoría y cumplimiento estricto, considere usar el SKU Premium de Azure Bastion para grabar sesiones RDP y SSH. Esto proporciona un registro visual de lo que se ha hecho en las máquinas virtuales.
  • Monitoreo de registros: supervise los registros de actividad de Azure para Bastion y los registros de seguridad de sus máquinas virtuales para detectar actividades sospechosas o intentos de acceso no autorizados.
  • Actualizaciones y parches: mantenga sus máquinas virtuales actualizadas con los últimos parches de seguridad para mitigar las vulnerabilidades internas.

Solución de problemas comunes

  • No puedo ver la opción Bastion cuando intento conectarme a la VM:
    • Verifique que Azure Bastion se haya aprovisionado en la misma VNet (o VNet emparejada) que la VM.
    • Asegúrese de que AzureBastionSubnet exista y tenga el prefijo de dirección correcto (/27 o mayor).
    • Compruebe si Bastion está en estado "En ejecución" en Azure Portal.
  • Error de conexión RDP/SSH a través de Bastion:
    • Credenciales no válidas: verifique que las credenciales de usuario y contraseña (o clave SSH) sean correctas para la máquina virtual.
    • Problemas de NSG: confirme que el NSG de la subred de VM permite el tráfico entrante en los puertos 3389 (RDP) o 22 (SSH) de AzureBastionSubnet.
    • VM Firewall: Verifique que el firewall interno de la VM no esté bloqueando las conexiones RDP/SSH.
    • El servicio RDP/SSH no se está ejecutando: asegúrese de que el servicio RDP (para Windows) o SSH (para Linux) se esté ejecutando en la máquina virtual.
  • Rendimiento lento o desconexiones:
    • Verifique el ancho de banda de su conexión a Internet. Bastion transmite el vídeo de la sesión a su navegador.
    • Considere utilizar el SKU Estándar o Premium de Bastion, que ofrece un mejor rendimiento y funciones adicionales.
    • Verifique si hay una alta utilización de CPU o memoria en la máquina virtual de destino, lo que puede afectar el rendimiento de la sesión.
  • No puedo acceder a los recursos internos de la VM a través de Bastion:
    • Azure Bastion proporciona conectividad a la VM. Una vez conectado a la VM, el acceso a otros recursos internos de la VNet dependerá de las configuraciones de red propias de la VM y de las reglas de NSG aplicables.

Conclusión

Azure Bastion es un componente esencial para la seguridad de los entornos de nube, ya que proporciona un método seguro y simplificado para acceder a las máquinas virtuales. Al eliminar la exposición directa de los puertos RDP/SSH a Internet, se reduce significativamente la superficie de ataque y se fortalece la postura general de seguridad. La implementación cuidadosa, la integración con las mejores prácticas de seguridad y el monitoreo continuo son fundamentales para maximizar los beneficios de Bastion. con esta gCon este enfoque práctico, los profesionales de seguridad y los administradores de TI estarán bien equipados para configurar, validar y administrar Azure Bastion, garantizando que el acceso a sus máquinas virtuales sea siempre seguro y compatible.


Referencias:

[1] Microsoft aprende. ¿Qué es el Bastión Azur?. Disponible en: https://learn.microsoft.com/pt-br/azure/bastion/bastion-overview [2] Microsoft aprende. Consideraciones de diseño y planificación para usar Azure Bastion para habilitar el acceso remoto seguro a máquinas virtuales en Azure. Disponible en: https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access [3] Microsoft aprende. Conéctese a una máquina virtual Windows mediante RDP - Azure Bastion. Disponible en: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-rdp-windows [4] Microsoft aprende. Configurar un host Bastion. Disponible en: https://learn.microsoft.com/pt-br/azure/bastion/tutorial-create-host-portal [5] Microsoft aprende. Conéctese a una máquina virtual Linux mediante SSH - Azure Bastion. Disponible en: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-ssh-linux [6] Microsoft aprende. Supervisión y gestión de sesiones de Azure Bastion. Disponible en: https://learn.microsoft.com/pt-br/azure/bastion/session-monitoring [7] Microsoft aprende. Configurar la grabación de sesiones de Bastion. Disponible en: https://learn.microsoft.com/pt-br/azure/bastion/session-recording