Citrix ADC

Soporte RADIUS para Respondedor

El lenguaje de expresiones Citrix ADC contiene expresiones que pueden extraer información de solicitudes RADIUS y manipularlas. Estas expresiones permiten utilizar la función Responder para responder a las solicitudes RADIUS. Las directivas y acciones de respuesta pueden utilizar cualquier expresión que sea apropiada o relevante para una solicitud RADIUS. Las expresiones disponibles permiten identificar el tipo de mensaje RADIUS, extraer cualquier par atributo-valor (AVP) de la conexión y enviar respuestas diferentes sobre la base de esa información. También puede crear etiquetas de directiva que invoquen todas las directivas de respondedor para conexiones RADIUS.

Puede utilizar expresiones RADIUS para crear respuestas simples que no requieran comunicación con el servidor RADIUS al que se envió la solicitud. Cuando una directiva de respondedor coincide con una conexión, Citrix ADC construye y envía la respuesta RADIUS apropiada sin ponerse en contacto con el servidor de autenticación RADIUS. Por ejemplo, si la dirección IP de origen de una solicitud RADIUS proviene de una subred especificada en la directiva de respuesta, Citrix ADC puede responder a esa solicitud con un mensaje de rechazo de acceso o simplemente eliminar la solicitud.

También puede crear etiquetas de directiva para enrutar tipos específicos de solicitudes RADIUS a través de una serie de directivas adecuadas para dichas solicitudes.

Nota: Las expresiones RADIUS actuales no funcionan con atributos RADIUS IPv6.

La documentación de Citrix ADC para expresiones compatibles con RADIUS asume la familiaridad con la estructura básica y el propósito de las comunicaciones RADIUS. Si necesita más información sobre RADIUS, consulte la documentación del servidor RADIUS o busque en línea una introducción al protocolo RADIUS.

Configuración de directivas de respondedor para RADIUS

En el siguiente procedimiento se utiliza la línea de comandos de Citrix ADC para configurar una acción y una directiva de respuesta y enlazar la directiva a un punto de enlace global específico de RADIUS.

Para configurar una acción y una directiva Responder y enlazar la directiva:

En el símbolo del sistema, escriba los siguientes comandos:

  • add responder action <actName> <actType>
  • add responder policy <polName> <rule> <actName>
  • bind responder policy <polName> <priority> <nextExpr> -type <bindPoint> donde<bindPoint> representa uno de los puntos de enlace globales específicos de RADIUS.

Expresiones RADIUS para Responder

En una configuración de respondedor, puede utilizar las siguientes expresiones Citrix ADC para hacer referencia a varias partes de una solicitud RADIUS.

Identificación del tipo de conexión:

  • RADIUS.IS_CLIENT. Devuelve TRUE si la conexión es un mensaje de cliente (solicitud) RADIUS.

  • RADIUS.IS_SERVER. Devuelve TRUE si la conexión es un mensaje de servidor RADIUS (respuesta).

Expresiones de solicitud:

  • RADIUS.REQ.CODE. Devuelve el número que corresponde al tipo de solicitud RADIUS. Una derivada de la clase num_at. Por ejemplo, una solicitud de acceso RADIUS devolvería 1 (uno). Una solicitud de contabilidad RADIUS devolvería 4.
  • RADIUS.REQ.LENGTH. Devuelve la longitud de la solicitud RADIUS, incluido el encabezado. Una derivada de la clase num_at.
  • RADIUS.REQ.IDENTIFIER. Devuelve el identificador de solicitud RADIUS, un número asignado a cada solicitud que permite que la solicitud coincida con la respuesta correspondiente. Una derivada de la clase num_at.
  • RADIUS.REQ.AVP(<AVP Code No>).VALUE. Devuelve el valor de la primera aparición de este AVP como una cadena de tipo text_t.
  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number). Devuelve la instancia especificada del AVP como una cadena de tipo RAVP_T. Un AVP RADIUS específico puede aparecer varias veces en un mensaje RADIUS. INSTANCE (0) devuelve la primera instancia, INSTANCE (1) devuelve la segunda instancia, y así sucesivamente, hasta dieciséis instancias.
  • RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number). Devuelve el valor de la instancia especificada del AVP como una cadena de tipo text_t.
  • RADIUS.REQ.AVP(<AVP code no>).COUNT. Devuelve el número de instancias de un AVP específico en una conexión RADIUS, como un entero.
  • RADIUS.REQ.AVP(<AVP code no>).EXISTS. Devuelve TRUE si el tipo especificado de AVP existe en el mensaje, o FALSE si no lo hace.

