Gestión del acceso justo a tiempo (JIT) para máquinas virtuales de Azure

Gestión del acceso justo a tiempo (JIT) para máquinas virtuales de Azure

01/10/2024

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 administración del acceso justo a tiempo (JIT) para máquinas virtuales (VM) de Azure. JIT es una característica de seguridad fundamental ofrecida por Microsoft Defender for Cloud que ayuda a proteger las máquinas virtuales contra ataques de acceso no autorizado, reduciendo drásticamente la superficie de ataque de la red al limitar el acceso a los puertos de administración solo cuando y durante el tiempo estrictamente necesario [1].

Introducción

En entornos de nube, las máquinas virtuales suelen ser blanco de ataques de fuerza bruta y escaneos de puertos, especialmente aquellas con puertos de administración (como RDP 3389 y SSH 22) expuestos a Internet. Mantener estos puertos abiertos continuamente crea una superficie de ataque innecesariamente grande, lo que aumenta el riesgo de compromiso. JIT Access resuelve este problema al permitir que los equipos de seguridad bloqueen el tráfico entrante a las máquinas virtuales de forma predeterminada y abran puertos de administración solo según demanda, durante un período de tiempo limitado y desde direcciones IP específicas. Este enfoque sigue el principio de privilegio mínimo y confianza cero, garantizando que el acceso se conceda sólo cuando esté justificado y durante el menor tiempo posible [2].

Esta guía práctica cubrirá los requisitos previos para habilitar JIT, el proceso de configuración a través del Centro de seguridad de Microsoft, cómo solicitar y aprobar el acceso JIT, la integración con alertas de seguridad y las mejores prácticas para una gestión eficaz. Se proporcionarán instrucciones paso a paso, ejemplos de comandos de la CLI de Azure e instrucciones para que el lector pueda implementar y validar el JIT, fortaleciendo la seguridad de sus máquinas virtuales de Azure y protegiéndolas contra amenazas de acceso no autorizado.

¿Por qué el acceso justo a tiempo (JIT) es crucial para las máquinas virtuales de Azure?

  • Reducción de la superficie de ataque: cierra los puertos de administración de VM de forma predeterminada, exponiéndolos solo cuando y durante el tiempo que sea necesario, minimizando las oportunidades para los atacantes.
  • Control de acceso granular: Le permite especificar qué usuarios pueden solicitar acceso, qué puertos se pueden abrir, durante cuánto tiempo y desde qué direcciones IP de origen.
  • Cumplimiento: ayuda a cumplir con los requisitos de cumplimiento que requieren un control estricto sobre el acceso a recursos críticos.
  • Visibilidad y auditoría: proporciona registros detallados de todas las solicitudes de acceso JIT, aprobaciones y aperturas/cierres de puertos, lo que facilita la auditoría e investigación de seguridad.
  • Integración con Defender for Cloud: Totalmente integrado con Microsoft Defender for Cloud, aprovechando sus capacidades de gestión de postura de seguridad y protección contra amenazas.
  • Automatización: se puede automatizar para aprobar el acceso en escenarios específicos, como respuesta a incidentes u operaciones de mantenimiento programadas.

Requisitos previos

Para implementar JIT Access para Azure Virtual Machines, 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 el rol de "Propietario", "Colaborador" o "Administrador de seguridad" en la suscripción de Azure o en el grupo de recursos donde se encuentran las máquinas virtuales.
  3. Microsoft Defender para Cloud Standard (o Defender para servidores): JIT es una característica premium de Microsoft Defender para Cloud y requiere que el plan Defender para servidores esté habilitado en la suscripción que contiene las máquinas virtuales [3].
  4. Máquinas virtuales de Azure existentes: máquinas virtuales de Azure que desea proteger con JIT. Para este tutorial, asumiremos que ya tiene máquinas virtuales implementadas.
  5. Azure CLI o Azure PowerShell: herramientas de línea de comandos instaladas y configuradas para interactuar con Azure.

