Citrix ADC

ICAP pour l’inspection de contenu à distance

Le protocole ICAP (Internet Content Adaptation Protocol) est un protocole simple et léger permettant d’exécuter un service de transformation à valeur ajoutée sur les messages HTTP. Dans un scénario typique, un client ICAP transmet les requêtes HTTP et les réponses à un ou plusieurs serveurs ICAP pour traitement. Les serveurs ICAP effectuent la transformation du contenu sur les demandes et envoient les réponses avec les mesures appropriées à prendre sur la demande ou la réponse.

ICAP sur une appliance Citrix ADC

Dans une configuration Citrix ADC, l’appliance agit en tant que client ICAP interopérant avec des serveurs ICAP tiers (tels que l’antiprogramme malveillant et la prévention des fuites de données (DLP)). Lorsque l’appliance reçoit un trafic Web entrant, elle intercepte le trafic et utilise une stratégie d’inspection du contenu pour évaluer si la demande HTTP nécessite un traitement ICAP. Si oui, l’appliance déchiffre et envoie le message sous forme de texte brut aux serveurs ICAP. Les serveurs ICAP exécutent le service de transformation de contenu sur le message de demande et envoient une réponse à l’appliance. Les messages adaptés peuvent être une requête HTTP ou une réponse HTTP. Si l’appliance interagit avec plusieurs serveurs ICAP, elle effectue l’équilibrage de la charge des serveurs ICAP. Ce scénario se produit lorsqu’un serveur ICAP n’est pas suffisant pour gérer toute la charge de trafic. Une fois que les serveurs ICAP renvoient un message modifié, l’appliance transmet le message modifié au serveur d’origine principal.

L’appliance Citrix ADC fournit également un service ICAP sécurisé si le trafic entrant est de type HTTPS. L’appliance utilise un service TCP basé sur SSL pour établir une connexion sécurisée entre l’appliance et les serveurs ICAP.

Fonctionnement de la modification des demandes ICAP (REQMOD)

En mode Request modification (REQMOD), l’appliance Citrix ADC transfère la requête HTTP reçue du client au serveur ICAP. Le serveur ICAP effectue ensuite l’une des opérations suivantes :

  1. Retourne une version modifiée de la demande et l’appliance envoie à son tour la demande modifiée au serveur d’origine principal ou achemine la demande modifiée vers un autre serveur ICAP.
  2. Répond avec un message indiquant qu’aucune adaptation n’est requise.
  3. Renvoie une erreur et l’appliance renvoie le message d’erreur à l’utilisateur.

Fonctionnement de la modification de la réponse ICAP (RESPMOD)

En mode de modification de réponse (RESPMOD), l’appliance Citrix ADC envoie une réponse HTTP au serveur ICAP (la réponse envoyée par l’appliance est généralement la réponse envoyée par le serveur d’origine). Le serveur ICAP effectue ensuite l’une des opérations suivantes :

  1. Envoie une version modifiée de la réponse et l’appliance envoie la réponse à l’utilisateur ou achemine la réponse à un autre serveur ICAP.
  2. Répond avec un message indiquant qu’aucune adaptation n’est requise.
  3. Renvoie une erreur et l’appliance envoie le message d’erreur à l’utilisateur.

Licence ICAP

La fonctionnalité ICAP fonctionne sur une configuration autonome ou haute disponibilité Citrix ADC avec Citrix ADC Premium ou Advanced License Edition.

Configurer ICAP pour le service de transformation de contenu

Pour utiliser ICAP pour le service de transformation de contenu, vous devez commencer par activer les fonctions d’inspection du contenu et d’équilibrage de charge. Une fois les fonctionnalités activées, vous pouvez effectuer les tâches suivantes

Pour activer l’inspection du contenu

Si vous souhaitez que l’appliance Citrix ADC agisse en tant que client ICAP, vous devez d’abord activer les fonctionnalités d’inspection de contenu et d’équilibrage de charge.

