180 lines
7.6 KiB
Markdown
180 lines
7.6 KiB
Markdown
# 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:
|
|
|
|
```powershell
|
|
$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.
|
|
|
|
```powershell
|
|
$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:
|
|
|
|
```powershell
|
|
-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`:
|
|
|
|
```powershell
|
|
$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:
|
|
|
|
```bat
|
|
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:
|
|
|
|
```powershell
|
|
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:
|
|
|
|
```powershell
|
|
$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:
|
|
|
|
```bat
|
|
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:
|
|
|
|
```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
|
|
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.
|
|
|
|
- [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)
|
|
- [Instalación de certificados P2S](https://learn.microsoft.com/en-us/azure/vpn-gateway/point-to-site-how-to-vpn-client-install-azure-cert)
|
|
- [Puertos necesarios para unir un dominio](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/active-directory-domain-join-troubleshooting-guidance)
|
|
- [Requisitos de edición de Windows](https://learn.microsoft.com/en-us/windows/security/licensing-and-edition-requirements)
|
|
- [Limitación de Always On device tunnel](https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-always-on-device-tunnel)
|