Paso a paso: habilitar y administrar el acceso JIT

Configuremos el JIT para sus máquinas virtuales de Azure.

1. Habilitación del plan Defender para servidores

Como se menciona en los requisitos previos, JIT requiere que el plan Defender for Servers esté activado.

  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 "Defender for Cloud" y selecciónelo de los resultados.
  4. En el panel de Defender for Cloud, seleccione Configuración del entornoy en el panel de navegación izquierdo.
  5. Seleccione la suscripción de Azure que contiene sus máquinas virtuales.
  6. En la página de planes de Defender, asegúrese de que el plan Defender for Servers esté "Activado". Si no es así, haga clic en "Habilitar" y siga las instrucciones para habilitarlo.

2. Habilitación del acceso JIT para máquinas virtuales

Puede habilitar JIT para máquinas virtuales individuales o para varias máquinas virtuales a la vez.

  1. En el panel de Defender for Cloud, seleccione Protección de carga de trabajo en el panel de navegación izquierdo.
  2. Desplácese hacia abajo hasta la sección "Protección avanzada" y haga clic en Acceso a VM justo a tiempo.
  3. En la pestaña "Máquinas virtuales", verá tres subpestañas: "Configurado", "Recomendado" y "No configurado".

    • Recomendado: enumera las máquinas virtuales que Security Center recomienda proteger con JIT.
    • No configurado: enumera las máquinas virtuales que no están protegidas por JIT pero que son elegibles.
  4. Seleccione las máquinas virtuales en la pestaña "Recomendado" o "No configurado" para las que desea habilitar JIT.

  5. Haga clic en Habilitar JIT en VM.

  6. Configurar política JIT: para cada VM seleccionada, puede configurar las siguientes opciones:

    • Puertos: Los puertos de administración que serán protegidos (ej: 22, 3389, 5985, 5986). Puede agregar puertos personalizados.
    • Protocolo: El protocolo para cada puerto (por ejemplo, TCP, UDP).
    • Tiempo máximo de solicitud: El tiempo máximo (en horas) que una puerta puede estar abierta después de una solicitud aprobada. El valor predeterminado es 3 horas.
    • Direcciones IP de origen aprobadas: opcional, pero muy recomendable. Restringe el acceso a IP específicas o bloques de IP. Por defecto es Cualquiera (*), lo que significa que cualquier IP puede solicitar acceso.
  7. Haga clic en Guardar para aplicar la política JIT a las máquinas virtuales seleccionadas.

3. Solicitar acceso justo a tiempo a una máquina virtual

Cuando un usuario o administrador necesita acceder a una máquina virtual protegida por JIT, debe solicitar acceso.

  1. En el panel de Security Center, seleccione Protección de carga de trabajo > Acceso a VM justo a tiempo.
  2. En la pestaña Máquinas virtuales, seleccione la VM a la que desea acceder (debe estar en la pestaña Configurado).
  3. Haga clic en Solicitar acceso.

  4. En la ventana "Solicitar acceso", especifique:

    • Puertas: Las puertas que necesitas abrir.
    • Dirección IP de origen: La dirección IP pública desde la que se conectará. Puede seleccionar "Mi dirección IP" (la IP pública actual de su dispositivo) o "Personalizado" para especificar una IP o CIDR.
    • Período de tiempo: La duración del acceso (limitada por el "Tiempo máximo de solicitud" configurado en la política JIT).
    • Justificación: Breve descripción del motivo de la solicitud de acceso.
  5. Haga clic en Abrir puertos.

    • Nota: Si la política JIT requiere aprobación, la solicitud se enviará a los aprobadores configurados antes de que se abran los puertos.

4. Aprobación de solicitudes de acceso JIT (si está configurado)

