# Citrix VPN

> Proteger Citrix Gateway con Ironchip por RADIUS y NPS: configurar RADIUS, LDAP y el servidor virtual de Citrix, y depurar problemas de autenticación.

URL: https://docs.ironchip.com/identidad/integraciones/red/citrix/

Esta guía explica cómo integrar tu VPN de **Citrix** con la autenticación de Ironchip mediante [RADIUS](https://docs.ironchip.com/identidad/protocolos/radius/).

## Requisitos

- Un servidor Windows con [NPS](https://docs.ironchip.com/identidad/integraciones/red/nps/) protegido por Ironchip.
- Acceso a la consola de administración de Ironchip.
- Citrix VPN implementado y funcional.

## Configuración en Windows Server

1. Crea un cliente RADIUS que apunte a la dirección IP de tu instalación de Citrix.

   [Imagen: Cliente RADIUS en NPS apuntando a la IP de Citrix]

2. Comprueba que el cortafuegos del servidor tiene una regla que acepta los puertos de LDAP y RADIUS.

## Configuración en Citrix

### RADIUS

1. En el panel de configuración de Citrix, ve a **Citrix Gateway > Policies > Authentication > RADIUS > Servers** y haz clic en **Add**.

   [Imagen: Menú Citrix Gateway > Policies > Authentication > RADIUS > Servers]

2. Rellena los datos:

   - **Name**: un nombre descriptivo para la configuración.
   - **IP Address** y **Port**: la IP y el puerto por los que Citrix se comunicará con tu servidor RADIUS.
   - **Secret Key** y **Confirm Secret Key**: el secreto compartido de tu servidor RADIUS.
   - **Transport**: el protocolo de transporte.
   - **Time-out (seconds)**: `60`.

   [Imagen: Formulario del servidor RADIUS en Citrix]

3. Despliega **More**.

   [Imagen: Desplegable More del servidor RADIUS]

4. Ve al final de la página y modifica estos parámetros:

   - **Password Encoding**: `mschapv2`.
   - **Authentication Server Retry**: `1`.
   - Comprueba que la casilla **Authentication** está marcada.

   [Imagen: Parámetros Password Encoding, Server Retry y Authentication]

5. Haz clic en **OK** y guarda la configuración.
6. Ve al apartado **Policies** y crea dos políticas que apunten al servidor RADIUS creado. Los nombres son opcionales, pero te recomendamos usar los mismos para facilitar los pasos siguientes.

   | Nombre                | Expresión                                               |
   | --------------------- | ------------------------------------------------------- |
   | `ReceiverSelfService` | `REQ.HTTP.HEADER User-Agent CONTAINS CitrixReceiver`    |
   | `ReceiverForWeb`      | `REQ.HTTP.HEADER User-Agent NOTCONTAINS CitrixReceiver` |

   [Imagen: Políticas RADIUS ReceiverSelfService y ReceiverForWeb]

### LDAP

Hace falta una segunda autenticación por LDAP. Solo sirve para que Citrix lea los usuarios del Active Directory, no para iniciar sesión.

1. Ve a **Citrix Gateway > Policies > Authentication > LDAP > Servers** y haz clic en **Add**.

   [Imagen: Menú Citrix Gateway > Policies > Authentication > LDAP > Servers]

2. Modifica los parámetros:

   - **Name**: un nombre descriptivo.
   - **IP Address**, **Security Type** y **Port**: la IP de tu servidor RADIUS, el tipo de seguridad y el puerto LDAP. Te recomendamos SSL con el puerto `636`.
   - **Server Type**, **Time-out (seconds)** en `60` y la opción **Authentication** desmarcada.
   - En **Connection Settings**, tu dominio en formato `DC=,DC=` en **Base DN (location of users)** y el **Administrator Bind DN** con su contraseña. Para obtener el Bind DN, ejecuta en PowerShell `get-aduser <usuario> -Properties *` y busca el parámetro `DistinguishedName`.

   [Imagen: Formulario del servidor LDAP en Citrix]

3. Cambia **Server Logon Name Attribute** a `SamaccountName` y guarda la configuración.

   [Imagen: Parámetro Server Logon Name Attribute con SamaccountName]

4. Ve al apartado **Policies** y crea dos políticas que apunten al servidor LDAP creado. Los nombres son opcionales, pero te recomendamos usar los mismos.

   | Nombre                          | Expresión                                               |
   | ------------------------------- | ------------------------------------------------------- |
   | `LDAP-Corp-ReceiverSelfService` | `REQ.HTTP.HEADER User-Agent CONTAINS CitrixReceiver`    |
   | `LDAP-Corp-ReceiverForWeb`      | `REQ.HTTP.HEADER User-Agent NOTCONTAINS CitrixReceiver` |

   [Imagen: Políticas LDAP LDAP-Corp-ReceiverSelfService y LDAP-Corp-ReceiverForWeb]

### Servidor virtual de Citrix

1. Ve a la configuración de **Virtual Servers** y edita el que aloja la VPN.

   [Imagen: Lista de Virtual Servers en Citrix]

2. En **Basic Authentication**, añade las cuatro políticas creadas en este orden:

   | Política                        | Tipo   | Prioridad |
   | ------------------------------- | ------ | --------- |
   | `LDAP-Corp-ReceiverForWeb`      | LDAP   | Primary   |
   | `ReceiverSelfService`           | RADIUS | Primary   |
   | `LDAP-Corp-ReceiverSelfService` | LDAP   | Secondary |
   | `ReceiverForWeb`                | RADIUS | Secondary |

   [Imagen: Políticas de autenticación añadidas al servidor virtual]

## Comprobación

En la consola de administración de Ironchip, da acceso a los usuarios a la aplicación creada para este servicio. Al iniciar sesión en la VPN, después de introducir usuario y contraseña, se te pedirá que te autentiques con Ironchip.

## Problemas frecuentes

### Ver el registro de autenticación

Para depurar la autenticación y ver un registro completo en tiempo real:

1. Conéctate a la interfaz de línea de comandos del ADC (Application Delivery Controller) con un cliente SSH.
2. Cambia al indicador de comandos de la shell:

   ```bash
   shell
   ```

3. Cambia al directorio `/tmp`:

   ```bash
   cd /tmp
   ```

4. Inicia la depuración:

   ```bash
   cat aaad.debug
   ```
