ICAP para inspección remota de contenido

El Protocolo de adaptación de contenido de Internet (ICAP) es un protocolo ligero simple para ejecutar un servicio de transformación de valor agregado en mensajes HTTP. En un escenario típico, un cliente ICAP reenvía solicitudes y respuestas HTTP a uno o más servidores ICAP para su procesamiento. Los servidores ICAP realizan la transformación de contenido en las solicitudes y envían respuestas con las medidas adecuadas para realizar en la solicitud o respuesta.

ICAP en un dispositivo Citrix ADC

En una configuración de Citrix ADC, el dispositivo actúa como cliente ICAP que interactúa con servidores ICAP de terceros, como antimalware y prevención de fugas de datos (DLP). Cuando el dispositivo recibe un tráfico Web entrante, el dispositivo intercepta el tráfico y utiliza una directiva de inspección de contenido para evaluar si la solicitud HTTP necesita un procesamiento ICAP. En caso afirmativo, el dispositivo descifra y envía el mensaje como texto sin formato a los servidores ICAP. Los servidores ICAP ejecutan el servicio de transformación de contenido en el mensaje de solicitud y devuelven una respuesta al dispositivo. Los mensajes adaptados pueden ser una solicitud HTTP o una respuesta HTTP. Si el dispositivo interactúa con varios servidores ICAP, el dispositivo realiza el equilibrio de carga de los servidores ICAP. Esto sucede en escenarios en los que un servidor ICAP no es suficiente para manejar toda la carga de tráfico. Una vez que los servidores ICAP devuelven un mensaje modificado, el dispositivo reenvía el mensaje modificado al servidor de origen back-end.

El dispositivo Citrix ADC también proporciona un servicio ICAP seguro si el tráfico entrante es de tipo HTTPS. El dispositivo utiliza un servicio TCP basado en SSL para establecer una conexión segura entre el dispositivo y los servidores ICAP.

Cómo funciona la modificación de solicitud ICAP (REQMOD)

En el modo de modificación de solicitud (REQMOD), el dispositivo Citrix ADC reenvía la solicitud HTTP recibida del cliente al servidor ICAP. A continuación, el servidor ICAP realiza una de las siguientes acciones:

  1. Envía una versión modificada de la solicitud y el dispositivo, a su vez, envía la solicitud modificada al servidor de origen back-end o canalizará la solicitud modificada a otro servidor ICAP.
  2. Responde con un mensaje que indica que no se requiere adaptación.
  3. Devuelve un error y el dispositivo a su vez envía el mensaje de error al usuario.

Cómo funciona la modificación de la respuesta ICAP (RESPMOD)

En el modo de modificación de respuesta (RESPMOD), el dispositivo Citrix ADC envía una respuesta HTTP al servidor ICAP (la respuesta enviada por el dispositivo suele ser la respuesta enviada por el servidor de origen). A continuación, el servidor ICAP realiza una de las siguientes acciones:

  1. Envía una versión modificada de la respuesta y el dispositivo a su vez envía la respuesta modificada al usuario o canalizar la respuesta modificada a otro servidor ICAP.
  2. Responde con un mensaje que indica que no se requiere adaptación.
  3. Devuelve un error y el dispositivo a su vez envía el mensaje de error al usuario.

Licencia ICAP

La función ICAP funciona en una configuración independiente o de alta disponibilidad de Citrix ADC con Citrix ADC Premium o Advanced license edition.

Configurar ICAP para el servicio de transformación de contenido

Para utilizar ICAP para el servicio de transformación de contenido, debe comenzar por habilitar las funciones de inspección de contenido y equilibrio de carga. Una vez habilitadas las funciones, puede completar las siguientes tareas

Para habilitar la inspección de contenido

Si quiere que el dispositivo Citrix ADC actúe como cliente ICAP y envíe solicitudes o respuestas a un servidor ICAP de terceros, primero debe habilitar las funciones de inspección de contenido y equilibrio de carga.

En el símbolo del sistema, escriba:

enable ns feature contentInspection LoadBalancing

Agregar perfil ICAP

Las configuraciones ICAP para un dispositivo Citrix ADC se especifican en una entidad denominada perfil ICAP. El perfil tiene una colección de configuraciones ICAP. La configuración incluye parámetros para generar dinámicamente una solicitud ICAP, recibir respuesta ICAP y registrar datos de inspección de contenido.