Para escenarios donde se requiere aprobación (a través de Azure Logic Apps o Azure Functions), el proceso puede variar. De forma predeterminada, JIT abre puertos inmediatamente cuando se solicita, a menos que se configure una automatización del flujo de trabajo.

  • Consejo: Para los flujos de trabajo de aprobación, puede usar Azure Logic Apps para monitorear los registros de auditoría de Azure o los eventos de Azure Security Center y desencadenar un proceso de aprobación (por ejemplo, enviar un correo electrónico a un grupo de seguridad para su aprobación manual).

5. Comprobación del estado de acceso JIT

Después de solicitar acceso, podrá comprobar el estado en el portal.

  1. En el panel de Security Center, seleccione Protección de carga de trabajo > Acceso a VM justo a tiempo.
  2. En la pestaña "Máquinas virtuales", la máquina virtual a la que solicitó acceso debe mostrar un estado que indique que el acceso es "Activo" o "Pendiente" (si se aprueba).
  3. La columna "Tiempo restante" mostrará cuánto tiempo de acceso queda.

6. Deshabilitar el acceso JIT (opcional)

Si necesita deshabilitar JIT para una VM, siga estos pasos:

  1. En el panel de Security Center, seleccione Protección de carga de trabajo > Acceso a VM justo a tiempo.
  2. En la pestaña Máquinas virtuales, seleccione la VM configurada.
  3. Haga clic en Desactivar JIT en VM.

Validación y pruebas

Validar la efectividad de JIT Access es crucial para garantizar que sus máquinas virtuales estén protegidas y que se pueda otorgar acceso cuando sea necesario.

1. Prueba del bloque Dy acceso estándar

  1. Intente acceder a un puerto de administración (por ejemplo, RDP 3389 o SSH 22) desde una máquina virtual protegida por JIT sin solicitar acceso JIT.
    • Resultado esperado: La conexión debe rechazarse o expirarse ya que los puertos están cerrados de forma predeterminada.

2. Prueba del acceso JIT aprobado

  1. Solicite acceso JIT a la máquina virtual y al puerto deseados utilizando su dirección IP pública.
  2. Después de la aprobación (o apertura inmediata si no se configura ninguna aprobación), intente acceder a la VM a través de RDP o SSH desde la misma dirección IP pública.

    • Resultado esperado: La conexión debería ser exitosa.
  3. Espere hasta que expire el tiempo de acceso JIT (o cancele el acceso manualmente).

  4. Intente acceder a la VM nuevamente.
    • Resultado esperado: La conexión debe rechazarse nuevamente.

3. Comprobación de registros de auditoría

Todas las operaciones JIT se registran en registros de auditoría de Azure, lo que proporciona un seguimiento completo de quién solicitó qué, cuándo y desde dónde.

  1. En Azure Portal, navegue hasta su grupo de recursos o máquina virtual específica.
  2. En el panel de navegación izquierdo, seleccione Registro de actividad.
  3. Filtre por eventos relacionados con "Acceso a VM justo a tiempo" o "Microsoft.Security/locations/jitNetworkAccessPolicies".
    • Verá eventos como "Política de acceso a la red JIT creada", "Política de acceso a la red JIT solicitada", "Política de acceso a la red JIT aprobada" (si corresponde) y "Política de acceso a la red JIT cerrada".