À l’invite de commandes, tapez :

enable ns feature contentInspection LoadBalancing

Ajouter un profil ICAP

Les configurations ICAP pour un dispositif Citrix ADC sont spécifiées dans une entité appelée profil ICAP. Le profil possède une collection de paramètres ICAP. Les paramètres incluent des paramètres permettant de générer dynamiquement une demande ICAP, de recevoir une réponse ICAP et de consigner les données d’inspection du contenu.

Pour générer dynamiquement une requête ICAP sur le serveur ICAP, un nouveau paramètre, « InsertHttpRequest » est ajouté au profil ICAP. Si ce paramètre est configuré, l’appliance prend la valeur configurée en tant qu’expression de stratégie et évalue l’expression et inclut le résultat sous la forme d’une requête ou d’une réponse HTTP encapsulée, puis l’envoie au serveur ICAP. En outre, un nouveau paramètre « InserticapHeaders » est configurable pour évaluer dynamiquement et inclure les en-têtes ICAP.

Lorsque l’appliance envoie une demande ICAP et ne reçoit pas de réponse au serveur ICAP, la connexion cesse de répondre. Cela se produit jusqu’à ce que le serveur ICAP envoie une réponse ou que la session soit libérée. Le comportement peut être géré en configurant l’option Délai de réponse ICAP. Vous pouvez définir un paramètre de délai d’attente de demande pour qu’ICAP prenne une action en cas de retard de réponse ICAP. Si l’appliance Citrix ADC ne reçoit pas de réponse dans le délai d’expiration de la demande configuré, l’action de délai d’expiration de la demande est exécutée.

ReqTimeoutAction : Les valeurs possibles sont BYPASS, RESET, DROP. BYPASS : Ceci ignore la réponse du serveur ICAP distant et envoie la demande/réponse au client/serveur. RESET (par défaut) : réinitialisez la connexion client en la fermant. DROP : Supprimer la demande sans envoyer de réponse à l’utilisateur

Pour évaluer une réponse ICAP, une nouvelle expression de stratégie ICAP.RES est utilisée dans l’expression de retour de légende d’inspection du contenu. Cette expression évalue la réponse ICAP similaire à l’expression HTTP.RES dans un HTTP_CALLOUT.

Par exemple, lorsqu’une appliance Citrix ADC reçoit une requête HTTP pour un service hébergé derrière l’adresse IP virtuelle Citrix ADC, l’appliance peut devoir vérifier l’authentification du client auprès d’un serveur externe et effectuer une action.

À l’invite de commandes, tapez :

add ns icapProfile <name> [-preview ( ENABLED | DISABLED )][-previewLength <positive_integer>] -uri <string> [-hostHeader <string>] [-userAgent <string>] -Mode ( REQMOD | RESPMOD )[-queryParams <string>] [-connectionKeepAlive ( ENABLED | DISABLED )][-allow204 ( ENABLED | DISABLED )] [-insertICAPHeaders <string>][-insertHTTPRequest <string>] [-reqTimeout <positive_integer>][-reqTimeoutAction <reqTimeoutAction>] [-logAction <string>]

Exemple :

add icapprofile reqmod-profile -mode RESPMOD -uri “/req_scan” -hostHeader “Webroot.reqsca” -useragent “NS_SWG-Proxy”

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

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

Consigner l’action d’inspection du contenu ICAP

Pour générer dynamiquement des enregistrements de flux de journaux d’inspection de contenu ou des journaux SYSLOG, vous pouvez utiliser l’expression de stratégie ICAP.RES sur la réponse ICAP. Ce paramètre est configurable dans le profil ICAP pour configurer l’expression de stratégie afin de générer les enregistrements de journal dynamiques.

À l’invite de commandes, tapez :

add audit messageaction icap_log_expr INFORMATIONAL icap.res.full_header

set icapProfile reqmode-profile -logAction messageaction

