ADC

Llamada de inspección de contenido

Cuando un dispositivo Citrix ADC envía una solicitud ICAP, el servidor ICAP utiliza un código de estado para especificar el estado de la respuesta. El código de estado también especifica la acción que debe realizar el dispositivo. Por ejemplo, si el código de estado de una respuesta ICAP es 200 OK para una solicitud ICAP REQMOD y si res-hdr está establecido, el cliente ICAP puede enviar la respuesta recibida del servidor ICAP al usuario. Sin embargo, si no res-hdr está configurado, el cliente ICAP (dispositivo Citrix ADC) puede reenviar la solicitud original o adaptada al servidor back-end de origen.

Pero en ciertos casos, el servidor ICAP no puede tomar la decisión final. En su lugar, solo proporciona la información solicitada al dispositivo y el dispositivo puede decidir basándose en la evaluación de directivas. En este caso, el cliente ICAP no puede depender únicamente del código de estado de respuesta ICAP, en su lugar examina los encabezados ICAP recibidos y evalúa la expresión de directiva en los encabezados y aplica la acción asociada.

A continuación se presentan algunos casos de uso en los que se necesita la llamada Inspección de contenido ICAP:

  • Al recibir la solicitud de protocolo de enlace SSH, el cliente ICAP (dispositivo Citrix ADC) podría clasificar el dominio al que se accede y decidir si desea continuar con el enlace o soltarlo.
  • Al recibir una solicitud HTTP para un servicio, es posible que el dispositivo compruebe el permiso de acceso para un servidor externo basado en el identificador de arrendatario del usuario. Se pueden tomar las medidas apropiadas.

En ambos casos, el servidor ICAP no tiene ninguna idea acerca de la directiva configurada, sino que simplemente devuelve la información solicitada al dispositivo. A continuación, el dispositivo aplica la directiva a la información de respuesta recibida y aplica la acción asociada. La llamada de inspección de contenido ICAP se agrega al marco ICAP para devolver la información de solicitud desde un servidor ICAP externo. La funcionalidad de esta llamada es muy similar a cómo funciona una llamada HTTP. Cualquier expresión de directiva, por ejemplo, Responder o AppFirewall puede activar la solicitud ICAP al servidor ICAP configurado. La información solicitada, configurada a través de ReturnExpr, se extrae de la respuesta ICAP y se pasa al módulo solicitado

La llamada de inspección de contenido ICAP se agrega al marco ICAP para devolver la información de solicitud desde un servidor ICAP externo. La funcionalidad de esta llamada es muy similar a cómo funciona una llamada HTTP. El módulo ICAP puede utilizar una expresión de directiva avanzada existente que se puede utilizar para activar una llamada ICAP al servidor ICAP configurado

Expresión de directiva de llamada de inspección de contenido

La siguiente expresión de directiva de inspección de contenido se utiliza como expresión de retorno en la llamada ICAP. La sintaxis de esta expresión de llamada de inspección de contenido es similar a una expresión de llamada HTTP.

SYS.CI_CALLOUT(<ContentInspection callout name>).Operator

Donde: <ContentInspection callout name> es la llamada ContentInspection de tipo ICAP que define las propiedades del servidor ICAP. Y el perfil ICAP que se utilizará para enviar y recibir la solicitud a/desde el servidor ICAP. El tipo de retorno de la respuesta del agente de llamada ICAP determina el conjunto de operadores que puede utilizar en la respuesta. Si la parte de la respuesta que quiere analizar es texto, puede utilizar un operador de texto para analizar la respuesta. Por ejemplo, puede utilizar el operador CONTAINS(<string>) para comprobar si la parte especificada de la respuesta contiene una cadena determinada.

Ejemplo:

SYS.CI_CALLOUT (CI-callout). Contiene (“valor a comprobar”)

Configuración de la llamada de inspección de contenido ICAP

Complete los pasos siguientes para configurar la llamada de inspección de contenido ICAP en el dispositivo.

  1. Agregar perfil ICAP
  2. Agregar llamada de inspección de contenido
  3. definir expresión de llamada de inspección de contenido
  4. Invocar llamada de inspección de contenido

Agregar perfil ICAP

Agregar llamada de inspección de contenido

