NetScaler One Time Password (OTP)

Introducción

Desde la versión 12 (build 53.13) en adelante, Citrix NetScaler incorporó la opción del One Time Password (OTP), de forma nativa. Esta opción nos permite generar un passcode o Token y administrar la semilla desde el mismo NetScaler. Para poder configurar esta opción, debemos tener en cuenta los siguientes prerrequisitos:

  • Las licencias deben ser Advance o Premium.
  • Debemos tener configurado Unified Gateway y los perfiles de nuestro AAA Server, deben estar asignadas a nuestro Gateway Virtual Server.
  • Se tiene que poder acceder al management del equipo por consola y por línea de comandos.
  • Poder configurar AAA Server (Authentication Authorization Auditing Virtual Server).
  • La solución Nativa de OTP está restringida al flujo de autentificación nFactor.
  • Los atributos del AD deben ser de mínimo 256 caracteres.
  • Los atributos a utilizar deben ser del tipo “DirectoryString” como ser UserParameters. Estos atributos pueden contener “strings”.
  • Si no utilizamos caracteres en Ingles, debemos tener configurado los strings para que sean Unicode.
  • El usuario configurado para establecer la conexión por LDAP contra el AD, debe tener permisos de escritura sobre el atributo seleccionado.
  • Los dispositivos involucrados deben tener la hora sincronizada.

Configuración de OTP

Lo primero que debemos configurar es la autenticación por LDAP, para ello vamos a “Security” ⇾ AAA – Application Traffic ⇾ “Add”.

Debemos colocar un nombre para este Virtual Server, en el ejemplo vamos a llamarlo “OTP_auth“. Este Virtual Server no es necesario que tenga IP, con lo cual vamos a seleccionar la opción “Non addressable” y presionamos OK.

Al presionar OK, si no tenemos habilitada la función “AAA”, nos preguntará si queremos habilitarla para lo cual seleccionamos “Yes”.

En la siguiente pantalla vamos a cargar el certificado, para lo cual hacemos click en “No Server Certificate”.

Vamos a la opción que dice “Click to select” ⇾ Seleccionamos el certificado, (en mi caso es un wildcard) y efectuamos el “Binding” al vServer.

Luego en “Advance Authentication Policies” seleccionamos “NO Authentication Policy”. En esta sección vamos a configurar los perfiles y políticas de autenticación.

Vamos a añadir una “Policy”, haciendo click en “Add”.

En la mayoría de los casos tenemos ya configurada la autenticación por LDAP, con lo cual le cargamos un nombre en mi caso “authsrv_LDAP”, action type “LDAP” y en “Action” si ya tenemos la acción de autenticación default de LDAP configurada para ingresar al NetScaler con usuario de dominio seleccionamos esa, en mi caso se llama “LDAP-N-Auth”. Si no lo tienen configurado deben seleccionar el botón “Add”. Vamos a configurar la acción de LDAP de la siguiente manera:

Name: colocamos el nombre de la acción.
IP Address: Colocar la IP del server AD.
Security Type: SSL esto nos cambia el puerto automáticamente
Server Type: AD.
Authentication: debemos dejar tildada esta opción.
Base DN: Colocar la info del dominio.
Administrator Bind DN: Colocar usuario con privilegios del AD.
Password: Cargar la misma y realizar test haciendo click en la opción “Test Network connectivity”.
Server Logon Name Attribute: sAMAccountName
Group Attribute: memberOf
Sub Attribute Name: cn

Dejamos todo el resto por default y presionamos “OK”.

Luego para finalizar con la política en “Expression” ponemos “true” y hacemos click sobre el botón “Create”.

Con la acción que autentica, ahora vamos a generar dos acciones más propias del OTP y la validación del atributo. Para hacerlo vamos a “Select Next Factor” ⇾ “Add” ⇾ Colocamos el nombre de la política en mi caso “OTP_Auth_Schema”, dejamos el resto como está y vamos a hacer click en “Continue”. En “Select Policy” hacemos click en “Add” ⇾ Colocamos el nombre, en mi caso “LDAP_OTP_NoAuth” ⇾ Action Type “LDAP” y en Action hacemos click en “Add”. La configuración es igual a la primera acción de LDAP, pero cambiamos el nombre, en mi caso “LDAP_OTP_NoAuth”, debemos dejar sin marcar la opción “Authentication” y en “OTP Secret” cargamos “userParameters”.

Luego de crear la acción en la sección “Expression” de la política colocamos “HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”)” y presionamos “Create”. En la siguiente ventana hacemos click en “Bind”.

