Cerrar
InicioNetworkingAlways On VPNMicrosoft Azure: Always On VPN + Windows 10 Pro + GPO

Microsoft Azure: Always On VPN + Windows 10 Pro + GPO

Muchos de vosotros seguro que conocéis que es DirectAccess, algo que, MSFT ha reemplazado por otra tecnología: Always On VPN. En su momento, había publicado varios artículos sobre DirectAccess, un servicio que, a mi, siempre me ha encantado:

Pues bien, ahora el siguiente paso/fase de migración sería implementar Always ON VPN, pero… vamos a hacerlo ya en Azure con Azure Gateway VPN (P2S) puesto que el ROL de RRAS en modo IaaS en Azure no está soportado: Microsoft server software support for Microsoft Azure virtual machines:

“Básicamente” Always On VPN una conexión permanente de acceso remoto (finalidad igual a DirectAccess pero un modo de conexión diferente) en el cual los usuarios “no tienen intervención alguna”, básicamente cuando el equipo tiene acceso a Internet automáticamente se conecta. Entre los requisitos básicos a nivel de los clientes remotos es que tengan Windows 10 Enterprise, algo que, en muchas ocasiones los clientes no quieren adquirir y únicamente tienen versiones Pro de Windows 10. Aquí os dejo un enlace de todos los requisitos que necesitamos cumplir  una implementación de Always On VPN en On-Premises o Cloud en modo IaaS (recordad que en Azure este rol no está soportado, pero si queréis podéis implementarlo bajo vuestro riesgo): Implementación de Always On VPN para Windows Server y Windows 10. En este artículo no os voy a hablar de una implementación On-Premises, sino de utilizar Always On VPN con clientes Windows Pro (si, pro) y utilizando Azure VPN P2S:

Si os fijáis en la topología con la que voy a contar para explicar como realizar esta particular configuración de Always On VPN sin contar con Windows 10 Enterprise:

  • Active Directory: mis equipos estarán unidos el dominio (entorno híbrido o no en este caso no es relevante):
  • Políticas de Grupo: las utilizaré para configurar Always On VPN en los equipos del dominio
  • Entidad Certificadora Privada: utilizaré una CA interna para emitir certificados de equipos los cuales se utilizarán para autenticar la VPN
  • Split Tunneling: se configurará Split-Tunneling en los clientes VPN

Por recordarlo, para que Always On VPN funcione como se espera, se necesita una versión de Windows 10 de Educación o Enterprise (1709 o superior), pero vamos a ver como podemos hacer que teniendo una versión de Windows 10 Pro sea posible. Además, para realizar la configuración de Always On VPN se necesitará Intune y/o SCCM, pero en este caso nosotros utilizaremos una Directiva de Grupo para realizar el despliegue en nuestros equipos del dominio.

Para desplegar Always On VPN el cual utilizar IKEv2, claramente vamos a necesitar certificados digitales, yo voy a utilizar mi CA Privada para desplegar toda la infraestructura de certificados necesaria. Ya ni que decir tiene que ya cuento con todo esto instalado, desplegado y funcionado sin problemas. Una vez que esto así y, después de desplegar nuestro VPN P2S en Azure (SKU mínimo de VpnGw1), aquí os dejo varios enlaces de como seria esta configuración:

Los dos enlaces anteriores son una introducción algo más amplia a la configuración VPN P2S, ahora solo me voy a centrar en las configuración básica (que realmente lo es) para este artículo. La configuración es tan sencilla como ir a la sección Configuración de VPN de usuario dentro de nuestra Puerta de enlace de red virtual, donde definimos una subred para que los clientes VPN obtengan su dirección IP (cuidado con que no sea igual que otra subred a la que queráis que accedan los clientes remotos ), el tipo de conexión y el certificado asociado a la conexión:

Pues la parte de servidor .. ya la hemos configurado,  SaaS puro y duro. El certificado que he configurado es mi CA Privada, de tal forma que ahora los clientes VPN utilicen su propio certificado de equipo (también podría ser de usuario) para autenticar. Estos certificados los desplegaremos utilizando una GPO, algo que comento en este artículo: https://www.santiagobuitragoreis.com/nps-autenticacion-802-1x-para-nuestra-red-inalambrica/ (la forma de configurar la solicitud de certificados es la misma que para la VPN en este caso).

Me voy a centrar en la configuración de Always On VPN por dispositivos, en otro artículo comentaré la configuración por usuario. Dicho esto, ahora nos vamos a descargar un fichero de PowerShell y un XML de la Web de Microsoft que nos pone a nuestra disposición para la configuración de los equipos: Configuración de túneles de dispositivo VPN en Windows 10. En el script de PowerShell no tenemos que realizar ninguna modificación:

Param(
[string]$xmlFilePath,
[string]$ProfileName
)

$a = Test-Path $xmlFilePath
echo $a

$ProfileXML = Get-Content $xmlFilePath

echo $XML

$ProfileNameEscaped = $ProfileName -replace ‘ ‘, ‘%20’

$Version = 201606090004

$ProfileXML = $ProfileXML -replace ‘<‘, ‘&lt;’
$ProfileXML = $ProfileXML -replace ‘>’, ‘&gt;’
$ProfileXML = $ProfileXML -replace ‘”‘, ‘&quot;’

$nodeCSPURI = ‘./Vendor/MSFT/VPNv2’
$namespaceName = “root\cimv2\mdm\dmmap”
$className = “MDM_VPNv2_01”

$session = New-CimSession

try
{
$newInstance = New-Object Microsoft.Management.Infrastructure.CimInstance $className, $namespaceName
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create(“ParentID”, “$nodeCSPURI”, ‘String’, ‘Key’)
$newInstance.CimInstanceProperties.Add($property)
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create(“InstanceID”, “$ProfileNameEscaped”, ‘String’, ‘Key’)
$newInstance.CimInstanceProperties.Add($property)
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create(“ProfileXML”, “$ProfileXML”, ‘String’, ‘Property’)
$newInstance.CimInstanceProperties.Add($property)

$session.CreateInstance($namespaceName, $newInstance)
$Message = “Created $ProfileName profile.”
Write-Host “$Message”
}
catch [Exception]
{
$Message = “Unable to create $ProfileName profile: $_”
Write-Host “$Message”
exit
}
$Message = “Complete.”
Write-Host “$Message”

Y luego tenemos un fichero XML el cual tendremos que adaptar en base a nuestras configuraciones (las secciones en rojo):

<VPNProfile>
<NativeProfile>
<Servers>vpn.contoso.com</Servers>
<NativeProtocolType>IKEv2</NativeProtocolType>
<Authentication>
<MachineMethod>Certificate</MachineMethod>
</Authentication>
<RoutingPolicyType>SplitTunnel</RoutingPolicyType>
<!– disable the addition of a class based route for the assigned IP address on the VPN interface –>
<DisableClassBasedDefaultRoute>true</DisableClassBasedDefaultRoute>
</NativeProfile>
<!– use host routes(/32) to prevent routing conflicts –>
<Route>
<Address>10.10.0.2</Address>
<PrefixSize>32</PrefixSize>
</Route>
<Route>
<Address>10.10.0.3</Address>
<PrefixSize>32</PrefixSize>
</Route>
<!– traffic filters for the routes specified above so that only this traffic can go over the device tunnel –>
<TrafficFilter>
<RemoteAddressRanges>10.10.0.2, 10.10.0.3</RemoteAddressRanges>
</TrafficFilter>
<!– need to specify always on = true –>
<AlwaysOn>true</AlwaysOn>
<!– new node to specify that this is a device tunnel –>
<DeviceTunnel>true</DeviceTunnel>
<!–new node to register client IP address in DNS to enable manage out –>
<RegisterDNS>true</RegisterDNS>
</VPNProfile>