Ajouter un service ICAP en tant que service TCP ou SSL_TCP

Après avoir activé la fonctionnalité d’inspection du contenu, vous devez ajouter un service ICAP pour les serveurs ICAP qui feront partie de la configuration d’équilibrage de charge. Le service que vous ajoutez fournit la connexion ICAP entre l’appliance Citrix ADC et les serveurs virtuels d’équilibrage de charge.

Remarque : En tant qu’administrateur, vous pouvez ajouter un service ICAP et configurer directement l’adresse IP du serveur ICAP dans l’action Inspection du contenu.

À l’invite de commandes, tapez ce qui suit :

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

Exemple :

add service icapsv1 10.10.10.10 SSL_TCP 1345

add service icapsv2 10.10.10.11 SSL_TCP 1345

Ajouter un serveur virtuel d’équilibrage de charge basé sur TCP ou SSL_TCP

Après avoir créé un service ICAP, vous devez créer un serveur virtuel pour accepter le trafic ICAP et équilibrer la charge des serveurs ICAP.

Remarque :

Vous pouvez également utiliser un service TCP basé sur SSL sur un canal sécurisé. Pour ce faire, vous devez utiliser un service SSL_TCP et vous lier à l’action Inspection du contenu.

À l’invite de commandes, tapez ce qui suit :

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

Exemple :

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

Liez le service ICAP au serveur virtuel d’équilibrage de charge

Après avoir créé un service ICAP et un serveur virtuel, vous devez lier le service ICAP au serveur virtuel.

À l’invite de commandes, tapez ce qui suit :

bind lb vserver <name> <serviceName>

Exemple :

bind lb vserver vicap icapsv1

Ajouter une action d’inspection du contenu

Après avoir activé la fonction d’inspection du contenu, vous devez ajouter une action ICAP pour gérer les informations de demande ICAP. Le profil ICAP et les services, ou le serveur virtuel d’équilibrage de charge créés sont liés à l’action ICAP. Si le serveur ICAP est en panne, vous pouvez configurer le paramètre ifserverdown pour que l’appliance effectue l’une des actions suivantes.

CONTINUE : Si l’utilisateur souhaite contourner l’inspection du contenu lorsque le serveur distant est en panne, vous pouvez choisir l’action “CONTINUE”, par défaut. RESET (default) : Cette action répond au client en fermant la connexion avec RST. DROP : Cette action supprime silencieusement les paquets sans envoyer de réponse à l’utilisateur.

À l’invite de commandes, tapez ce qui suit :

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

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

Remarque :

Si vous pouvez configurer le service ICAP au lieu d’un serveur virtuel d’équilibrage de charge, vous pouvez mentionner le nom du service dans l’option \<-serverip>. Lors de l’ajout de l’action Inspection du contenu, le service TCP est automatiquement créé pour l’adresse IP donnée avec le port 1344 et il est utilisé pour la communication ICAP.

Exemple :

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 1.1.1.1 - serverport 1344 -icapProfileName icap_reqmod

Ajouter des stratégies d’inspection du contenu

Après avoir créé une action d’inspection de contenu, vous devez créer des stratégies d’inspection de contenu pour évaluer les demandes de traitement ICAP et de journalisation d’audit. La stratégie est basée sur une règle qui consiste en une ou plusieurs expressions. La règle est associée à l’action d’inspection du contenu associée si une demande correspond à la règle.

À l’invite de commandes, tapez ce qui suit :

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

Exemple :

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

Lier les stratégies d’inspection de contenu au serveur virtuel de commutation de contenu ou d’équilibrage de charge

Pour mettre en œuvre une stratégie ICAP, vous devez la lier globalement ou la lier à un serveur virtuel de commutation de contenu ou d’équilibrage de charge, qui frontal l’application. Lorsque vous liez la stratégie, vous devez lui attribuer une priorité. La priorité détermine l’ordre dans lequel les stratégies que vous définissez sont évaluées.

