Con el teletrabajo avanzando de forma imparable, una de las soluciones que tienen las empresas para permitir que varias personas operen desde el exterior de la empresa, como si estuvieran en ella, es con una red privada virtual o VPN.
Windows Server 2019 incluye este rol dentro del listado de funciones que pueden añadírsele.
Podríamos realizar una implementación simple de VPN utilizando un único servidor, pero vamos a completar el uso de esta tecnología con un servidor RADIUS (Remote Authentication Dial-In User Service).
VPN es una teconología de transporte de datos a la que se complementa de tecnologías de cifrado y autenticación. Con RADIUS realizamos esta última función.
Un caso práctico de autenticación RADIUS, sería la autenticación a una red wifi con WPA2-ENTERPRISE en el cual no necesitamos una clave secreta compartida para acceder a ella. En lugar de una contraseña, utilizariamos un usuario para autenticar.
Nosotros vamos a poner esto en práctica mediante la creación de un esquema de 3 máquinas en la que una actua como servidor del dominio y servidor RADIUS, otra como cliente RADIUS y proveedor de acceso VPN al exterior y finalmente uno o varios equipos que conectan desde el exterior para hacer uso de la red corporativa.
Para este proyecto vamos a partir de la siguiente infraestructura:
Instalación del servidor Radius
Partimos de un equipo con Windows Server 2019 Standard al cual le instalamos el rol de Servicios de dominio Active Directory (AD DS), para configurar un dominio llamado radius.brs. La instalación de este rol, conlleva la instalación de DNS. Adicionalmente instalo un servidor DHCP, para gestionar los equipos de la misma red de dominio.
En caso de necesitar ayuda para la instalación de estos requisitos previos, publiqué una guía completa de instalación de un servidor Windows Server 2016, que es totalmente homologable a la versión 2019.
Vamos a comenzar con la instalación propiamente dicha del servidor Radius.
Primeramente, iniciamos el Administrador del servidor y en Administrar (arriba a la derecha) marcamos Agregar roles y características.
Una vez abierto el asistente, hacemos clic en Siguiente, Instalación basada en características o en roles, Siguiente. Marcamos nuestro servidor, Siguiente.
Seleccionamos Servicios de acceso y directivas de redes. Es frecuente que la instalación de un rol traiga aparejada la necesidad de instalar algunas herramientas y utilidades llamadas características. El asistente nos muestra con detalle qué va a necesitar de forma complementaria. Hacemos clic sobre el botón Agregar características.
Nuestro asistente nos lleva a una pantalla, sin otra función más que introducirnos en la funcionalidad que estamos incorporando al servidor. Hacemos clic en siguiente y se realiza el proceso de instación propiamente dicho.
Todo esto lo podríamos haber simplificado realizando la instalación desde un PowerShell con permisos de administrador.
Install-WindowsFeature NPAS -IncludeManagementTools
Por defecto, NPS escucha el tráfico RADIUS en los puertos 1812, 1813, 1645 y 1646 en todos los adaptadores de red instalados. Si el Firewall de Windows con seguridad avanzada está activado al instalar NPS, se crean automáticamente reglas para estos puertos.
A nivel de data carving, NPS tiene la funcionalidad de almacenamiento de todos los registros generados por las cuentas en:
- Una base de datos en un servidor SQL
- En un archivo de texto en la maquina local, por defecto situado en C:\Windows\System32\LogFiles
- Simultáneamente en un servidor SQL y un archivo de texto.
Desde el punto de vista de la seguridad, RADIUS tiene debilidades relacionadas con uso del protocolo UDP. Su arquitectura le hace propenso a:
- Ataques de fuerza bruta sobre las credenciales del usuario.
- Denegación de servicio.
- Ataques de repetición de sesión.
- Inyección de paquetes.
Instalación de cliente RADIUS
El cliente Radius va utilizar Windows Server 2019 Standard. En este caso no tenemos la necesidad de instalar ningún rol previo. Pero no es raro que un servidor realice varias funciones para aprovechar su capacidad, aunque a nivel de seguridad pueda ser recomendable subdividir funcionalidades. Lo único que voy a hacer es incluirlo en el dominio radius.brs como un cliente más, sin funciones de controlador de dominio.
Abrimos el Administrador del servidor y seleccionamos Agregar roles y características.
Seguimos el procedimiento de asistente visto en la etapa anterior. Realizamos una instalación basada en características o en roles. Seleccionamos Acceso remoto como rol a instalar.
La pantalla de presentación de esta función incluye una descripción bastante completa.
Acceso remoto es una función bastante amplia que integra diferentes tipos de servicios agrupados en tres áreas:
- DirectAccess y VPN (RAS)
- Enrutamiento
- Proxy de aplicación web
Hacemos clic en siguiente y marcamos DireccAccess y VPN (RAS). Lo que añade algunas herramientas a la cola de instalación.
El primero, nos permitirá obtener acceso desde redes externas usando o la tecnología DirectAccess o con VPN.
El segundo, dota a nuestro servidor de funcionalidad de router.
Finalmente, el proxy cumple la función de publicar aplicaciones basadas en la web.
Seleccionamos Agregar características. En los pasos siguientes incluye como requisito la instalación de IIS y de herramientas propias de este tipo de servidor.
Como muchos de los roles, requiere configuración previa una vez instalado.
Si lo preferimos, nos podemos ahorrar todo esto instalando desde PowerShell.
Install-WindowsFeature DirectAccess-VPN -IncludeManagementTools
Configuración de servidor RADIUS
Abrimos el Servidor de directivas de redes desde uno de los tres sitios posibles:
- Desde el Administrador del servidor, en Herramientas.
- Utilizando Herramientas administrativas de Windows desde el menú inicio.
- O desde PowerShell:
nps.msc
Esta herramienta, como casi todas las basadas en Microsoft Management Console (MMC) está estructurada con un panel izquierdo con estructura en arbol para navegar por las opciones, un panel central con el detalle de lo marcado en el izquierdo y tenemos la posibilidad de agregar un panel derecho con acciones a realizar.
Comenzaremos autorizando al servidor NPS para usar Active Directory en la autenticación de usuarios y grupos. Se hace con clic derecho en NPS y luego registramos el servidor. Además, esto permite el control de usuarios a través de las propiedades de marcado.
En la pantalla de presentación, vemos como se nos solicita configurar el servidor de directivas de redes.
Podemos elegir dos perfiles de servidor:
- Para conexiones VPN o de acceso telefónico.
- Para conexiones cableadas o inalámbricas 802.1X.
Nosotros vamos a implementar un Servidor RADIUS para conexiones VPN, donde deseamos controlar el acceso desde el exterior. El otro perfil está destinado a securizar las redes internas de una organización ya sea usando algún tipo de cableado o conexión inalámbrica.
Hacemos clic sobre Configurar VPN o Acceso telefónico.
Seleccionamos la segunda opción y rellenamos un nombre para la directiva: VPN Sistemas.
En el siguiente paso indicaremos los clientes RADIUS que queremos incluir. Si lo necesitamos podemos agregar uno o varios.
También podemos agregar nuevos clientes si navegamos por el panel izquierdo hasta Clientes y servidores RADIUS y después Clientes RADIUS.
Hacemos clic derecho sobre ese elemento y marcamos Nuevo. Apareciendo la ventana para agregar el cliente.
Qué debemos rellenar. Todo:
- Un nombre para el cliente, no tiene porqué ser el nombre de la máquina.
- El nombre de la máquina o la dirección IP, y la debemos validar. Como nuestro cliente dispone de dos tarjetas de red, usaremos la interna (que es la del mismo rango que este servidor).
- Generaremos o introduciremos un secreto compartido. Nos advierte de que algunos clientes RADIUS no soportan claves largas y nos podemos ver obligados a modificarla. Yo he puesto: fSHJzvP7A2xe#VeBJRPrxHLiEzRDaLvTKUXl#ssLCxAuI#W@ghPG2QybudPQoHG
En la segunda pestaña es posible indicar el nombre del proveedor, lo dejamos en RADIUS Standard. Si se tratara de un punto de acceso o dispositivo de alguna marca, sería recomendable seleccionarla para aprovechar sus características especiales.
Vamos al paso siguiente.
Elegimos el método de autenticación entre:
- EAP-TLS (certificados)
- PEAP-MS-CHAP v2 (certificados)
- MS-CHAP (contraseñas)
- MS-CHAP v2 (contraseñas)
NPS admite métodos de autenticación basados en contraseña y basados en certificados. Tenemos que tener en consideración qué métodos admite el cliente para seleccionar uno u otro y no solo el propio interés o la seguridad. Podría ser necesario configurar un tipo para cada una.
Los métodos de autenticación basados en certificados tienen la ventaja de proporcionar una gran seguridad, pero requieren más trabajo de implementación.
Para EAP-TLS necesitaríamos montar una PKI y se produciría una autenticación con certificados tanto de cliente como de servidor. Con PEAP-MS-CHAP v2 se usa un certificado para la autenticación del servidor y credenciales para los usuarios. No requiere PKI y además podríamos utilizar Active Directory servicios de Certificate Server (AD CS) para la inscripción de certificados en NPS. PEAP-MS-CHAP v2 está especialmente diseñada para portátiles y otros dispositivos. Permite una reconexión rápida sin necesitar volver a autenticar. Por eso se usa más como método de autenticación para las conexiones inalámbricas. Y EAP-TLS por su robusta seguridad para VPN.
Como no queremos complicar esto en exceso, vamos a optar por autenticación por contraseñas.
Básicamente, MS-CHAP v2 es más seguro, proporciona autenticación mutua, claves de cifrado de datos iniciales más fuertes y claves de cifrado diferentes para el envío y la recepción. La clave criptográfica se basa siempre en la contraseña del usuario y en una cadena de desafío aleatoria. Cada vez que se autentifica, se utiliza una nueva cadena. MS-CHAP v1 se utilizaba principalmente en Windows 2000, desde Windows Vista ya no está soportado. Utiliza una clave de cifrado de 40 bits basada en la contraseña del usuario. Solo se utiliza por compatibilidad con dispositivos antiguos.
Tras todo esta explicación, seleccionamos MS-CHAP v2.
En el siguiente paso nos solicita indicar los grupos que se verán afectados por esta configuración. Es evidente que se trata de una buena práctica, pues nos permite sacar o meter de ese grupo a los usuarios que queremos que tengan acceso exterior. Si no rellenáramos ninguno, afectaría a todos los usuarios del dominio.
Agrego el grupo Acceso VPN, que he creado ex profeso. Y continuo con el asistente.
En esta etapa ajustamos el filtrado IP.
Podríamos limitar el tráfico tanto de entrada como de salida. Disponer solo acceso a varias direcciones IP, algunos protocolos, etcétera. En la configuración de la imagen se permite solo el uso del protocolo RDP que utiliza el puerto 3389 tanto en TCP como UDP.
No vamos a definir ninguna, pues se trata de una configuración para el departamento de sistemas.
Debemos configurar el cifrado que queremos permitir para el tráfico entre los clientes y el servidor. MPPE significa cifrado punto a punto de Microsoft, y se usa a menudo para conexiones PPTP y conexiones de acceso telefónico.
¿40 bits?. Es solo una propuesta por si necesitamos compatibilidad, pero hoy día podemos desmarcar tranquilamente las dos primeras opciones. Si quitamos todas, no usaremos cifrado. Dejaremos activo 128 bits, que ya de por sí es algo pobre.
Ahora se nos ofrece especificar un nombre de dominio kerberos. En nuestro caso el valor sería radius.brs, la utilidad de rellenarlo está dirigida a simplificar la experiencia del usuario cuando solo se accede desde un dominio, pero si trabajamos con varios, que tienen establecida confianza entre ellos, deja de tener sentido. No configuramos nada y clicamos en siguiente.
El asistente nos permite acceder a un resumen de las directivas y finalizamos su creación.
Se han creado dos tipos de directivas:
- Directivas de solicitud de conexión
- Directivas de red
La directiva de conexión, solo define que las solicitudes de autenticación las validará este servidor.
La directiva de red incluye el resto de opciones configuradas en el asistente. La marca verde indica que es una directiva de conceder acceso y la roja de denegar.
Es importante reseñar que en esta consola de administración podemos crear diferentes tipos de plantilla para facilitar la gestión:
- Secretos compartidos. Este tipo de plantilla permite especificar un secreto compartido que se puede reutilizar al configurar clientes y servidores RADIUS.
- Clientes RADIUS. Configura las opciones de cliente RADIUS.
- Servidores RADIUS remotos. Abarca las opciones de servidores RADIUS remotos.
- Filtros IP. Filtros IPv4 e IPv6 como los que hemos visto antes.
En casi todas las etapas del asistente hemos podido utilizar alguna plantilla, si la hubieramos creado previamente.
Configuración de servidor RADIUS con PowerShell
Si has relalizado la configuración en entorno gráfico puedes ahorrarte esta parte, a no ser que desees conocer un poco más sobre la administración de NPS.
Sapere aude
Con solo los dos próximos cmdlet ya obtienes un gran beneficio por seguir leyendo.
Una de las máximas de la administración moderna en Windows es que casi todo es posible realizarlo en entorno gráfico y PowerShell. Administra NPS desde la herramienta Servidor de directivas de redes y luego exporta todo lo realizado con:
Export-NpsConfiguration -Path “C:\NpsConfiguracion.xml”
Consérva esa configuración y si necesitas restaurarla en un servidor nuevo, impórtala con:
Import-NpsConfiguration -Path “C:\NpsConfiguracion.xml”
Los clientes RADIUS ser crean con:
New-NpsRadiusClient -Name “Cliente RADIUS” -Address “192.168.11.11” -SharedSecret “fSHJzvP7A2xe#VeBJRPrxHLiEzRDaLvTKUXl#ssLCxAuI#W@ghPG2QybudPQoHG” -VendorName “Radius Standard”Restart-Service IAS
Se necesita reiniciar el servicio para comprobar que se ha aplicado.
Si hemos creado alguna plantilla de secreto compartido y queremos verla en pantalla:
Get-NPSSharedSecretTemplate
Poco más podemos hacer en este servicio. Si lo necesitas, tienes más comandos en la página de Microsoft.
Configuración del cliente RADIUS
Ya nos habíamos olvidado de él. Continuamos configurando el cliente RADIUS.
En el Administrador del servidor tenemos una alerta para que iniciemos un asistente de introducción.
En la primera pantalla nos ofrece tres opciones para elegir:
- DirectAccess + VPN
- DirectAccess
- VPN
Marcamos la tercera opción y abre la herramienta Enrutamiento y acceso remoto.
También podríamos abrirla desde:
rrasmgmt.msc
Esta herramienta es una de las más versátiles y utilizadas en un Windows Server. Además, de las que más ayuda podemos encontrar pues está ahí casi sin diferencias desde Windows NT.
En ella podemos configurar:
- Acceso telefónico
- Acceso VPN
- Conexión entre suscursales
- NAT
- Enrutamiento LAN
La aplicación muestra una ventana partida. En la izquierda vemos los elementos y la derecha el detalle.
En la izquierda, seleccionamos nuestro servidor con el botón derecho y hacemos clic sobre la opción Configurar y habilitar Enrutamiento y acceso remoto. Esto lanza un asistente que muestra una pantalla de bienvenida. Pulsamos en Siguiente.
Aparece un listado de opciones, nos quedamos con la primera: Acceso remoto (acceso telefónico o red privada virtual). Continuamos y marcamos VPN.
En el siguiente paso aparecen las tarjetas de red de nuestro equipo y seleccionamos la que tenga acceso a Internet. Pero ojo, debemos marcar Habilitar seguridad en la interfaz seleccionada configurando filtros de paquetes estáticos.
A continuación, definimos cómo se otorgarán las direcciones IP a los equipos cliente. Podemos elegir entre automáticamente o un rango específico que definamos para las conexiones externas. Yo soy más partidario de esto último, porque nos permitirá diferenciar mejor el tráfico.
He optado por dejar el rando de direcciones entre 192.168.11.230 y 192.168.11.249. Son 20 direcciones en total. Avanzamos.
Tenemos que deicidir si usamos un servidor RADIUS para autentificar las conexiones entrantes o lo haremos directamente con Enrutamiento y acceso remoto. Seleccionamos las segunda opción, para eso hemos instalado un servidor RADIUS.
Esta es la etapa en la que necesitamos indicar el servidor RADIUS (puede ser por nombre o IP) y, si lo deseamos, algún servidor alternativo. No consideramos que nuestra red vaya a recibir tantas peticiones ni es una función tan crítica como para necesitar respaldo. Por último, rellenamos el secreto compartido que definimos en el servidor RADIUS para este cliente. Porque es importante recordar que se puede establecer uno diferente para cada cliente.
Finalizamos nuestro asistente con un resumen de lo realizado.
Al hacer clic sobre finalizar iniciará el servicio para su puesta en funcionamiento. Si recibimos un error, es bastante frecuente, puede ser debido a que necesitemos habiliar manualmente Enrutamiento y acceso remoto en el Firewall de Windows.
Se volverá a abrir la herramienta pero ya habilitada.
Hacemos clic derecho, sobre nuestro cliente radius en el panel de la izquierda y posteriormente en Propiedades.
Seleccionadmos la pestaña Seguridad y luego en el botón Métodos de autenticación. Por defecto, intenta dejar marcado el método más seguro, que es EAP. Nosotros solo vamos a utilizar MS-CHAP v2. Aceptamos.
El resto de opciones de Seguridad las dejamos como están. Al hacer clic en el botón aceptar es posible que reinicie el servicio y tarde un poco en implementar la configuración.
Configuración de cliente RADIUS con PowerShell
Como anteriormente indicamos podemos instalar el rol desde PowerShell.
Install-WindowsFeature DirectAccess-VPN -IncludeManagementTools
Comprobamos el cumplimiento de prerrequisitos:
Install-RemoteAccess -PreRequisite
Procedemos a la instalación de VPN:
Install-RemoteAccess -VpnType VPN -RadiusServer 192.168.11.10 -SharedSecret “fSHJzvP7A2xe#VeBJRPrxHLiEzRDaLvTKUXl#ssLCxAuI#W@ghPG2QybudPQoHG” -IPAddressRange 192.168.11.230, 192.168.11.249
¿Qué estamos haciendo? En un mismo comando le indicamos que queremos habilitar VPN y le pasamos la configuración RADIUS y el rango de direcciones que vamos a utilizar para conceder a los cientes.
Reiniciamos el servicio:
Restart-Service RemoteAccess
Si queremos obtener la configuración generada hasta ahora, utilizamos:
Get-RemoteAccess
Nos falta establecer el servidor RADIUS para autenticación de cuentas y no solo de directivas de acceso. Necesitamos reiniciar el servicio.
Set-RemoteAccessAccounting -EnableAccountingType ExternalRadius -RadiusServer 192.168.11.10 -SharedSecret “fSHJzvP7A2xe#VeBJRPrxHLiEzRDaLvTKUXl#ssLCxAuI#W@ghPG2QybudPQoHG”Restart-Service RemoteAccess
Visualizamos por pantalla la configuración:
Get-RemoteAccessAccounting
Ahora definiremos las seguridad de VPN que utilizaremos:
Set-VpnAuthProtocol -UserAuthProtocolAccepted MsChapv2 Restart-Service RemoteAccess
Otros cmdlet útiles son:
# Ver el estado de las conexiones actuales
Get-RemoteAccessConnectionStatisticsSummary# Listado de servidores RADIUS configurados
Get-RemoteAccessRadius# Obtener un listado de conexiones de un usuario
Get-RemoteAccessUserActivity -UserName “RADIUS\Carlos”# Desinstala el servidor
Uninstall-RemoteAccess
Si necesitas más comandos con los que trabajar puedes acudir a la ayuda de Microsoft.
Por último, es importante tener en cuenta que administrar el servidor mediante PowerShell conlleva que el uso de la herramienta de interfaz gráfica se deshabilita.
Configuración del cliente del usuario
Incorporamos una nueva pieza a nuestro proyecto. El cliente que va a utilizar el usuario.
Independientemente de la configuración del equipo, y casi del sistema operativo, podremos conectarnos con una conexión VPN a nuestra red empresarial. Nos permitirá realizar las tareas como si estuvieramos en la propia empresa.
Hacemos clic en el menú de Inicio, Configuración, Red e Internet y en la parte izquierda en VPN.
Pulsamos el botón de
+Agregar una conexión VPN
Como proveedor de VPN, selecionamos Windows (integrado). Es posible instalar otros proveedores, como Fortinet, que te permiten utilizar sus servicios pero desde la interfaz integrada de Windows.
Nombre de conexión, trabajo u otro que te resulte reconocible.
Nombre de servidor o dirección IP. Suele tratarse de un dominio de internet o una IP externa de router. En nuestro caso el cliente RADIUS actua como tal, por eso rellenamos su IP (10.0.2.4) de la red NAT, que actua como externa.
Tipo de VPN, hace referencia al sistema de conexión y seguridad, seleccionamos PPTP. Aunque de las que aparecen, L2TP/IPsec con certificado seguramente sea la más segura, no forma parte de nuestro proyecto.
Windows Server 2019 incluye la posibilidad de configurar varios tipos de cifrado para VPN:
- PPTP (Point to Point Tunnelling Protocol). Puerto TCP 1723.
- SSTP (Secure Socket Tunnelling Protocol). Puerto TCP 443.
- IKEv2 (Internet Key Exchange v2) Usa UDP con el puerto 500.
- L2TP (Layer 2 Tunneling Protocol) Puertos UDP 1701 y 4500. Además ID de Protocolo IP 50.
Según el tipo de cifrado deberíamos asegurarnos de la apertura de sus puertos en el cortafuegos y realizar ajustes para ponerlo en marcha.
En nombre de usuario y contraseña, cumplimentaremos el nuestro. Que debe estar entre los permitidos para acceder en NPS de nuestro servidor RADIUS.
Guardamos.
Ya tenemos nuestra conexión creada y solo deberemos pulsar en conectar para poder sacarle partido.
Como podemos ver desde la bandeja del sistema, el equipo está conectado a la red Trabajo. Cuando necesitemos realizar la conexión en futuras ocasiones, este es el lugar más directo donde iniciar la conexión remota. De la misma manera se hace en Windows 7.
Desde el equipo cliente del usuario, podemos comprobar que la conexión se ha realizado correctamente.
Si lo miramos desde el punto de vista del servidor, podemos otear en la herramienta Enrutamiento y Acceso remoto. En puertos.
Y en clientes.
Tenemos listo nuestro sistema de conexión remota.
Creación de conexión en Windows 10 utilizando PowerShell
También es posible crear la conexión del cliente usando PowerShell.
Tan solo debemos ejecutar:
Add-VpnConnection -Name “Trabajo” -ServerAddress “10.0.2.4” -TunnelType PPTP -AuthenticationMethod MSChapv2 -RememberCredential
Para más información sobre el cliente VPN en PowerShell.