Ahora vamos a generar un nuevo “Binding” haciendo click en “Add Binding”, colocamos el nombre de la política, en mi caso “LDAP_OTP_NoAuth_valid” ⇾ “Action Type” ⇾ “LDAP” y en “Action” hacemos click en “Add”. Debemos generar una acción igual a la anterior “LDAP_OTP_NoAuth“, con las mismas opciones pero agregando en la sección “Search Filter” el filtro “userParameters>=#@”. Creamos la acción y para finalizar la política agregamos en la parte donde dice “Expression”, ponemos “true”. Seleccionamos “Create” y en la siguiente pantalla “Bind”. Debemos validar que la prioridad “Priority” quede la primera en 100 y la segunda 110. Seleccionamos “Done”, en la siguiente ventana “Bind” y finalizamos con esta sección.

Ahora vamos a configurar el “Login Schema”, vamos a hacer click en La opción situada a la derecha del vServer y se va a agregar la opción abajo de todo. Hacemos click en “No Login Schema”. En “Select Policy” hacemos click en “Add” ⇾ Colocamos el nombre, en mi caso “Single_Manage_OTP_Schema” ⇾ Profile ⇾ “Add”. Colocamos el nombre, en mi caso “Single_Manage_OTP_Schema” y hacemos click en “Authentication Schema”. Debemos seleccionar el Schema que dice “SingleAuthManageOTP.xml” y presionar “Select”. En la siguiente pantalla hacemos click en “Create”, en “Rules” cargamos “HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”)“, hacemos click en “Create” y luego en “Bind”.

Ahora vamos a cargar nuestro segundo “Login Schema”, para lo cual volvemos a hacer click en “Login Schema” dentro del vServer. Hacemos click en “Add Binding” ⇾ “Select Policy” ⇾ “Add”, colocamos el nombre de nuestro segundo Schema, en mi caso “Dual_OTP_Schema” y en “Profile” seleccionamos “Add”. Cargamos el nombre en mi caso “Dual_OTP_Schema” y hacemos click en “Authentication Schema” ⇾ “DualAuth.xml” ⇾ “Select”, desplegamos la opción “more” y completamos los campos “Password Credential Index”, ponemos valor 1 y marcamos “Enable Single Sign On Credentials” y presionamos “OK”. En “Rule” colocamos “true” y Presionamos “Create”“Bind”“Close”.

Ahora para finalizar esta etapa, vamos a cargar el “Portal Theme”. En el vServer a la derecha hacemos click en “Portal Theme” y eso carga al final del vServer la opción, desplegar y dejar seleccionado “RfWebUI” ⇾ “OK” ⇾ “Done”. De esta forma finalizamos la configuración del vServer para la autenticación.

Para terminar las configuraciones generales debemos editar el “VPN Virtual Server”. Editamos el “Virtual Server” ⇾ A la derecha seleccionamos “Authentication Profile” ⇾ Vamos hasta el final de la página y seleccionamos “Add” ⇾ Cargamos el nombre, en mi caso “OTP_Auth_Prof” y en “Authentication Virtual Server” hacemos click en “Click to select”, vamos a seleccionar el Server que generamos en los pasos anteriores y seleccionamos “Crear”“OK”.

Ahora debemos cargar una “Política” para el tráfico y que el mismo intercepte el Atributo asignado. Para hacerlo a la derecha seleccionamos “Policies” ⇾ “+” → Chose Policy “Traffic” ⇾ “Continue” ⇾ Select Policy “Add” ⇾ Colocamos el nombre, en mi caso “OTP_Policy” ⇾ Request Profile “Add” ⇾ Modificamos solamente el campo “SSO Password Expression” colocando “http.REQ.USER.ATTRIBUTE(1)” ⇾ “Create” ⇾ Agregamos en “Expression” “true” ⇾ “Create” ⇾ “Bind”. De esta forma ya dejamos el vServer Gateway configurado y podremos probar el sistema.

Vamos a acceder a la URL que configuramos, en mi caso “https://xdxa.test.local/manageotp” y hacemos “Login” con nuestro usuario de dominio ⇾ “Agregar dispositivo” ⇾ Colocamos el nombre que queremos darle y presionamos “Ir”. Se va a desplegar el “QR” y el “Código”, esto podemos escanearlo con “Google Authenticator”. Cuando en el Authenticator veamos que queda cargado, presionamos “Listo” y aparecerá un cartel indicando que fue cargado de manera satisfactoria. Podemos seleccionar la opción “Probar” para ver que la validación sea correcta. Si es correcta, ya podremos acceder a nuestra URL de manera normal, en mi caso es “https://xdxa.test.local” y hacer login con nuestro usuario de dominio, clave y passcode, pudiendo acceder de esta manera a nuestras Apps y Desktops.

De esta forma finalizamos la configuración de OTP en Citrix NetScaler.

Author: Nicolas Ventre

Virtualization architect with more than 15 years implementing complex environments. Security Specialist and Linux instructor