Permitiendo autenticación de doble factor con SMS2 (gratuito) y NetScaler Gateway

En este post vamos a ver algo fabuloso, vamos a ver cómo habilitar 2FA o doble factor de autenticación en NetScaler Gateway, obligando a los usuarios a utilizar un Token adicional para el acceso corporativo a la organización. Usaremos SMS2 que es una herramienta gratuita, que mediante RADIUS validará los tokens de los usuarios, usaremos tokens de software mediante la app Google Authenticator en los móviles, una pasada!

 

Lo dicho, nos basaremos en el algoritmo TOTP (Time-based One-time Password), o contraseña de un solo uso basada en tiempo, normalmente estos códigos se actualizan cada 30 segundos. En los dispositivos móviles de los empleados bastará con instalar (por ejemplo) Google Authenticator y cada vez que accedan de manera externa al sitio Citrix, que presentará sus aplicaciones o escritorios, pues pondremos un factor más de autenticación, un nivel más de seguridad para evitar accesos aún que conozcan la contraseña del usuario. Últimamente, estamos conociendo, cada día más robos de contraseñas, a qué estás esperando para intentar securizar algo más tu entorno?

 

Configuración de NPS,

Deberemos tener el rol de de Servidor de directivas de redes o NPS (Network Policy Server) instalado y configurado para permitir consultas de RADIUS.

 

Instalamos “Servicios de acceso y directivas de redes” y sus características, bien por GUI o mediante PowerShell:

Install-WindowsFeature -Name npas

 

Abrimos la consola “Servidor de directivas de red. Lo primero que tendremos en cuenta será en las “Directivas de red” ir a las propiedades de la directiva “Conexiones a otros servidores de acceso”,

 

Seleccionamos “Conceder acceso” y marcamos “Omitir propiedades de marcado de cuentas de usuario”,

 

Ahora debemos de dar de alta todos los clientes RADIUS, o sea todas las máquinas que harán consultas, en principio con crear la máquina donde tenemos instalado el rol (para pruebas futuras) y la NetScaler Subnet IP nos valdrá, ya que el NetScaler hará las consultas a NPS con dicho adaptador. Por tanto, en “Clientes RADIUS” > “Nuevo”,

 

Indicamos el nombre de la máquina y la dirección IP que usará para permitirle consultas, además indicaremos un secreto que utilizaremos para autenticarnos.

 

Y creamos todos los equipos, lo dicho, con la IP de las máquinas que harán consultas bastará, bien nosotros localmente para hacer pruebas y la dirección IP SNIP del NetScaler.

 

Instalación y configuración de SMS2,

Wright SMS2 será la aplicación que utilicemos para permitir este 2FA, podremos instalarla en uno o varios equipos, normalmente junto al NPS, o en un DC. Esta utilidad es gratuita y disponible en su sitio web: http://www.wrightccs.com/support/download/

 

Comenzamos la instalación, “Next”,

 

Seleccionamos “Custom”,

 

Y quitamos la parte de CloudSMS y verificamos que instalamos todos los clientes, o al menos el tipo que nos interese, “Next”,

 

Pulsamos sobre “Configure AuthEngine”,

 

Introducimos la licencia gratuita que nos dan, al menos hasta Diciembre de 2022, podremos descargarla de aquí o usar esta misma:

<?xml version="1.0" encoding="utf-8"?>
<LicenseXml>
<AuthEngine>zslx2mEqlV+d7mf0FtgVW5+L1vUTXAE8wOvs3fxXwTQ=</AuthEngine>
</LicenseXml>

 

Dejamos la cuenta Local System para el servicio AuthEngine, “Next”,

 

Indicamos al AuthEngine que atienda a cualquier IP (0.0.0.0) usando el puerto 9060. Indicamos el FQDN de nuestro servidor LDAP o controlador de dominio, indicamos una cuenta de usuario específica que usaremos para las consultas de RADIUS, en mi caso la llamaremos “usuario_radius”, indicamos su contraseña del AD e indicamos cual es la BaseDN que usaremos como filtro para buscar usuarios. “Next”,

 

Necesitaremos un servidor SQL por algún lado, indicaremos su nombre e instancia, puerto, usuario de SQL o si queremos usar autenticación integrada, además del nombre de la BD que generará. “Next”,

 

