Automate direct domain enrollment across Windows versions
This commit is contained in:
@@ -1,24 +1,27 @@
|
||||
# Active Directory SGU en Azure con VPN Point-to-Site
|
||||
# Active Directory SGU en Azure: VPN opcional o enrolamiento directo
|
||||
|
||||
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 misma plantilla despliega Active Directory en Windows Server 2025 y permite
|
||||
elegir entre Azure VPN Gateway Point-to-Site (P2S) o acceso público directo. El
|
||||
modo directo restringe AD, WinRM, Auth Broker y RustDesk a los CIDR públicos
|
||||
indicados; el cliente configura DoH y la resolución del dominio automáticamente.
|
||||
La lista pública vacía no expone esos servicios.
|
||||
|
||||
La plantilla crea:
|
||||
|
||||
- VNet `10.77.0.0/16`, subnet del DC `10.77.0.0/24` y `GatewaySubnet`;
|
||||
- VNet `10.77.0.0/16`, subnet del DC `10.77.0.0/24` y, si se solicita, `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;
|
||||
- VPN Gateway opcional `VpnGw1AZ` con IKEv2/OpenVPN 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.
|
||||
Los prefijos privados deben ser RFC1918 y no deben solaparse con las redes usadas
|
||||
por Hyper-V, el `Default Switch`, Wi-Fi o Ethernet locales. Los prefijos de
|
||||
enrolamiento directo deben ser CIDR IPv4 públicos explícitos.
|
||||
|
||||
## 1. Crear la autoridad P2S y el certificado de administración
|
||||
## 1. Elegir el modo de conectividad
|
||||
|
||||
Para P2S, crear la autoridad y el certificado de cada cliente:
|
||||
|
||||
En la estación administrativa donde está el repositorio:
|
||||
|
||||
@@ -33,6 +36,10 @@ 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.
|
||||
|
||||
Para acceso directo no se necesita certificado P2S. Se necesita conocer el
|
||||
segmento público de salida del laboratorio; por ejemplo, la IP
|
||||
`200.13.89.183` pertenece a `200.13.89.0/24`.
|
||||
|
||||
## 2. Desplegar Azure
|
||||
|
||||
Requisitos: Azure CLI, una sesión iniciada con `az login`, permisos para crear
|
||||
@@ -47,6 +54,19 @@ $azure = .\scripts\Deploy-SguAzureInfrastructure.ps1 `
|
||||
-P2sRootCertificatePath $p2s.RootCertificatePath
|
||||
```
|
||||
|
||||
Sin VPN y autorizando un laboratorio completo:
|
||||
|
||||
```powershell
|
||||
$azure = .\scripts\Deploy-SguAzureInfrastructure.ps1 `
|
||||
-SubscriptionId '00000000-0000-0000-0000-000000000000' `
|
||||
-ResourceGroupName 'rg-sgu-lab' `
|
||||
-Location 'centralus' `
|
||||
-AdministratorUsername 'azureadmin' `
|
||||
-DeployVpnGateway $false `
|
||||
-PublicEnrollmentSourceAddressPrefixes '200.13.89.0/24' `
|
||||
-AdministratorSourceAddressPrefix '200.13.89.0/24'
|
||||
```
|
||||
|
||||
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
|
||||
@@ -61,9 +81,10 @@ pública actual:
|
||||
```
|
||||
|
||||
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.
|
||||
más que la VM; omitirlo reduce tiempo y costo. El comando espera hasta que Azure
|
||||
entregue un resultado final.
|
||||
|
||||
## 3. Descargar P2S y entrar por la IP privada
|
||||
## 3. Conectarse al servidor
|
||||
|
||||
Cuando el gateway esté `Succeeded`:
|
||||
|
||||
@@ -85,8 +106,11 @@ 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.
|
||||
`AdministratorSourceAddressPrefix` queda como ruta de recuperación temporal.
|
||||
|
||||
En modo directo, use RDP contra `$azure.DomainControllerPublicIp` desde un origen
|
||||
incluido en `AdministratorSourceAddressPrefix`. RDP y enrolamiento tienen listas
|
||||
separadas para poder retirar RDP sin interrumpir los clientes.
|
||||
|
||||
## 4. Ejecutar el bootstrap dentro de Windows Server
|
||||
|
||||
@@ -110,9 +134,10 @@ 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`.
|
||||
en `TrustedClientNetworks` cuando exista VPN y los CIDR directos en
|
||||
`PublicEnrollmentNetworks` cuando se hayan habilitado.
|
||||
|
||||
## 5. Emitir un certificado y enrolar cada VM Hyper-V
|
||||
## 5. Enrolar cada VM Hyper-V
|
||||
|
||||
En la estación administrativa, emita una credencial distinta por equipo:
|
||||
|
||||
@@ -144,9 +169,28 @@ En una sola ejecución el comando:
|
||||
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`.
|
||||
Para el modo directo, cada Windows 10/11 usa el lanzador normal y la IP pública;
|
||||
no necesita perfil ni certificado VPN:
|
||||
|
||||
```bat
|
||||
Start-SguClientEnrollment.cmd 20.9.81.130
|
||||
```
|
||||
|
||||
El bootstrap pide la cuenta de dominio, prueba todas las interfaces con ruta,
|
||||
descubre el bosque por WinRM, instala el certificado público DoH, configura NRPT
|
||||
y los nombres del DC/broker, registra mTLS y une la máquina. No pide una IP del
|
||||
cliente ni una interfaz.
|
||||
|
||||
Si la red local bloquea IKEv2 (UDP 500/4500), se puede generar un perfil
|
||||
OpenVPN sobre TCP 443 para Azure VPN Client. Ese fallback requiere instalar
|
||||
y configurar el cliente correspondiente; el bootstrap instala el perfil nativo
|
||||
IKEv2. Azure ya no admite SSTP al crear este gateway.
|
||||
|
||||
La prueba real con `Windows11-002` y un bosque en Azure está documentada en
|
||||
[la validación del despliegue del 10 de septiembre de 2026](azure-deployment-validation-2026-09-10.md).
|
||||
Incluye un device tunnel para Enterprise y recuperación de Netlogon cuando el
|
||||
túnel tarda en estar disponible al arrancar. Son configuraciones adicionales
|
||||
aplicadas a esa VM; el instalador publicado crea el perfil manual anterior.
|
||||
|
||||
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
|
||||
@@ -155,21 +199,23 @@ 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:
|
||||
Validación dentro del cliente, con la VPN conectada o usando el acceso directo:
|
||||
|
||||
```powershell
|
||||
Get-VpnConnection -Name 'SGU Azure P2S' -AllUserConnection
|
||||
Get-DnsClientNrptRule | Where-Object DisplayName -like 'SGU Azure P2S*'
|
||||
Test-NetConnection 10.77.0.4 -Port 5985
|
||||
Test-NetConnection 20.9.81.130 -Port 5985
|
||||
Resolve-DnsName _ldap._tcp.dc._msdcs.lci.lasalle.mx -Type SRV
|
||||
nltest.exe /dsgetdc:lci.lasalle.mx
|
||||
```
|
||||
|
||||
## Seguridad y referencias
|
||||
## Alcance de red 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.
|
||||
P2S mantiene los puertos de AD dentro del túnel. El modo directo abre el conjunto
|
||||
necesario para la unión sólo desde `publicEnrollmentSourceAddressPrefixes` y
|
||||
replica la misma lista en Windows Firewall mediante `PublicEnrollmentNetworks`.
|
||||
Prefiera `/32` si la salida es estable; use `/24` únicamente cuando deba admitir
|
||||
todo el segmento. Retire el CIDR cuando termine la prueba si ya no se requiere.
|
||||
|
||||
- [Azure VPN Gateway P2S con certificados](https://learn.microsoft.com/en-us/azure/vpn-gateway/point-to-site-certificate-gateway)
|
||||
- [Cliente P2S nativo de Windows](https://learn.microsoft.com/en-us/azure/vpn-gateway/point-to-site-vpn-client-certificate)
|
||||
|
||||
Reference in New Issue
Block a user