Remarque :

Le serveur virtuel d’application doit être de type HTTP/SSL/CS-PROXY.

Pour plus d’informations sur la configuration d’une configuration d’équilibrage de charge pour le transfert du trafic vers le serveur d’origine back-end après la transformation du contenu, reportez-vous à la sectionÉquilibrage de charge.

Configurer le service ICAP sécurisé

Pour établir une connexion sécurisée entre l’appliance Citrix ADC et les serveurs Web ICAP, l’appliance utilise un service TCP basé sur SSL ou un serveur virtuel d’équilibrage de charge lié à une action ICAP.

Pour établir une connexion ICAP sécurisée, effectuez les tâches suivantes :

  1. Ajouter un service TCP basé sur SSL.
  2. Liez le service TCP basé sur SSL à un serveur virtuel d’équilibrage de charge de type TCP ou SSL_TCP.
  3. Liez un service TCP basé sur SSL ou un serveur virtuel d’équilibrage de charge à l’action d’inspection de contenu.

Ajouter un service TCP basé sur SSL au serveur virtuel d’équilibrage de charge

Pour établir une connexion sécurisée entre l’appliance Citrix ADC et les serveurs Web ICAP, l’appliance utilise un service TCP basé sur SSL ou un serveur virtuel d’équilibrage de charge lié à une action ICAP.

Pour établir une connexion ICAP sécurisée, effectuez les tâches suivantes :

  1. Ajouter un service TCP basé sur SSL.
  2. Liez le service TCP basé sur SSL à un serveur virtuel d’équilibrage de charge de type TCP ou SSL_TCP.

Liez un service TCP basé sur SSL ou un serveur virtuel d’équilibrage de charge à l’action d’inspection de contenu

Ajouter un service TCP basé sur SSL au serveur virtuel d’équilibrage de charge

Après avoir activé la fonction d’inspection du contenu, vous devez ajouter un service ICAP sécurisé qui fera partie de la configuration d’équilibrage de charge. Le service que vous ajoutez fournit une connexion ICAP sécurisée entre l’appliance Citrix ADC et les serveurs virtuels d’équilibrage de charge.

À l’invite de commandes, tapez ce qui suit :

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

Exemple :

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

Liez un service TCP basé sur SSL au serveur virtuel d’équilibrage de charge SSL_TCP ou TCP

Après avoir créé un service ICAP sécurisé, vous devez lier le service au serveur virtuel d’équilibrage de charge (si vous utilisez un serveur virtuel d’équilibrage de charge pour équilibrer la charge des serveurs ICAP).

À l’invite de commandes, tapez ce qui suit :

bind lb vserver <name> <serviceName>

Exemple :

bind lb vserver vicap icapsv2

Liez un service TCP basé sur SSL ou un serveur virtuel d’équilibrage de charge à l’action d’inspection du contenu

Vous devez ajouter une action ICAP pour gérer les informations de demande ICAP et lier également le service TCP basé sur SSL à l’action.

À l’invite de commandes, tapez ce qui suit :

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

Exemple :

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