Para generar dinámicamente solicitud ICAP al servidor ICAP, se agrega un nuevo parámetro, “InsertHTtPRequest” al perfil ICAP. Si se configura este parámetro, el dispositivo toma el valor configurado como una expresión de directiva y evalúa la expresión e incluye el resultado como una solicitud http encapsulada o respuesta y, a continuación, lo envía al servidor ICAP. Además, se puede configurar un nuevo parámetro “InserticApHeaders” para evaluar e incluir dinámicamente los encabezados ICAP.

Cuando el dispositivo envía una solicitud ICAP y no recibe una respuesta el servidor ICAP, la conexión deja de responder. Esto ocurre hasta que el servidor ICAP envía una respuesta o sesión se libera. El comportamiento se puede controlar configurando la opción de tiempo de espera de respuesta ICAP. Puede establecer un parámetro de tiempo de espera de solicitud para que ICAP tome una acción si hay una respuesta ICAP retrasada. Si el dispositivo Citrix ADC no recibe una respuesta dentro del tiempo de espera de solicitud configurado, se realiza la acción de tiempo de espera de solicitud.

ReqTimeoutAction: Los valores posibles son BYPASS, RESET, DROP. Bypass: Ignora la respuesta del servidor ICAP remoto y envía la solicitud/respuesta al cliente/servidor. RESET (valor predeterminado): Restablezca la conexión del cliente cerrándola. DROP: Suelta la solicitud sin enviar una respuesta al usuario

Para evaluar una respuesta ICAP, ICAP.RES se utiliza una nueva expresión de directiva en la expresión de retorno de llamada de inspección de contenido. Esta expresión evalúa la respuesta ICAP similar a la expresión HTTP.RES en una HTTP_CALLOUT.

Por ejemplo, cuando un dispositivo Citrix ADC recibe una solicitud HTTP para un servicio alojado detrás de la dirección IP virtual de Citrix ADC, es posible que el dispositivo tenga que comprobar la autenticación del cliente con un servidor externo y realizar una acción.

En el símbolo del sistema, escriba:

add icapProfile <ICAP Profile Name> -mode <ICAP Mode> -insertHTTPRequest <Expression> -logAction icap_log_expr -Mode REQMOD -reqtimeout <positive_integer> -reqTimeoutAction <reqTimeoutAction>

Ejemplo:

add icapProfile reqmode-profile -mode REQMOD -insertHTTPRequest q{HTTP.REQ.METHOD + " " + HTTP.REQ.URL + " HTTP/1.1\r\n" + "Host: " + HTTP.REQ.HOSTNAME + "\r\n\r\n"}

add icapProfile respmode-profile -mode RESPMOD –insertHTTPResponse q{HTTP.RESP.METHOD + " " + HTTP.RESP.URL + " HTTP/1.1\r\n" + "Host: " + HTTP.RESP.HOSTNAME + "\r\n\r\n"}

add ns icapProfile icap_prof1 -uri "/example" -Mode REQMOD -reqtimeout 4 -reqtimeoutaction BYPASS

Registrar la acción de inspección de contenido ICAP

Para generar dinámicamente registros de flujo de registro de inspección de contenido o registros SYSLOG, puede utilizar la expresión de directiva basada en ICAP.RES en la respuesta ICAP. Este parámetro se puede configurar en el perfil ICAP para configurar la expresión de directiva para generar los registros de registro dinámicos.

En el símbolo del sistema, escriba:

add audit messageaction icap_log_expr INFORMATIONAL icap.res.full_header

set icapProfile reqmode-profile -logAction messageaction

Agregar servicio ICAP como un servicio TCP o SSL_TCP

Después de habilitar la función Inspección de contenido, debe agregar un servicio ICAP para los servidores ICAP que formarán parte de la configuración de equilibrio de carga. El servicio que agrega proporciona la conexión ICAP entre el dispositivo Citrix ADC y los servidores virtuales de equilibrio de carga.

Nota: Como administrador, puede agregar un servicio ICAP y configurar directamente la dirección IP del servidor ICAP en la acción Inspección de contenido.

En el símbolo del sistema, escriba lo siguiente:

add service <name> <IP> <serviceType> <port>

Ejemplo:

add service icapsv1 10.102.29.200 TCP 80 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB NO –CMP NO

add service icapsv2 10.102.29.200 SSL_TCP 11344 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB NO –CMP NO

Agregar un servidor virtual de equilibrio de carga basado en TCP o SSL_TCP

Después de crear un servicio ICAP, debe crear un servidor virtual para aceptar tráfico ICAP y equilibrar la carga de los servidores ICAP.

Nota:

También puede utilizar un servicio TCP basado en SSL a través de un canal seguro. Para ello, debe utilizar un servicio SSL_TCP y enlazar a la acción Inspección de contenido.

En el símbolo del sistema, escriba lo siguiente:

add lb vserver <name> <serviceType> <port>

Ejemplo:

add lb vserver vicap TCP 0.0.0.0.0 –persistenceType NONE -cltTimeout 9000

add lb vserver vicap SSL_TCP 0.0.0.0 0 –persistenceType NONE -cltTimeout 9000

Vincular el servicio ICAP al servidor virtual de equilibrio de carga

Después de crear un servicio ICAP y un servidor virtual, debe enlazar el servicio ICAP al servidor virtual.

En el símbolo del sistema, escriba lo siguiente:

bind lb vserver <name> <serviceName>

Ejemplo:

bind lb vserver vicap icapsv1

Agregar acción de inspección de contenido

Después de habilitar la función Inspección de contenido, debe agregar una acción ICAP para controlar la información de solicitud ICAP. El perfil ICAP y los servicios, o el servidor virtual de equilibrio de carga que se crean están enlazados a la acción ICAP. Si el servidor ICAP está inactivo, puede configurar el parámetro ifserverdown para que el dispositivo active cualquiera de las acciones siguientes.

CONTINUAR: Si el usuario quiere omitir la especificación de conexión si el servidor remoto está inactivo, esta acción se puede elegir y es la acción predeterminada. RESET (valor predeterminado): Esta acción responde al cliente cerrando la conexión con RST. DROP: Esta acción suelta silenciosamente los paquetes sin enviar una respuesta al usuario.

En el símbolo del sistema, escriba lo siguiente:

add contentInspection action <name> -type ICAP -serverName <string> -icapProfileName <string>

add ContentInspection action <name> -type ICAP -serverip <ip> - serverport <port> -icapProfileName <string>

Nota:

Si puede configurar el servicio ICAP en lugar de un servidor virtual de equilibrio de carga, puede mencionar el nombre del servicio en la opción <-serverip>. Al agregar la acción Inspección de contenido, el servicio TCP se crea automáticamente para la dirección IP dada con el puerto 1344 y se utiliza para la comunicación ICAP.

Ejemplo:

add ContentInspection action ci_act_lb -type ICAP -serverName vicap -icapProfileName icap_reqmod

add ContentInspection action ci_act_svc -type ICAP -serverName icapsv1 -icapProfileName icap_reqmod

add ContentInspection action ci_act_svc -type ICAP -serverip <ip> - serverport <port> -icapProfileName icap_reqmod

Agregar directivas de inspección de contenido

Después de crear una acción Inspección de contenido, debe crear directivas de inspección de contenido para evaluar las solicitudes de procesamiento ICAP y registro de auditoría. La directiva se basa en una regla que consta de una o más expresiones. La regla está asociada a la acción de inspección de contenido asociada si una solicitud coincide con la regla.

En el símbolo del sistema, escriba lo siguiente:

add contentInspection policy <name> -rule <expression> -action <string>

Ejemplo:

add ContentInspection policy ci_pol_basic –rule true –action ci_act_svc

add ContentInspection policy ci_pol_HTTP –rule HTTP.REQ.URL.CONTAINS(“html”) –action ci_act_svc

Vincular directivas de inspección de contenido al servidor virtual de conmutación de contenido o equilibrio de carga

Para poner en práctica una directiva ICAP, debe vincularla globalmente o vincularla a un servidor virtual de conmutación de contenido o equilibrio de carga, que frontend la aplicación. Cuando vincula la directiva, debe asignarle una prioridad. La prioridad determina el orden en que se evalúan las directivas definidas.

Para obtener información acerca de cómo configurar una configuración de equilibrio de carga para reenviar el tráfico al servidor de origen back-end después de la transformación de contenido, consulte Equilibrio de carga.

