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 respuesta y la acción que debe realizar el cliente ICAP (dispositivo Citrix ADC). Por ejemplo, si el código de estado de una respuesta ICAP es 200 OK para una solicitud ICAP REQMOD y si se establece res-hdr, el cliente ICAP puede enviar la respuesta recibida desde el servidor ICAP al usuario. Sin embargo, si el res-hdr no está configurado, el cliente ICAP (dispositivo Citrix ADC) puede reenviar la solicitud original o adaptada al servidor back-end de origen.

Pero en ciertos escenarios, 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, sino que mira 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 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 quiere continuar o soltarlo.
  • Al recibir una solicitud HTTP para un servicio, el dispositivo puede comprobar el permiso de acceso para un servidor externo basado en el ID de arrendatario del usuario y realizar la acción adecuada.

En ambos casos, el servidor ICAP no tiene idea de la directiva configurada en función de la información disponible, sino que simplemente envía 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 directiva avanzada existente expresiones se pueden 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) .contains (“valor a verificar”)

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

Siga 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 ContentInspectionCCallout especifica la información del servidor ICAP, la expresión de retorno 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>: Expresión a evaluar al recibir la respuesta ICAP, debe comenzar con ICAP.RES.

Ejemplo:

Para extraer el valor de la cabecera de respuesta ICAP X-URL categoría, el ResultExpr se puede especificar como se muestra a continuación.

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

La expresión anterior devuelve el valor de la X-URL- comprueba el valor devuelto y aplicar 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 entidad que utilizan la llamada de CI para realizar la acción de la entidad.

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 manos 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 una llamada de inspección de contenido que represente 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 la directiva de detección de vídeo y la expresión para obtener la información de la categoría URL del dominio recibido y suelte 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 el perfil ICAP que define 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 llamada ICAP y tomar medidas.

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