Légende d’inspection du contenu

Lorsqu’une appliance Citrix ADC envoie une demande ICAP, le serveur ICAP utilise un code d’état pour spécifier l’état de la réponse et l’action à entreprendre par le client ICAP (appliance Citrix ADC). Par exemple, si le code d’état d’une réponse ICAP est 200 OK pour une requête ICAP REQMOD et si res-hdr est défini, le client ICAP peut envoyer la réponse reçue du serveur ICAP à l’utilisateur. Toutefois, si le reshdr n’est pas défini, le client ICAP (appliance Citrix ADC) peut transférer la demande originale ou adaptée au serveur principal d’origine.

Mais dans certains scénarios, le serveur ICAP ne peut pas prendre la décision finale. Au lieu de cela, il fournit uniquement les informations demandées à l’appliance et peut décider en fonction de l’évaluation de la stratégie. Dans ce cas, le client ICAP ne peut pas dépendre uniquement du code d’état de la réponse ICAP, mais il examine les en-têtes ICAP reçus et évalue l’expression de stratégie sur les en-têtes et applique l’action associée.

Voici quelques cas d’utilisation où la légende d’inspection du contenu ICAP est nécessaire :

  • Lors de la réception de la demande de handshake SSH, le client ICAP (Citrix ADC appliance) peut classer le domaine consulté et décider s’il convient de continuer ou de le supprimer.
  • Lors de la réception d’une demande HTTP pour un service, l’appliance peut vérifier l’autorisation d’accès d’un serveur externe en fonction de l’ID de locataire de l’utilisateur et prendre les mesures appropriées.

Dans les deux scénarios, le serveur ICAP n’a aucune idée de la stratégie configurée en fonction des informations disponibles, mais il renvoie simplement les informations demandées à l’appliance. L’appliance applique ensuite la stratégie aux informations de réponse reçues et applique l’action associée. La légende d’inspection du contenu ICAP est ajoutée à la structure ICAP pour renvoyer les informations de demande à partir d’un serveur ICAP externe. La fonctionnalité de cette légende est très similaire au fonctionnement d’une légende HTTP. Toute expression de stratégie, par exemple Responder ou AppFirewall, peut déclencher la demande ICAP vers le serveur ICAP configuré. Les informations demandées, configurées via ReturnExpr, sont ensuite extraites de la réponse ICAP et transmises au module demandé

La légende d’inspection du contenu ICAP est ajoutée à la structure ICAP pour renvoyer les informations de demande à partir d’un serveur ICAP externe. La fonctionnalité de cette légende est très similaire au fonctionnement d’une légende HTTP. Le module ICAP peut utiliser une expression de stratégie avancée existante peut être utilisée pour déclencher une légende ICAP sur le serveur ICAP configuré

Expression de stratégie de légende d’inspection du contenu

L’expression de stratégie d’inspection de contenu suivante est utilisée comme expression de retour dans la légende ICAP. La syntaxe de cette expression de légende d’inspection de contenu est similaire à une expression de légende HTTP.

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

Où, <ContentInspection callout name> est la légende ContentInSpection de type ICAP qui définit les propriétés du serveur ICAP et du profil ICAP à utiliser pour envoyer et recevoir la demande vers/depuis le serveur ICAP. Le type de retour de la réponse à partir de l’agent de légende ICAP détermine l’ensemble d’opérateurs que vous pouvez utiliser sur la réponse. Si la partie de la réponse que vous souhaitez analyser est du texte, vous pouvez utiliser un opérateur de texte pour analyser la réponse. Par exemple, vous pouvez utiliser l’opérateur CONTAINS(<string>) pour vérifier si la partie spécifiée de la réponse contient une chaîne particulière.

Exemple :

SYS.CI_CALLOUT(CI-callout).contains(“value to be checked”)

Configuration de la légende d’inspection du contenu ICAP

Procédez comme suit pour configurer la légende d’inspection du contenu ICAP sur votre appliance.

  1. Ajouter un profil ICAP
  2. Ajouter une légende d’inspection du contenu
  3. définir l’expression de légende d’inspection du contenu
  4. Appeler la légende d’inspection du contenu

Ajouter un profil ICAP

Ajouter une légende d’inspection du contenu

La commande ContentInspectionCallout spécifie les informations du serveur ICAP, l’expression de retour et son type.

À l’invite de commandes, tapez :

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

Où :

<profileName> - Nom du profil ICAP <returnType> - (BOOL | NUM | TEXTE) <resultExpr> - Expression à évaluer lors de la réception de la réponse ICAP, doit commencer par ICAP.RES.

Exemple :

Pour extraire la valeur de l’en-tête de réponse ICAP de la catégorie X-URL, le ResultExpr peut être spécifié comme indiqué ci-dessous.

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

L’expression ci-dessus renvoie la valeur de l’X-URL- vérifie la valeur de retour et applique l’action associée.

Stratégie d’entité à l’aide de la légende d’inspection du contenu et de l’action de fonctionnalité

Lorsqu’une fonctionnalité Citrix ADC doit interagir avec un service externe à l’aide d’ICAP, la fonctionnalité peut utiliser la légende d’inspection de contenu CI_CALLOUT. Dans ce mode, la fonctionnalité utilise CI_CALLOUT dans l’expression de stratégie d’entité pour déclencher la demande ICAP vers le serveur ICAP externe. À la réception de la réponse, la fonction peut spécifier la ResultExpression dans l’action ContentInspection pour extraire les informations requises de la réponse ICAP. Le résultat peut être booléen, numérique ou texte. L’entité peut alors effectuer l’action associée en fonction du résultat extrait. Voyons un cas d’utilisation de la façon dont les stratégies de fonctionnalité utilisant CI Callout pour effectuer l’action de fonctionnalité.

Cas d’utilisation 1 : Pour extraire SNI à l’aide de la stratégie de détection d’optimisation vidéo et supprimer la poignée de main si le domaine est « Social Media »

Procédez comme suit pour configurer le cas d’utilisation :

  1. Ajouter un profil ICAP

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

  2. Ajoutez une légende d’inspection de contenu représentant le serveur ICAP et l’expression de résultat pour extraire les informations de catégorie de la réponse 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. Ajoutez une stratégie de détection vidéo et une expression pour récupérer les informations de catégorie d’URL pour le domaine reçu et supprimez la demande si la catégorie est « Médias sociaux ».

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

Cas d’utilisation 2 : Pour récupérer la catégorie d’URL du serveur ICAP et la bloquer à l’aide d’un jeu de motifs

Procédez comme suit pour configurer le cas d’utilisation :

  1. Ajoutez un profil ICAP qui définit le mode et la requête HTTP.

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

  2. Ajoutez une légende d’inspection du contenu pour récupérer les informations de catégorie.

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

  3. Ajoutez un jeu de motifs et liez le modèle de catégorie bloqué à celui-ci.

    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. Ajoutez une stratégie de détection d’optimisation vidéo pour appeler la légende ICAP et agir.

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