Configurar el servicio ICAP seguro

Para establecer una conexión segura entre el dispositivo Citrix ADC y los servidores web ICAP, el dispositivo utiliza un servicio TCP basado en SSL o un servidor virtual de equilibrio de carga vinculado a una acción ICAP.

Para establecer una conexión ICAP segura, realice las siguientes tareas:

  1. Agregar servicio TCP basado en SSL.
  2. Enlace el servicio TCP basado en SSL al servidor virtual de equilibrio de carga de tipo TCP o SSL_TCP.
  3. Enlace el servicio TCP basado en SSL o el servidor virtual de equilibrio de carga a la acción Inspección de contenido.

Agregar servicio TCP basado en SSL al servidor virtual de equilibrio de carga

Para establecer una conexión segura entre el dispositivo Citrix ADC y los servidores web ICAP, el dispositivo utiliza un servicio TCP basado en SSL o un servidor virtual de equilibrio de carga vinculado a una acción ICAP.

Para establecer una conexión ICAP segura, realice las siguientes tareas:

  1. Agregar servicio TCP basado en SSL.
  2. Enlace el servicio TCP basado en SSL al servidor virtual de equilibrio de carga de tipo TCP o SSL_TCP.

Vincular el servicio TCP basado en SSL o el servidor virtual de equilibrio de carga a la acción Inspección de contenido

Agregar servicio TCP basado en SSL al servidor virtual de equilibrio de carga

Después de habilitar la función Inspección de contenido, debe agregar un servicio ICAP seguro que formará parte de la configuración de equilibrio de carga. El servicio que agrega proporciona una conexión ICAP segura entre el dispositivo Citrix ADC y los servidores virtuales de equilibrio de carga.

En el símbolo del sistema, escriba lo siguiente:

add service <name> <IP> <serviceType> <port>

Ejemplo:

add service icapsv2 10.102.29.200 SSL_TCP 11344 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB  NO –CMP NO

Enlace el servicio TCP basado en SSL al servidor virtual de equilibrio de carga SSL_TCP o TCP

Después de crear un servicio ICAP seguro, debe enlazar el servicio al servidor virtual de equilibrio de carga (si está utilizando un servidor virtual de equilibrio de carga para equilibrar la carga de los servidores ICAP).

En el símbolo del sistema, escriba lo siguiente:

bind lb vserver <name> <serviceName>

Ejemplo:

bind lb vserver vicap icapsv2

Vincular el servicio TCP basado en SSL o el servidor virtual de equilibrio de carga a la acción Inspección de contenido

Debe agregar una acción ICAP para manejar la información de solicitud ICAP y también vincular el servicio TCP basado en SSL a la acción.

En el símbolo del sistema, escriba lo siguiente:

add contentInspection action <name> -type ICAP -serverName <string> -icapProfileName <string>

Ejemplo:

add ContentInspection action ci_act_svc -type ICAP -serverName icapsv2 -icapProfileName icap_reqmod

add ContentInspection action ci_act_svc -type ICAP -serverName vicap -icapProfileName icap_reqmod

Configurar el protocolo ICAP mediante la interfaz gráfica de usuario

  1. Desplácese hasta Equilibrio de carga > Servicios y haga clic en Agregar.
  2. En la página Servicios, introduzca los detalles del servicio.
  3. Desplácese hasta Equilibrio de carga > Servidores. Agregue un servidor virtual de tipo TCP. O bien, puede seleccionar un servidor virtual y hacer clic en Modificar.
  4. Después de introducir los detalles del servidor, haga clic en Aceptar y de nuevo en Aceptar.
  5. En la sección Configuración avanzada, haga clic en Directivas.
  6. Vaya a la sección Directivas y haga clic en el icono Lápiz para configurar la directiva de Inspección de contenido.
  7. En la página Elegir directiva, seleccione Inspección de contenido. Haga clic en Continuar.
  8. En la sección Enlace de directivas, haga clic en + para agregar una directiva de inspección de contenido.
  9. En la página Crear directiva ICAP, escriba un nombre para la directiva.
  10. En el campo Acción, haga clic en el signo “+” para agregar una acción ICAP.
  11. En la página Crear Acción ICAP, escriba un nombre para la acción.
  12. Escriba un nombre para la acción.
  13. En el campo Nombre del servidor, escriba el nombre del servicio TCP ya creado.
  14. En el campo Perfil ICAP, haga clic en el signo “+” para agregar un perfil ICAP.
  15. En la página Crear Perfil ICAP, introduzca un nombre de perfil, URI y MODE.
  16. Haga clic en Crear.
  17. En la página Crear acción ICAP, haga clic en Crear.
  18. En la página Crear directiva ICAP, escriba “true” en el Editor de expresiones y, a continuación, haga clic en Crear.
  19. Haga clic en Bind.
  20. Cuando se le pida que habilite la función Inspección de contenido, haga clic en .
  21. Haga clic en Done.