Configurer le protocole ICAP à l’aide de l’interface graphique

  1. Accédez à Équilibrage de charge > Services, puis cliquez sur Ajouter.
  2. Dans la page Services, entrez les détails du service.
  3. Accédez à Équilibrage de charge > Serveurs virtuels. Ajoutez un serveur virtuel d’équilibrage de charge de type HTTP/SSL. Vous pouvez également sélectionner un serveur virtuel et cliquer sur Modifier.
  4. Après avoir entré les détails de base du serveur, cliquez sur Continuer.
  5. Dans la section Paramètres avancés, cliquez sur Stratégies.
  6. Accédez à la section Stratégies et cliquez sur l’icône Crayon pour configurer la stratégie d’inspection du contenu.
  7. Dans la page Choisir une stratégie, sélectionnez Inspection du contenu. Cliquez sur Continue.
  8. Dans la section Liaison de stratégie, cliquez sur + pour ajouter une stratégie d’inspection du contenu.
  9. Dans la page Créer une stratégie ICAP, entrez un nom pour la stratégie.
  10. Dans le champ Action, cliquez sur le signe « + » pour ajouter une action ICAP.
  11. Dans la page Créer une action ICAP, entrez un nom pour l’action.
  12. Entrez un nom pour l’action.
  13. Dans le champ Nom du serveur, entrez le nom du service TCP déjà créé.
  14. Dans le champ Profil ICAP, cliquez sur le signe « + » pour ajouter un profil ICAP.
  15. Dans la page Créer un profil ICAP, entrez un nom de profil, un URI et un MODE.
  16. Cliquez sur Créer.
  17. Dans la page Créer une action ICAP, cliquez sur Créer.
  18. Dans la page Créer une stratégie ICAP, entrez « true » dans l’éditeur d’expressions, puis cliquez sur Créer .
  19. Cliquez sur Bind.
  20. Lorsque vous êtes invité à activer la fonction d’inspection du contenu, cliquez sur Oui.
  21. Cliquez sur Terminé.

Pour plus d’informations sur la configuration de l’interface graphique Citrix ADC pour l’équilibrage de charge et le transfert du trafic vers le serveur d’origine back-end après la transformation du contenu, reportez-vous à la section Équilibrage de charge.

Configurer le protocole ICAP sécurisé à l’aide de l’interface graphique

  1. Accédez à Équilibrage de charge > Services, puis cliquez sur Ajouter.
  2. Dans la page Services, entrez les détails du service.
  3. Accédez à Équilibrage de charge > Serveurs virtuels. Ajoutez un serveur virtuel de type HTTP/SSL. Vous pouvez également sélectionner un serveur virtuel et cliquer sur Modifier.
  4. Après avoir entré les détails de base du serveur, cliquez sur Continuer.
  5. Dans la section Paramètres avancés, cliquez sur Stratégies.
  6. Accédez à la section Stratégies et cliquez sur l’icône Crayon pour configurer la stratégie d’inspection du contenu.
  7. Dans la page Choisir une stratégie, sélectionnez Inspection du contenu. Cliquez sur Continue.
  8. Dans la section Liaison de stratégie, cliquez sur + pour ajouter une stratégie d’inspection du contenu.
  9. Dans la page Créer une stratégie ICAP, entrez un nom pour la stratégie.
  10. Dans le champ Action, cliquez sur le signe « + » pour ajouter une action ICAP.
  11. Dans la page Créer une action ICAP, entrez un nom pour l’action.
  12. Entrez un nom pour l’action.
  13. Dans le champ Nom du serveur, entrez le nom du service TCP_SSL déjà créé.
  14. Dans le champ Profil ICAP, cliquez sur le signe « + » pour ajouter un profil ICAP.
  15. Dans la page Créer un profil ICAP, entrez un nom de profil, un URI et un MODE.
  16. Cliquez sur Créer.
  17. Dans la page Créer une action ICAP, cliquez sur Créer.
  18. Dans la page Créer une stratégie ICAP, entrez « true » dans l’éditeur d’expressions, puis cliquez sur Créer .
  19. Cliquez sur Bind.
  20. Lorsque vous êtes invité à activer la fonction d’inspection du contenu, cliquez sur Oui.
  21. Cliquez sur Terminé.

Prise en charge des journaux d’audit pour l’inspection de contenu à distance

Si une demande entrante ou une réponse sortante fait l’objet d’une inspection de contenu, l’appliance Citrix ADC consigne les détails ICAP. L’appliance stocke les détails sous forme de message de journal dans le fichier ns.log.

Chaque message de journal contient généralement les détails suivants :

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

Exemple de message de journal de requête inspecté par le contenu :

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

Exemple de message du journal des réponses inspecté par le contenu :

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