Podemos configurar aquí el servidor de correo para las alertas de mail o si queremos el token vía mail, no es nuestro caso, podemos obviarlo, “Finish”.

 

Seguimos en el asistente de instalación, ahora pulsamos en “Configure OATHCalc”,

 

Dejamos la cuenta Local System para el servicio OathCalc, “Next”,

 

Dejamos los valores predeterminados, “Finish”,

 

Seguimos, vamos ahora a “Configure AdminGUI/Clients”,

 

Indicamos la dirección IP local del servidor con la que ofreceremos el servicio y el puerto 9060, “Finish”.

 

Ya podremos seguir con el asistente, “Next”,

 

Como indique que instalara todos los clientes y este trae también los ficheros del obsoleto Web Interface, podremos indicar donde queremos que nos los deje. Estos ficheros en principio no los usaremos. “Next”,

 

Y por fin, pulsamos en “Install” para comenzar con la instalación de SMS2,

 

… esperamos unos segundos…

 

“Finish”, ¡Instalación correcta!

 

Debemos editar el fichero de configuración, ubicado por defecto en “%ProgramFiles%\WrithCCS2\Settings\Configuration.xml”. Normalmente haremos las siguientes modificaciones, “AuthEngineChallengeResponse” lo dejaremos en “False” para poder utilizar Google Authenticator, además en los “AuthProviders” deberemos deshabilitarlos todos y dejar habilitado y predeterminado OATHCalc, quedando:

<Name>CloudSMS</Name>
...
<Enabled>false</Enabled>
<Default>false</Default>
...
<Name>OATHCalc</Name>
...
<Enabled>true</Enabled>
<Default>true</Default>
...
<Name>PINTAN</Name>
...
<Enabled>false</Enabled>
<Default>false</Default>
...
<Name>Email</Name>
...
<Enabled>false</Enabled>
<Default>false</Default>
...
<Name>Static</Name>
...
<Enabled>true</Enabled>
<Default>false</Default>
...

 

Tras los cambios, guardamos el fichero y reiniciamos los servicios “Wright AuthEngine” y “Wright OATHCalc”.

 

Probando SMS2

Ya podremos abrir la consola SMS2 Administration Console. ¡Ojo! que, para abrir esta consola debe existir un grupo llamado “Administrators” en la carpeta de Built-In de nuestro Directorio Activo, si no existe el grupo (que en Directorios Activos en Español se llama Administradores) o no eres miembro de él, no podrás ver todos los usuarios. Lo primero que haremos será al “usuario_radius” ponerle un token numerico estático (pej 123456) para hacer una prueba a continuación. Previamente, seleccionamos el usuario y pulsamos sobre “Authentication Options”,

 

En la pestaña “Auth Options” pulsamos “Static” y ponemos el token numérico que nos de la gana, lo necesitaremos así que documenta. “Save Configuration”. Y luego “Update Account Details” para grabar los cambios en el usuario específico.

 

Bien, vamos a probar si SMS2 está funcionando correctamente, para ello, podremos descargarnos NTRadPing 1.5, que es una utilidad  para hacer pruebas de RADIUS, podremos descargarla de: https://thwack.solarwinds.com/thread/14486. Esta prueba la haremos desde una de las máquinas que hayamos dado de alta en nuestro servidor NPS, en los clientes RADIUS, si os acordáis establecimos un secreto entonces, lo necesitaremos ahora.

Por tanto, una vez descargada, la ejecutamos e introducimos la dirección IP de nuestro servidor RADIUS y el puerto 1812, en “Radius Secret key” indicaremos el secreto que utilizamos al definir el Cliente RADIUS, indicamos el nombre del usuario “usuario_radius” y en “Password” debemos indicar el Token numérico que le acabamos de establecer en el paso anterior. Pulsamos sobre “Send” y si todo ha ido bien, veremos que validó la autenticación correctamente.

 

Configurando NetScaler,

Aunque voy a dejar los pasos mínimos, donde crearemos unas políticas de autenticación que aplicaremos a nuestro NetScaler Gateway, este proceso podría ser más largo, ya que se recomienda monitorizar con Load Balancing y ofrecer el servicio RADIUS desde aquí, por tanto obviare crear el Monitor, los Servicios, Servidores y Virtual Servers de LB para el servicio RADIUS. Iremos directamente a crear las directivas y aplicarlas al Gateway,

 

