Citrix ADC

Configuration d’une stratégie de réécriture

Une fois que vous avez créé toute action de réécriture nécessaire, vous devez créer au moins une stratégie de réécriture pour sélectionner les demandes que l’appliance Citrix ADC doit réécrire.

Une stratégie de réécriture consiste en une règle, elle-même constituée d’une ou de plusieurs expressions. Et une action associée effectuée si une demande ou une réponse correspond à la règle. Les règles de stratégie d’évaluation des requêtes et des réponses HTTP peuvent être basées sur presque n’importe quelle partie d’une demande ou d’une réponse.

Vous ne pouvez pas utiliser les actions de réécriture TCP pour réécrire des données autres que la charge utile TCP. Vous pouvez baser les règles de stratégie des stratégies de réécriture TCP sur les informations de la couche de transport. Et les couches au-dessous de la couche de transport.

Si une règle configurée correspond à une demande ou une réponse, la stratégie correspondante est déclenchée et l’action associée est exécutée.

Remarque : Vous pouvez utiliser l’interface de ligne de commande ou l’utilitaire de configuration pour créer et configurer des stratégies de réécriture. Les utilisateurs qui ne connaissent pas parfaitement l’interface de ligne de commande et le langage d’expression de stratégie Citrix ADC trouveront généralement beaucoup plus facilement l’utilisation de l’utilitaire de configuration.

Pour ajouter une nouvelle stratégie de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour ajouter une nouvelle stratégie de réécriture et vérifier la configuration :

  • <Ajouter une stratégie de réécriture <name><expression><action>[<undefaction>]
  • <afficher la stratégie de réécriture <name>

Exemple 1. Réécriture du contenu HTTP :


> add rewrite policy policyNew "HTTP.RES.IS_VALID" insertact NOREWRITE
 Done
> show rewrite policy policyNew
        Name: policyNew
        Rule: HTTP.RES.IS_VALID
        RewriteAction: insertact
        UndefAction: NOREWRITE
        Hits: 0
        Undef Hits: 0

 Done
<!--NeedCopy-->

Exemple 2. Réécriture d’une charge utile TCP (réécriture TCP) :

> add rewrite policy client_tcp_payload_policy CLIENT.IP.SRC.EQ(172.168.12.232) client_tcp_payload_replace_all
 Done
> show rewrite policy client_tcp_payload_policy
        Name: client_tcp_payload_policy
        Rule: CLIENT.IP.SRC.EQ(172.168.12.232)
        RewriteAction: client_tcp_payload_replace_all
        UndefAction: Use Global
        LogAction: Use Global
        Hits: 0
        Undef Hits: 0

 Done
>
<!--NeedCopy-->

Pour modifier une stratégie de réécriture existante à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour modifier une stratégie de réécriture existante et vérifier la configuration :

  • <définir la stratégie de réécriture <name>-règle <expression-action <action>[<undefaction>]
  • <afficher la stratégie de réécriture <name>

Exemple :


> set rewrite policy policyNew -rule "HTTP.RES.IS_VALID" -action insertaction
 Done

> show rewrite policy policyNew
        Name: policyNew
        Rule: HTTP.RES.IS_VALID
        RewriteAction: insertaction
        UndefAction: NOREWRITE
        Hits: 0
        Undef Hits: 0

 Done
<!--NeedCopy-->

Pour supprimer une stratégie de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante pour supprimer une stratégie de réécriture :

stratégie de réécriture rm <name>

Exemple :


> rm rewrite policy policyNew
Done
<!--NeedCopy-->

