ADC

Llamada de inspección de contenido

Cuando un dispositivo NetScaler 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 llevar a cabo el dispositivo. Por ejemplo, si el código de estado de una respuesta ICAP es 200 OK para una solicitud ICAP REQMOD y res-hdr está configurado, 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 NetScaler) puede reenviar la solicitud original o adaptada al servidor de fondo de origen.

Sin embargo, en algunos 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 en función de 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 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 enlace SSH, el cliente ICAP (dispositivo NetScaler) puede clasificar el dominio al que se accede y decidir si continuar con el protocolo de enlace o eliminarlo.
  • Al recibir una solicitud HTTP de un servicio, el dispositivo puede comprobar el permiso de acceso de un servidor externo en función del ID de arrendatario del usuario. Se pueden tomar las medidas adecuadas.

En ambos casos, el servidor ICAP no tiene idea de la directiva configurada, sino que simplemente devuelve la información solicitada al dispositivo. A continuación, el dispositivo aplica la directiva sobre 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 la solicitud de 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 desencadenar la solicitud ICAP al servidor ICAP configurado. La información solicitada, configurada mediante 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 la solicitud de 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 usar 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 devolución de la respuesta del agente de llamada ICAP determina el conjunto de operadores que se pueden 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 concreta.

Ejemplo:

SYS.CI_CALLOUT (llamada CI). Contains(“valor que 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 rótulo de inspección de contenido
  3. establecer expresión de llamada de inspección de contenido
  4. Invocar llamada de inspección de contenido

Agregar perfil ICAP

Agregar rótulo de inspección de contenido

El comando ContentInspectionCCallout especifica la información del servidor ICAP y la expresión de retorno y su tipo.

En la línea de comandos, 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> - ( **LIBRO | NUM | TEXTO**) <resultExpr> - La expresión que se va a evaluar al recibir la respuesta ICAP debe comenzar por ICAP.RES.

Ejemplo:

Extraiga el valor del encabezado de respuesta ICAP de categoría X-URL; ResultExpr se puede especificar de la siguiente manera.

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 funciones mediante llamada de inspección de contenido y acción de función

Cuando una función de NetScaler 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 entidades para desencadenar la solicitud ICAP al servidor ICAP externo. Al recibir la respuesta, la función puede especificar ResultExpression 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 función 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 utilizan Llamada de CI para llevar a cabo la acción de la función.

Caso práctico 1: Para extraer el SNI mediante la directiva de detección de optimización de vídeo y eliminar el apretón de manos si el dominio es “Redes sociales”

Complete los pasos siguientes 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 resultados 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_urlcat -rule " SYS.CI_CALLOUT(cic).EQ(\"Social Media\")" -action DROP

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

Complete los pasos siguientes 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 de inspección de contenido para obtener la información de la categoría.

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

  3. Agrega un conjunto de patrones y enlaza el patrón de categoría bloqueada 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_urlcat –rule SYS.CI_CALLOUT(cic).CONTAINS_ANY("blocked-category")" -action DROP

Llamada de inspección de contenido