Para obtener información acerca de la configuración de la GUI de Citrix ADC para equilibrar la carga y reenviar el tráfico al servidor de origen back-end después de la transformación del contenido, consulte Equilibrio de carga.

Configure el protocolo ICAP seguro mediante la interfaz gráfica de usuario

  1. Desplácese hasta Equilibrio de carga > Servicios y haga clic en Agregar.
  2. En la página Servicios, introduzca los detalles del servicio.
  3. Desplácese hasta Equilibrio de carga > Servidores. Agregue un servidor virtual de tipo TCP_SSL. O bien, puede seleccionar un servidor virtual de tipo TCP_SSL y hacer clic en Modificar.
  4. Después de introducir los detalles del servidor, haga clic en Aceptar y de nuevo en Aceptar.
  5. En la sección Configuración avanzada, haga clic en Directivas.
  6. Vaya a la sección Directivas y haga clic en el icono Lápiz para configurar la directiva de Inspección de contenido.
  7. En la página Elegir directiva, seleccione Inspección de contenido. Haga clic en Continuar.
  8. En la sección Enlace de directivas, haga clic en + para agregar una directiva de inspección de contenido.
  9. En la página Crear directiva ICAP, escriba un nombre para la directiva.
  10. En el campo Acción, haga clic en el signo “+” para agregar una acción ICAP.
  11. En la página Crear Acción ICAP, escriba un nombre para la acción.
  12. Escriba un nombre para la acción.
  13. En el campo Nombre del servidor, escriba el nombre del servicio TCP_SSL ya creado.
  14. En el campo Perfil ICAP, haga clic en el signo “+” para agregar un perfil ICAP.
  15. En la página Crear Perfil ICAP, introduzca un nombre de perfil, URI y MODE.
  16. Haga clic en Crear.
  17. En la página Crear acción ICAP, haga clic en Crear.
  18. En la página Crear directiva ICAP, escriba “true” en el Editor de expresiones y, a continuación, haga clic en Crear.
  19. Haga clic en Bind.
  20. Cuando se le pida que habilite la función Inspección de contenido, haga clic en .
  21. Haga clic en Done.

Compatibilidad con auditlog para la inspección remota de contenido

Si se inspecciona el contenido de una solicitud entrante o una respuesta saliente, el dispositivo Citrix ADC registra los detalles de ICAP. El dispositivo almacena los detalles como un mensaje de registro en el archivo ns.log.

Cada mensaje de registro suele contener los siguientes detalles:

<Source IP> <Destination IP> <Domain> <ICAP server IP><ICAP Mode> <Service URI> <ICAP response> <Policy action>

Ejemplo de mensaje de registro de solicitud de contenido inspeccionado:

Apr 18 14:45:41 <local0.info> 10.106.97.104 04/18/2018:14:45:41 GMT 0-PPE-0 : default CI ICAP_LOG 788 0 : Source 10.102.1.98:39048 - Destination 10.106.97.89:8011 - Domain 10.106.97.89 - Content-Type application/x-www-form-urlencoded - ICAP Server 10.106.97.99:1344 - Mode REQMOD - Service /example - Response 204 - Action FORWARD

Ejemplo de mensaje de registro de respuesta inspeccionado por contenido:

Apr 18 12:34:08 <local0.info> 10.106.97.104 04/18/2018:12:34:08 GMT 0-PPE-0 : default CI ICAP_LOG 71 0 : Source 10.106.97.105:18552 - Destination 10.106.97.99:80 - Domain NA - Content-Type NA - ICAP Server 10.106.97.99:1344 - Mode RESPMOD - Service /example - Response 400 - Action Internal Error