Pour configurer une stratégie de réécriture à l’aide de l’utilitaire de configuration

  1. Accédez à AppExpert > Rewrite > Policies.
  2. Dans le volet d’informations, effectuez l’une des opérations suivantes :
    • Pour créer une stratégie, cliquez sur Ajouter.
    • Pour modifier une stratégie existante, sélectionnez-la, puis cliquez sur Ouvrir.
  3. Cliquez sur Créer ou sur OK. Un message apparaît dans la barre d’état indiquant que la stratégie a été configurée avec succès.
  4. Répétez les étapes 2 à 4 pour créer ou modifier autant d’actions de réécriture que vous le souhaitez.
  5. Cliquez sur Fermer. Pour supprimer une stratégie de réécriture, sélectionnez la stratégie de réécriture que vous souhaitez supprimer, puis cliquez sur Supprimer et, lorsque vous y êtes invité, confirmez votre choix en cliquant sur OK.

Créer une stratégie de réécriture pour les en-têtes de sécurité du contenu, la protection XSS, HSTS, X-Content-Type-Options et Content-Security-Policy

À l’invite de commandes, tapez les commandes d’action de réécriture suivantes pour ajouter un en-tête Security aux pages Web diffusées via NetScaler à l’aide de réécritures.

add rewrite action insert_STS_header insert_http_header Strict-Transport-Security ""max-age=157680000""
add rewrite action rw_act_insert_XSS_header insert_http_header X-Xss-Protection ""1; mode=block""
add rewrite action rw_act_insert_Xcontent_header insert_http_header X-Content-Type-Options ""nosniff""
add rewrite action rw_act_insert_Content_security_policy insert_http_header Content-Security-Policy ""default-src 'self' ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ; style-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:""
<!--NeedCopy-->

À l’invite de commandes, tapez les commandes de stratégie de réécriture suivantes pour ajouter un en-tête Security aux pages Web diffusées via NetScaler à l’aide de réécritures.

add rewrite policy enforce_STS true insert_STS_header
add rewrite policy rw_pol_insert_XSS_header "HTTP.RES.HEADER("X-Xss-Protection").EXISTS.NOT" rw_act_insert_XSS_header
add rewrite policy rw_pol_insert_XContent TRUE rw_act_insert_Xcontent_header
add rewrite policy rw_pol_insert_Content_security_policy TRUE rw_act_insert_Content_security_policy
<!--NeedCopy-->

À l’invite de commandes, tapez les commandes suivantes pour lier des stratégies au serveur virtuel sur Response à l’aide de Goto Expression NEXT.

bind vpn vserver access -policy enforce_STS -priority 100 -gotoPriorityExpression NEXT -type RESPONSE
bind vpn vserver "VSERVERNAME" -policy rw_pol_insert_XSS_header -priority 110 -gotoPriorityExpression NEXT -type RESPONSE
bind vpn vserver access -policy rw_pol_insert_XContent -priority 120 -gotoPriorityExpression NEXT -type RESPONSE
bind vpn vserver access -policy rw_pol_insert_Content_security_policy -priority 130 -gotoPriorityExpression NEXT -type RESPONSE
<!--NeedCopy-->

Configurer la stratégie de réécriture pour les en-têtes de sécurité du contenu, la protection XSS, HSTS, X-Content-Type-Options et Content-Security-Policy à l’aide de l’utilitaire de configuration

  1. Accédez à AppExpert > Réécriture > Actions
  2. Cliquez sur Ajouter pour créer des actions de réécriture pour chacun des en-têtes.
  3. Accédez à AppExpert > Réécriture > Stratégies
  4. Cliquez sur Ajouter pour créer des stratégies de réécriture et les lier à des actions.
  5. Liez des stratégies au serveur virtuel sur Response à l’aide de Goto Expression NEXT.

Remarque : Dans SSLVPN, nous devons utiliser l’action de sécurité de contenu ci-dessous :

add rewrite action Rewrite_Insert_Content-Security-Policy insert_http_header Content-Security-Policy ""default-src 'self' ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ; style-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' http://localhost:* data:;"
<!--NeedCopy-->

L’exception localhost est requise car le navigateur transmet les informations du cookie/GW au plug-in à l’aide de l’appel HTTP localhost. Puisque le CSP n’avait que « soi », seuls les appels vers le serveur virtuel seraient autorisés.