Expresiones de respuesta:

Las expresiones de respuesta RADIUS son idénticas a las expresiones de solicitud RADIUS, excepto que RES reemplaza a REQ.

Conversión de tipos de valores AVP:

El ADC admite expresiones para convertir valores AVP RADIUS en los tipos de datos de texto, entero, entero sin signo, largo, sin signo, dirección IPv4, dirección ipv6, prefijo ipv6 y tiempo. La sintaxis es la misma que para otras expresiones de conversión de tipos de Citrix ADC.

Ejemplo:

El ADC admite expresiones para convertir valores AVP RADIUS en los tipos de datos de texto, entero, entero sin signo, largo, sin signo, dirección IPv4, dirección ipv6, prefijo ipv6 y tiempo. La sintaxis es la misma que para otras expresiones de conversión de tipos de Citrix ADC.

RADIUS.REQ.AVP(8).VALUE(0).typecast_ip_address_at

Expresiones de tipo AVP:

Citrix ADC admite expresiones para extraer valores AVP de RADIUS mediante los códigos enteros asignados descritos en RFC2865 y RFC2866. También puede utilizar alias de texto para realizar la misma tarea. A continuación se presentan algunos ejemplos.

  • RADIUS.REQ.AVP (1).VALUE o Radius.REQ.UserName.Value. Extrae el valor de nombre de usuario RADIUS.
  • RADIUS.REQ.AVP (4). VALUE o RADIUS.REQ. acct_session_id.value. Extrae el AVP ACCT-session-ID (código 44) del mensaje.
  • RADIUS.REQ.AVP (26). VALUE o RADIUS.REQ.VENDOR_SPECCI.VALUE. Extrae el valor específico del proveedor.

Los valores de los AVP RADIUS más utilizados se pueden extraer de la misma manera.

Puntos de enlace RADIUS:

Hay cuatro puntos de enlace globales disponibles para las directivas que contienen expresiones RADIUS.

  • RADIUS_REQ_OVERRIDE. Prioridad o anulación de la cola de directivas de solicitud.
  • RADIUS_REQ_DEFAULT. Cola de directivas de solicitudes estándar.
  • RADIUS_RES_OVERRIDE. Prioridad o anulación de la cola de directivas de respuesta.
  • RADIUS_RES_DEFAULT. Cola de directivas de respuesta estándar.

Expresiones específicas de la respuesta RADIUS:

  • RADIUS_RESPONDWITH. Responda con la respuesta RADIUS especificada. La respuesta se crea con expresiones Citrix ADC, tanto expresiones RADIUS como cualquier otra que sea aplicable.
  • RADIUS.NUEVO_RESPUESTA. Envía una nueva respuesta RADIUS al usuario.
  • RADIUS.NEW_ACCESSREJECT. Rechaza la solicitud RADIUS.
  • RADIUS.NEW_AVP. Agrega el nuevo AVP especificado a la respuesta.

Casos de uso

Los siguientes son los casos de uso para RADIUS con Responder.

Bloqueo de solicitudes RADIUS desde una red específica

Para configurar la función de respuesta para bloquear las solicitudes de autenticación de una red específica, comience por crear una acción de respuesta que rechace las solicitudes. Utilice la acción en una directiva que seleccione las solicitudes de las redes que quiere bloquear. Enlazar la directiva de respuesta a un punto de enlace global específico de RADIUS, especificando:

  • La prioridad
  • FIN como valor NextExpr, para asegurarse de que la evaluación de directivas se detiene cuando se coincide con esta directiva
  • RADIUS_REQ_OVERRIDE como la cola a la que se asigna la directiva, de modo que se evalúe antes que las directivas asignadas a la cola predeterminada

Para configurar Responder para bloquear los inicios de sesión de una red específica**

  • add responder action <actName> <actType>
  • add responder policy <polName> <rule> <actName>
  • bind responder global <polName> <priority> <nextExpr> -type <bindPoint>

Ejemplo:

> add responder action rspActRadiusReject respondwith radius.new_accessreject
Done

> add responder policy rspPolRadiusReject client.ip.src.in_subnet(10.224.85.0/24) rspActRadiusReject
Done

> bind responder global rspPolRadiusReject 1 END -type RADIUS_REQ_OVERRIDE

Soporte RADIUS para Respondedor