Daremos de alta lo primero de todo al servidor RADIUS, desde “Citrix Gateway” > “Policies” > “Authentication” > “RADIUS” > “Servers > “Add”, indicamos la dirección IP del servidor RADIUS y el puerto 1812, así como el secreto que utilizamos cuando dimos de alta la Subnet IP del NetScaler en el NPS. Podemos darle a “Test RADIUS Reachability” para probar la validación, debería de ir ok, pulsamos en “Create”,

 

Ahora vamos a crear las políticas de RADIUS, desde “Citrix Gateway” > “Policies” > “Authentication” > “RADIUS” > “Policies” > “Add”, creamos una política para dispositivos que usen Citrix Receiver, la asociamos al servidor RADIUS recién creado e indicamos la siguiente expresión:

REQ.HTTP.HEADER User-Agent CONTAINS CitrixReceiver

 

Creamos otra para los dispositivos que no usen Receiver (o Workspace), con la siguiente expresión:

REQ.HTTP.HEADER User-Agent NOTCONTAINS CitrixReceiver

Y lo mismo para LDAP, crearemos dos políticas iguales, una para accesos con dispositivos Citrix Receiver, desde “Citrix Gateway” > “Policies” > “Authentication” > “LDAP” > “Policies” > “Add”, con la siguiente expresión:

REQ.HTTP.HEADER User-Agent CONTAINS CitrixReceiver

Y acabamos con la última política para dispositivos que no usen Receiver,

REQ.HTTP.HEADER User-Agent NOTCONTAINS CitrixReceiver

 

Y ahora iremos a nuestro Virtual Server de NetScaler Gateway y las vincularemos, crearemos autenticaciones primarias y secundarias, para atender a los usuarios que se nos conecten, dejaremos como Primaria con prioridad 100 la Politica LDAP Sin Receiver, y con prioridad 90 la política RADIUS Receiver; como autenticaciones secundarias, usaremos a la inversa, esto es, con prioridad 100 la Politica RADIUS Sin Receiver, y con prioridad 90 la política LDAP Receiver.

 

Debemos modificar la politica de sesion que ya existirá y estará aplicada en nuestro Virtual Server Gateway, en mi caso la predeterminada ‘AC_OS_X.X.X.X’, ahí, en la pestaña “Client Experience”, en “Credential Index” debemos indicar “SECONDARY”. Y verificar que la otra politica de sesion (que también ya existirá), en este caso la ‘AC_WB_X.X.X.X’ usa “SECONDARY”, que será así de manera predeterminada.

 

En el NetScaler Gateway, como seguro sabemos y tenemos aplicado un tema corporativo, y si no lo has hecho deberías darle una imagen personalizad y agradable a tus usuarios, repasa este post si lo necesitas. Pues lo dicho, podremos personalizar el texto de los campos de texto que verán los usuarios, para indicar por ejemplo en el campo 2 que no pida “Contraseña 2” al usuario si no “Token” y así asimilan mejor qué es una contraseña y qué es un Token. Esto lo dicho, lo haremos en nuestro Virtual Server, en la sección del Tema, al pulsarlo podremos añadir el “Login Page” y personalizar dichos campos con un mejor texto.

 

Habilitando Tokens a los Usuarios del Directorio Activo,

De vuelta a SMS2, ya es hora de probar esto! Vamos a dar de alta un usuario!

 

Ahora debemos seleccionar los usuarios que nos interesa habilitar la autenticación 2FA, para ello, abrimos la ” SMS2 Administration Console”, sobre cada usuario que nos interese, lo seleccionamos y vamos a “Authentication Options”,

 

Habilitamos “OATHCalc”, indicamos que use el Token de tipo TOTP, en Authenticator podemos directamente indicarle que use Google Authenticator y pulsamos sobre “Generate Shared Secret”, nos dará un secreto o un código QR que debemos enviar al usuario para que desde su dispositivo móvil pueda dar de alta su cuenta.

 

Ahora ya por fin, teniendo un móvil a mano, instalada la app Google Authenticator y añadida la cuenta mediante el código QR, este usuario ya podría acceder a su portal de Citrix y a parte de indicar su usuario y contraseña, deberá especificar el Token temporal que obtenga únicamente desde este dispositivo móvil. Entrada blindada a nuestra empresa! A por más!

 

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!

Últimos Posts de: Héctor Herrero (ver todos)