ADC

Légende d’inspection du contenu

Lorsqu’une appliance Citrix ADC envoie une requête ICAP, le serveur ICAP utilise un code d’état pour spécifier l’état de la réponse. Le code d’état spécifie également l’action à entreprendre par l’appliance. 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 n’ res-hdr 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. Il examine plutôt 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 :

  • À la réception de la demande de connexion SSH, le client ICAP (appliance Citrix ADC) peut classer le domaine auquel vous avez accès et décider de poursuivre la connexion ou de le supprimer.
  • À 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. Les mesures appropriées peuvent être prises.

Dans les deux scénarios, le serveur ICAP n’a aucune idée de la stratégie configurée, 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 de 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 de 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 le 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-légende). Contient (« valeur à vérifier »)

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 ContentInSpectioncCallout 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> - L’expression à évaluer à la réception de la réponse ICAP doit commencer par ICAP.RES.

Exemple :

Extrayez la valeur de l’en-tête de réponse ICAP catégorie X-URL-Category, le ResultExpr peut être spécifié comme suit.

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

L’expression précédente renvoie la valeur de X-url-category 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é à l’aide de 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 la 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 supprimer la demande si la catégorie est « Social Media ».

    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 l’action de légende ICAP.

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

Légende d’inspection du contenu