El comando ContentInspectionCallout especifica la información del servidor ICAP, la expresión devuelta y su tipo.

En el símbolo del sistema, escriba:

add contentInspection callout <name> -type ICAP [-profileName <string>] (-serverName <string> | (-serverip <ip_addr|ipv6_addr> [-serverport <positive_integer>])) [-returnType <returnType>] [-resultExpr <string>] [-comment <string>]

Donde:

<profileName>: Nombre del perfil ICAP <returnType> - ( **BOOL | NÚM | TEXTO**) <resultExpr> - La expresión a evaluar al recibir la respuesta ICAP, debe comenzar con ICAP.RES.

Ejemplo:

Extraiga el valor de la cabecera de respuesta ICAP de categoría X URL-categoría, resultExpr se puede especificar de acuerdo con lo siguiente.

add contentInspection callout cic –type ICAP –profileName profile1 –resultExpr “ICAP.RES.HEADER("X-URL-Category")”

La expresión anterior devuelve el valor de X-URL-Category comprueba el valor devuelto y aplica la acción asociada.

Directiva de entidad mediante llamada de inspección de contenido y acción de entidad

Cuando una función de Citrix ADC necesita interactuar con un servicio externo mediante ICAP, la función puede utilizar la llamada de inspección de contenido, CI_CALLOUT. En este modo, la función utiliza CI_CALLOUT en la expresión de directiva de entidad para activar la solicitud ICAP al servidor ICAP externo. Al recibir la respuesta, la función puede especificar la Expresión de resultados en la acción ContentInspection para extraer la información necesaria de la respuesta ICAP. El resultado puede ser booleano, numérico o texto. A continuación, la entidad puede realizar la acción asociada en función del resultado extraído. Veamos un caso de uso de cómo las directivas de funciones que usan CI Callout para realizar la acción de la función.

Caso de uso 1: Para extraer SNI mediante la directiva de detección de optimización de vídeo y soltar el apretón de enlace si el dominio es “Redes sociales”

Complete los siguientes pasos para configurar el caso de uso:

  1. Agregar perfil ICAP

    add icapProfile ICAPProfileName –mode REQMOD -insertHTTPRequest q{ "GET / HTTP/1.1\r\nHost: " + CLIENT.SSL.DETECTED_DOMAIN + "\r\n\r\n"}

  2. Agregue la llamada de inspección de contenido que representa el servidor ICAP y la expresión de resultado para extraer información de categoría de la respuesta ICAP.

    add contentInspection callout cic -type ICAP -serverName icap-server-name -icapProfile ICAPProfileName -resultExpr "ICAP.res.header("X-URL-Category")" –resultType [same as callout resultType]

  3. Agregue una directiva y una expresión de detección de vídeo para obtener la información de la categoría URL del dominio recibido y borrar la solicitud si la categoría es “Redes sociales”.

    add videooptimization detectionpolicy policy_urlcat -rule " SYS.CI_CALLOUT(cic).EQ(\"Social Media\")" -action DROP

Caso de uso 2: Para recuperar la categoría de URL del servidor ICAP y bloquearla mediante un conjunto de patrones

Complete los siguientes pasos para configurar el caso de uso:

  1. Agregue un perfil ICAP que defina el modo y la solicitud HTTP.

    add icapProfile ICAPProfileName –mode REQMOD -insertHTTPRequest q{ "GET / HTTP/1.1\r\nHost: " + CLIENT.SSL.DETECTED_DOMAIN + "\r\n\r\n"}

  2. Agregue una llamada Inspección de contenido para obtener la información de categoría.

    add contentInspection callout cic -type ICAP -serverName icap-server-name -icapProfile ICAPProfileName -resultExpr "ICAP.res.header("X-URL-Category")"

  3. Agregue un conjunto de patrones y vincule el patrón de categoría bloqueado a él.

    add policy patset blocked-category bind policy patset blocked-category “gambling” –index 1 bind policy patset blocked-category “social media” –index 2 bind policy patset blocked-category “games” –index 3

  4. Agregue una directiva de detección de optimización de vídeo para invocar la acción de llamada ICAP.

    add videooptimization detectionpolicy policy_urlcat –rule SYS.CI_CALLOUT(cic).CONTAINS_ANY("blocked-category")" -action DROP

Llamada de inspección de contenido