Files
SGU-CredentialProvider/docs/azure-vpn-deployment.md
T

7.6 KiB

Active Directory SGU en Azure con VPN Point-to-Site

Esta variante conserva Active Directory en una VM Windows Server 2025 con IP pública de Azure, pero no publica Active Directory en Internet. La IP pública sirve para el ciclo de vida y, opcionalmente, RDP desde un único CIDR administrativo. DNS, Kerberos, LDAP, SMB, RPC, WinRM, Auth Broker, monitoreo y RustDesk viajan por Azure VPN Gateway Point-to-Site (P2S).

La plantilla crea:

  • VNet 10.77.0.0/16, subnet del DC 10.77.0.0/24 y GatewaySubnet;
  • Windows Server 2025 con IP privada estática 10.77.0.4 reservada en la NIC;
  • IP pública Standard para la VM, protegida por NSG;
  • VPN Gateway VpnGw1 con IKEv2/SSTP y autenticación por certificados;
  • pool P2S 172.30.0.0/24, autorizado en los firewalls SGU;
  • DNS de la NIC del servidor apuntando a 10.77.0.4.

Los prefijos son parámetros. Deben ser RFC1918 y no deben solaparse con las redes usadas por Hyper-V, el Default Switch, Wi-Fi o Ethernet locales.

1. Crear la autoridad P2S y el certificado de administración

En la estación administrativa donde está el repositorio:

$p2s = .\scripts\New-SguAzureP2sCertificates.ps1 `
  -ClientName 'AdminWorkstation'

Se pide una contraseña para proteger el PFX. La clave privada de la autoridad raíz permanece no exportable en Cert:\CurrentUser\My; Azure recibe solamente el .cer público. El PFX es una credencial de acceso a la VNet: se debe copiar únicamente a la VM correspondiente y eliminarse de ubicaciones compartidas después de importarlo.

2. Desplegar Azure

Requisitos: Azure CLI, una sesión iniciada con az login, permisos para crear red, gateway, IP pública y VM, y una suscripción seleccionable.

$azure = .\scripts\Deploy-SguAzureInfrastructure.ps1 `
  -SubscriptionId '00000000-0000-0000-0000-000000000000' `
  -ResourceGroupName 'rg-sgu-lab' `
  -Location 'centralus' `
  -AdministratorUsername 'azureadmin' `
  -P2sRootCertificatePath $p2s.RootCertificatePath

La contraseña local de la VM se solicita como SecureString, se coloca sólo en un archivo temporal con ACL exclusiva para el usuario actual y se elimina al terminar. No aparece en los argumentos de Azure CLI ni queda guardada en el repositorio.

Por omisión ningún puerto administrativo de la VM se abre desde Internet. Para habilitar temporalmente RDP durante el bootstrap, indique exclusivamente su IP pública actual:

-AdministratorSourceAddressPrefix '203.0.113.10/32'

No utilice 0.0.0.0/0. El despliegue de un VPN Gateway suele tardar bastante más que la VM; el comando espera hasta que Azure entregue un resultado final.

3. Descargar P2S y entrar por la IP privada

Cuando el gateway esté Succeeded:

$vpn = .\scripts\Get-SguAzureP2sPackage.ps1 `
  -SubscriptionId '00000000-0000-0000-0000-000000000000' `
  -ResourceGroupName 'rg-sgu-lab' `
  -VpnGatewayName $azure.VpnGatewayName

.\scripts\Install-SguAzureP2sClient.ps1 `
  -VpnProfilePackagePath $vpn.PackagePath `
  -ClientCertificatePfxPath $p2s.ClientCertificatePath `
  -ClientRootCertificatePath $p2s.RootCertificatePath `
  -Connect

Con el túnel conectado, use RDP contra 10.77.0.4 y habilite la redirección de una unidad local para copiar sgu-server-bootstrap-VERSION.zip a la VM. La NIC ya apunta a su futura dirección DNS propia, por lo que la resolución pública no está disponible hasta que el bootstrap instale DNS y sus reenviadores. Así no es necesario abrir 3389 en la IP pública. La opción AdministratorSourceAddressPrefix queda como ruta de recuperación temporal, no como el camino normal.

4. Ejecutar el bootstrap dentro de Windows Server

Descargue y extraiga sgu-server-bootstrap-VERSION.zip dentro de la VM. La IP que recibe el bootstrap es la privada de la NIC, nunca la pública:

Start-SguAzureServerBootstrap.cmd 10.77.0.4 172.30.0.0/24

El modo PlatformManaged comprueba que Azure ya asignó 10.77.0.4/24, pero no deshabilita DHCP, no reemplaza la ruta predeterminada y no reinicia el adaptador. El DNS de AD publica únicamente la dirección privada. 168.63.129.16 se usa como reenviador DNS de la plataforma Azure.

Después del reinicio de promoción, verificar:

Get-Content C:\ProgramData\SGU\Bootstrap\Server\bootstrap-complete.json
Resolve-DnsName _ldap._tcp.dc._msdcs.lci.lasalle.mx -Type SRV -Server 10.77.0.4

El JSON debe indicar NetworkConfigurationMode = PlatformManaged, el pool P2S en TrustedClientNetworks y ambos prefijos en AllowedRemoteAddresses.

5. Emitir un certificado y enrolar cada VM Hyper-V

En la estación administrativa, emita una credencial distinta por equipo:

$w11 = .\scripts\New-SguAzureP2sCertificates.ps1 -ClientName 'Windows11'

Copie a la VM Windows 10/11 de Hyper-V:

  • sgu-windows-client-bootstrap-VERSION.zip extraído (Windows 10/11 x64);
  • $vpn.PackagePath;
  • $w11.ClientCertificatePath;
  • sgu-azure-p2s-root.cer.

Desde la carpeta extraída del bootstrap de cliente, instale P2S y enrole:

Start-SguAzureClientEnrollment.cmd 10.77.0.4 C:\SGU\sgu-azure-vpn-client.zip C:\SGU\sgu-azure-p2s-Windows11.pfx C:\SGU\sgu-azure-p2s-root.cer

En una sola ejecución el comando:

  1. importa el certificado de cliente en LocalMachine\My sin dejar la contraseña en disco;
  2. instala un perfil IKEv2 de todos los usuarios llamado SGU Azure P2S;
  3. agrega la ruta 10.77.0.0/16 y una regla NRPT que envía sólo .lci.lasalle.mx al DNS 10.77.0.4;
  4. conecta P2S con certificado de máquina;
  5. registra mTLS, instala SGU/RustDesk y une el equipo al dominio;
  6. reinicia Windows.

Si la red local bloquea IKEv2 (UDP 500/4500), el paquete de Azure también incluye un perfil SSTP sobre TCP 443, pero ese fallback todavía requiere instalación manual con el instalador oficial incluido en WindowsAmd64.

Windows 10/11 Pro admite unión a AD y VPN nativa, pero Microsoft no licencia el Always On VPN device tunnel para Pro. Por ello el perfil se instala para todos los usuarios y se puede seleccionar desde el control de red de la pantalla de inicio de sesión; antes del primer logon de una cuenta de dominio, conecte SGU Azure P2S allí. Enterprise/Education pueden recibir posteriormente un device tunnel Always On, pero eso no es requisito del enrolamiento SGU.

Validación dentro del cliente, con la VPN conectada:

Get-VpnConnection -Name 'SGU Azure P2S' -AllUserConnection
Get-DnsClientNrptRule | Where-Object DisplayName -like 'SGU Azure P2S*'
Test-NetConnection 10.77.0.4 -Port 5985
Resolve-DnsName _ldap._tcp.dc._msdcs.lci.lasalle.mx -Type SRV
nltest.exe /dsgetdc:lci.lasalle.mx

Seguridad y referencias

No agregue reglas NSG públicas para 53, 88, 135, 389, 445, 464, 636, 3268, 3269 ni RPC dinámico. El conjunto de puertos necesario para una unión de dominio es precisamente la razón de encapsularlo en P2S.