Consejos de seguridad y mejores prácticas

  • Principio de privilegio mínimo: configure políticas JIT para otorgar el menor privilegio posible: los puertos exactos necesarios, durante el menor tiempo posible y desde las IP de origen más restringidas.
  • Restringir direcciones IP de origen: siempre que sea posible, especifique las direcciones IP de origen en la política JIT y en las solicitudes de acceso. Evite el uso de Any (*) para las IP de origen.
  • Períodos de tiempo cortos: establezca el tiempo máximo de solicitud en el período de tiempo más corto razonable (por ejemplo, 1 a 2 horas), lo que obliga a los usuarios a reevaluar la necesidad de acceso.
  • Monitoreo y alertas: configure alertas en Azure Monitor para solicitudes de acceso JIT, especialmente para puertos críticos o IP inesperadas. Integre estas alertas con su SIEM (por ejemplo, Microsoft Sentinel).
  • Automatización del flujo de trabajo: para entornos con requisitos de aprobación estrictos, use Azure Logic Apps o Azure Functions para crear flujos de trabajo de aprobación personalizados para solicitudes JIT.
  • Documentación y capacitación: documente claramente las políticas de acceso JIT y capacite a los usuarios sobre cómo solicitar acceso y la importancia de seguir las mejores prácticas de seguridad.
  • Revisión periódica: revise periódicamente las políticas JIT y los registros de acceso para garantizar que sigan siendo relevantes y efectivos.
  • Combinación con NSG y Azure Firewall: JIT complementa otras capas de seguridad de red, como los grupos de seguridad de red (NSG) y Azure Firewall. Úselos juntos para una defensa en profundidad.

Solución de problemas comunes

  • No se puede habilitar JIT para una VM: verifique que el plan Defender for Servers esté habilitado para la suscripción de VM. Asegúrese de que la máquina virtual no esté en un estado no válido o que no haya configuraciones conflictivas.
  • No se puede solicitar acceso JIT: asegúrese de tener los permisos necesarios (por ejemplo, "Colaborador" u "Operador de acceso justo a tiempo de máquina virtual") para solicitar acceso. Asegúrese de que la máquina virtual esté configurada para JIT y que los puertos estén definidos en la política.
  • Conexión rechazada después de la solicitud JIT: Verifique que la dirección IP de origen que especificó en la solicitud JIT coincida con la IP pública de su dispositivo. Confirme que el plazo no haya expirado. Verifique que no haya NSG adicionales ni reglas de firewall que bloqueen el tráfico después de abrir el puerto JIT.
  • Puertos incorrectos abiertos: verifique la política JIT configurada para la máquina virtual para asegurarse de que aparezcan los puertos correctos. Si está utilizando la CLI de Azure, verifique los parámetros del puerto.
  • Alertas de seguridad de acceso JIT: investigue cualquier alerta de seguridad relacionada con JIT. Esto puede indicar un intento de acceso no autorizado o una configuración incorrecta.
  • Rendimiento de la VM afectado: el JIT en sí no debería afectar el rendimiento de la VM. Si hay problemas, investigue otros componentes de la VM o la red.

Conclusión

ohLa administración de acceso justo a tiempo (JIT) para Azure Virtual Machines es una estrategia de seguridad esencial para proteger sus recursos en la nube contra amenazas de acceso no autorizado. Al cerrar los puertos de administración de forma predeterminada y abrirlos solo según demanda, JIT reduce significativamente la superficie de ataque, fortalece su postura de seguridad y lo ayuda a cumplir con los requisitos de cumplimiento. La implementación efectiva de JIT, combinada con las mejores prácticas de seguridad y el monitoreo continuo, garantiza que sus máquinas virtuales permanezcan seguras y accesibles solo para usuarios y propósitos legítimos. Con esta guía práctica, los profesionales de la seguridad estarán bien equipados para configurar, validar y administrar el acceso JIT, haciendo que sus máquinas virtuales de Azure sean más resistentes y protegidas.


Referencias:

[1] Microsoft aprende. ¿Qué es el acceso JIT (justo a tiempo) a la VM?. Disponible en: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-overview [2] Microsoft aprende. Habilite el acceso justo a tiempo en las máquinas virtuales. Disponible en: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-usage [3] Microsoft aprende. Administre la seguridad del servidor con Microsoft Defender para la nube. Disponible en: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/tutorial-enable-servers-plan [4] Microsoft aprende. Administre el acceso JIT (justo a tiempo) a sus máquinas virtuales mediante PowerShell. Disponible en: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-powershell