En la sección <Servers>vpn.contoso.com</Servers>  debemos escribir la dirección de nuestro extremo VPN, este valor lo conocemos cuando nos descargamos el cliente VPN desde Azure:

Una vez descargado, descomprimimos el fichero zip y buscamos el fichero XML donde está la configuración del cliente VPN y lo editamos con un editor de textos (notepad por ejemplo) y copiamos el valor que  está en la sección <VpnServer> y lo copiamos en la sección <Servers> del fichero XML que nos hemos descargados de MSFT para la configuración de Always On VPN:

Luego tenemos otra sección básica a configurar, que son las rutas las cuales queremos que los clientes VPN utilicen (Split-Tunneling) en la sección <Route>:

<Route>
<Address>10.10.0.0</Address>
<PrefixSize>16</PrefixSize>
</Route>
<Route>
<Address>192.168.0.0</Address>
<PrefixSize>24</PrefixSize>
</Route>

Agregaremos tantas rutas como a subredes queremos que los clientes VPN tengan acceso (incluso las On-Premises si tenemos conexión entre Azure y On-Premises vía VPN Site-to-Site o ExpressRoute), claramente, si todo está correctamente configurado, pero vamos, aquí es donde le vamos a definir las rutas permitidas en el túnel VPN para los equipos.

Ahora debemos tener dos ficheros, los cuales los nombraremos de la siguiente forma:

  • Devicecert.ps1
  • VPNProfile.XML

Para configurar la VPN debemos ejecutar el PowerShell desde una sesión de SYSTEM, para ello podemos hacerlo utilizando PsExec64 desde una cmd con derechos de administrador y de la siguiente forma: PsExec64 -s -i PowerShell

Una vez en PowerShell con privilegios de SYSTEM debéis ejecutar el PS1 que hemos configurado de la siguiente forma, si antes quería verificar si la sesión de PowerShell están la sesión de SYSTEM ejecutaremos Whoami:

Si está todo correcto, ejecutamos el PS1  de la siguiente manera: .\Devicecert.ps1 .\VPNProfile.XML <<Nombre-Conexión>>

Ahora, para verificar que tenemos la VPN correctamente configurada, ejecutamos el siguiente cmdlet: Get-Vpnconnection -AllUserConnection -Name <<Nombre-Conexión>> y debería mostrarnos la configuración de la VPN:

Con esto hemos configurado la conexión VPN a nivel de dispositivo pero de forma manual, pero lo que queremos es realizar estas configuraciones en los equipos del dominio y de forma automatizada. Como os había comentado, esto se tiene que hacer con Intune o SCCM, pero .. sino tenemos ninguna de estas tecnologías podemos hacerlo vía GPO. El proceso es muy sencillo, con una sola GPO podemos hacerlo todo, el proceso de configuración sería el siguiente:

  • Copiar los ficheros .ps1 y .xml desde la red a cada equipo (debemos tenerlos en una carpeta de red compartida y que los equipos del dominio puedan tener acceso de lectura)
  • Una tarea programada que ejecute la sentencia correcta y la cuenta de ejecución la cuenta SYSTEM

Para poder ejecutar el .ps1 desde una tarea programada, lo que haré será crear un segundo .PS1 con las siguiente configuración:

PowerShell C:\Windows\VPNProfile\devicecert.ps1 C:\Windows\VPNProfile\VPNProfile.XML PivotalVPN
rasphone -d PivotalVPN

Es muy sencillo, básicamente configuramos la VPN y aprovecho para conectar al equipo a la VPN con el comando rasphone  -d <<nombre-conexión>>. Este “script” lo guardamos y copiamos también la carpeta compartida, porque con la GPO lo copiaremos también en una carpeta local del equipo (en mi caso en C:\Windows\VPNProfile) y para ello en la configuración de equipos de la GPO lo configuraremos de la siguiente forma:

Con esto, los equipos tienen los ficheros en local y ahora con la misma GPO crearé dos tareas programadas, una para configurar la VPN y otra para conectarse a la VPN. Aquí os muestro la tarea programada para configurar la VPN:

La cuenta de ejecución deber ser la cuenta SYSTEM:

Elegir si queréis que se ejecute cuando inicie el equipo o algún usuario una sesión en el equipo, os pongo las dos opciones pero.. con At system startup es suficiente:

Aquí la parte “más importante”, indicamos que ejecutamos un programa: PowerShell y en la línea de argumentos hacemos referencia el .PS1 que hemos creado previamente: -ExecutionPolicy Unrestricted -file C:\windows\vpnprofile\configure.ps1. Como habéis visto, he añadido -ExecutionPolicy Unrestricted porque tenemos que cambiar la directiva de ejecución de scripts, pero así solo lo hacemos para esta ejecución:

Esto es opcional, podemos indicar que la condición para que se ejecute el script es que tengamos una conexión de red activa:

Ahora y por último, como os he comentado al inicio, Always On VPN con conexión automática está soportado solo en versiones Windows 10 de Educación o Enterprise en versión 1709 o superior. Por lo que, si el Windows que tenemos es el Pro, se podrá configurar Always On VPN, pero la conexión será manual siempre .. a excepción de que tiremos de GPO y otra tarea programada que inicie la conexión de forma automática :-). La tarea se ejecutará con la cuenta System (o no) y luego indicaremos que se iniciará cuando el equipo se haya iniciado (si tiene red) o cuando cualquier usuario haya iniciado sesión en el equipo y que lo reintente cada 5 minutos (por si nos quedamos sin conexión en algún momento y así la reconectará):

La acción es muy sencilla, ejecutaremos rasphone -d <<nombre-conexión> y automáticamente conectará la VPN 🙂

Con este sencillo proceso, tendremos Always On VPN en Azure y con Windows 10 Pro. OJO, esto es algo que no está soportado por MSFT, porque para eso ellos nos dicen que lo hagamos con Windows 10 Educación o Enterprise. Pero os digo que, es funcional y el servicio es exactamente el mismo, tiramos de un poco de “ingenio” y tenemos una VPN permanente y que funciona muy bien!!

Si en algún momento, queréis que el usuario lance la conexión de forma manual, podéis hacerlo ejecutando rasphone.exe (desde Inicio – Ejecutar  o podéis configurar un script para ell) luego elegimos la conexión y pulsamos en Conectar (desconectar si ya estamos conectados):

Para ver el estado de conexión de la VPN (bug: en versiones 1809 o anteriores puedes estar conectado y el estado lo muestra como desconectado), lo haremos desde una sesión de PowerShell como derechos de administrador y ejecutamos el siguiente cmdlet: Get-Vpnconnection -AllUserConnection

Ahora tenemos una VPN segura, autenticando con certificados de equipo desplegados vía GPO (con autorenovaciones) y configurando todo el servicio también vía GPO. Esto nos permite que los usuarios inicien sesión en el dominio pero con el equipo ya conectado al mismo, esto nos permite disponer de los siguientes beneficios:

  • Actualización de membresías de los usuarios en los inicios de sesión (sobre todo en esta época que todos los usuarios están en teletrabajando)
  • Cambios de contraseñas desde Control + Alt + Supr
  • Aplicación de directivas para los equipos
    • Instalación de software
    • Etc..
  • Inicios de sesión de usuarios no cacheados previamente
  • Etc…

Además, todo esto sin tener que instalar ni mantener servidores de VPN ni similar!!

Ahora, como siempre, os toca probarlo a vosotros!!

PD: En el siguiente artículo, comentaré la “misma configuración” pero con configuración de usuario.

Microsoft Azure: Inf
Autenticación y Per
NO HAY COMENTARIOS

DEJA UN COMENTARIO

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This