Citrix ADC

書き換えポリシーの構成

必要な書き換えアクションを作成したら、少なくとも1つの書き換えポリシーを作成して、Citrix ADCアプライアンスで書き換える要求を選択する必要があります。

書き換えポリシーは、ルール自体が 1 つ以上の式で構成されます。また、リクエストまたはレスポンスがルールに一致した場合に実行される関連アクション。HTTP リクエストとレスポンスを評価するためのポリシールールは、リクエストまたはレスポンスのほぼすべての部分に基づくことができます。

TCP リライトアクションを使用して、TCP ペイロード以外のデータを書き換えることはできません。TCP 書き換えポリシーのポリシールールは、トランスポート層内の情報に基づいて行うことができます。そしてトランスポート層の下の層。

設定されたルールが要求または応答と一致すると、対応するポリシーがトリガーされ、関連付けられたアクションが実行されます。

注: コマンドラインインターフェイスまたは構成ユーティリティを使用して、書き換えポリシーを作成および構成できます。コマンドラインインターフェイスとCitrix ADCポリシー式言語に精通していないユーザーは、通常、構成ユーティリティの使用がはるかに簡単になります。

コマンドラインインターフェイスを使用して新しい書き換えポリシーを追加するには

コマンドプロンプトで次のコマンドを入力して、新しい書き換えポリシーを追加し、構成を確認します。

  • <add rewrite policy <name> <expression> <action> [<undefaction>]
  • <show rewrite policy <name>

例1. 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-->

例 2. TCP ペイロードの書き換え (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-->

コマンドラインインターフェイスを使用して既存の書き換えポリシーを変更するには

コマンドプロンプトで次のコマンドを入力して、既存の書き換えポリシーを変更し、構成を確認します。

  • <set rewrite policy <name>-rule <expression-action <action> [<undefaction>]
  • <show rewrite policy <name>

:


> 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-->

コマンドラインインターフェイスを使用して書き換えポリシーを削除するには

コマンドプロンプトで次のコマンドを入力して、書き換えポリシーを削除します。

rm rewrite policy <name>

:


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

構成ユーティリティを使用して書き換えポリシーを構成するには

  1. [AppExpert]>[Rewrite]>[Policies] の順に移動します。
  2. 詳細ウィンドウで、次のいずれかの操作を行います。
    • ポリシーを作成するには、[追加] をクリックします。
    • 既存のポリシーを変更するには、ポリシーを選択し、[ 開く]をクリックします。
  3. [ 作成]または[ OK]をクリックします。ポリシーが正常に構成されたことを示すメッセージがステータスバーに表示されます。
  4. 手順 2 ~ 4 を繰り返して、必要な数の書き換えアクションを作成または変更します。
  5. [閉じる] をクリックします。書き換えポリシーを削除するには、削除する書き換えポリシーを選択し、「 削除 」をクリックし、プロンプトが表示されたら、「 OK」をクリックして選択を確定します。

コンテンツセキュリティヘッダー、XSS 保護、HSTS、X-Content-Type-Options、およびコンテンツセキュリティポリシーの書き換えポリシーを作成する

コマンドプロンプトで次の書き換えアクションコマンドを入力して、書き換えを使用してNetScaler を介して提供されるWebページにセキュリティヘッダーを追加します。

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-->

コマンドプロンプトで次の書き換えポリシーコマンドを入力して、書き換えを使用してNetScaler を介して提供されるWebページにセキュリティヘッダーを追加します。

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-->

コマンドプロンプトで次のコマンドを入力して、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-->

構成ユーティリティを使用して、コンテンツセキュリティヘッダー、XSS 保護、HSTS、X-Content-Type-Options、およびコンテンツセキュリティポリシーの書き換えポリシーを構成する

  1. AppExpert > 書き換え > アクションに移動します
  2. [ 追加 ] をクリックして、ヘッダーごとに書き換えアクションを作成します。
  3. AppExpert > 書き換え > ポリシーに移動します
  4. [ 追加 ] をクリックして、書き換えポリシーを作成し、アクションにリンクします。
  5. Goto 式 NEXTを使用して、レスポンスでポリシーを仮想サーバーにバインドします。

注: SSLVPN では、以下のコンテンツセキュリティアクションを使用する必要があります。

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-->

ブラウザが localhost HTTP 呼び出しを使用して Cookie/GW 情報をプラグインに渡すため、localhost 例外が必要です。CSP には「self」しか持たないため、仮想サーバーへの呼び出しだけが許可されます。