Citrix ADC

クラシックポリシーのチュートリアルの例

以下の例では、Citrix Gateway、アプリケーションファイアウォール、SSLなど、特定のCitrix ADC機能に対する従来のポリシー設定の便利な例について説明します。

このドキュメントでは、次の詳細について説明します。

  • 有効なクライアント証明書を確認するためのCitrix Gateway ポリシー
  • ショッピングカートアプリケーションを保護するためのアプリケーションファイアウォールポリシー
  • スクリプト Web ページを保護するためのアプリケーションファイアウォールポリシー
  • 特定の IP からパケットをドロップする DNS ポリシー
  • 有効なクライアント証明書を要求する SSL ポリシー

有効なクライアント証明書をチェックするためのCitrix Gateway ポリシー

以下のポリシーにより、Citrix ADCは、企業のSSL VPNへの接続を確立する前に、クライアントが有効な証明書を提示するようにします。

コマンドラインインターフェイスを使用して有効なクライアント証明書を確認するには

  • クライアント証明書の認証を実行するアクションを追加します。

    add ssl action act1 -clientAuth DOCLIENTAUTH

  • クライアント要求を評価する SSL ポリシーを作成します。

    add ssl policy pol1 -rule "REQ.HTTP.METHOD == GET" -action act1

  • Web サーバーに送信される要求の HTTP ヘッダーに証明書発行者の詳細を挿入する書き換えアクションを追加します。

    add rewrite action act2 insert_http_header "CertDN" CLIENT.SSL.CLIENT_CERT.SUBJECT

  • クライアント証明書が存在する場合は、証明書発行者の詳細を挿入する書き換えポリシーを作成します。

    add rewrite policy pol2 "CLIENT.SSL.CLIENT_CERT.EXISTS" act2

    これらの新しいポリシーをCitrix ADC VIPにバインドして有効にします。

ショッピングカートのアプリケーションを保護するためのアプリケーションファイアウォールポリシー

ショッピングカートのアプリケーションは、クレジットカード番号や有効期限などの重要な顧客情報を処理し、バックエンドデータベースサーバーにアクセスします。多くのショッピングカートのアプリケーションでは、レガシー CGI スクリプトも使用されています。このスクリプトには、書いた時点で不明であったセキュリティ上の欠陥が含まれていても、現在はハッカーや ID 泥棒に知られています。

ショッピングカートのアプリケーションは、次の攻撃に対して特に脆弱です。

  • クッキーの改ざん。ショッピングカートアプリケーションが Cookie を使用し、ユーザーがアプリケーションに戻った Cookie に対して適切なチェックを行わない場合、攻撃者は Cookie を変更し、別のユーザーの資格情報でショッピングカートアプリケーションにアクセスする可能性があります。攻撃者は、そのユーザーとしてログオンすると、正当なユーザーに関する機密性の高い個人情報を取得したり、正当なユーザーのアカウントを使用して注文を行ったりする可能性があります。
  • SQL インジェクション。ショッピングカートアプリケーションは、通常、バックエンドデータベースサーバーにアクセスします。アプリケーションが Web フォームのフォームフィールドでユーザーが返すデータに対して適切な安全性チェックを実行しない限り、攻撃者は Web フォームを使用して、不正な SQL コマンドをデータベースサーバーに挿入する可能性があります。攻撃者は通常、この種の攻撃を使用して、データベースから機密性の高い個人情報を取得したり、データベース内の情報を修正したりします。

次の構成は、これらの攻撃やその他の攻撃からショッピングカートのアプリケーションを保護します。

構成ユーティリティを使用してショッピングカートアプリケーションを保護するには

  1. [セキュリティ] > [アプリケーションファイアウォール] > [プロファイル] に移動し、[追加] をクリックします。

  2. [アプリケーションファイアウォールプロファイルの作成] ダイアログボックスの [プロファイル名] フィールドに shopping_cart と入力します。

  3. [プロファイルの種類] ドロップダウンリストで、[Web アプリケーション] を選択します。

  4. 「設定」で、「詳細設定」のデフォルト設定を選択します。

  5. [作成] をクリックし、[閉じる] をクリックします。

  6. 詳細ビューで、新しいプロファイルをダブルクリックします。

  7. [Web アプリケーションプロファイルの構成] ダイアログボックスで、次の説明に従って新しいプロファイルを構成します。

    • [チェック] タブをクリックし、[開始 URL チェック] をダブルクリックし、[開始 URL チェックの変更] ダイアログボックスで [全般] タブをクリックしてブロックを無効にし、ラーニング、ロギング、統計、および URL 閉鎖を有効にします。[OK] をクリックし、[閉じる] をクリックします。

      コマンドラインを使用している場合は、プロンプトで次のように入力し、Enter キーを押して、これらの設定を構成します。

      set appfw profile shopping_cart -startURLAction LEARN LOG STATS -startURLClosure ON

    • Cookie の一貫性チェックとフォームフィールドの一貫性チェックでは、ブロックを無効にし、ラーニング、ロギング、統計を有効にします。開始の URL チェックの設定と同様の方法を使用します。

      コマンドラインを使用している場合は、次のコマンドを入力してこれらの設定を構成します。

      set appfw profile shopping_cart -cookieConsistencyAction LEARN LOG STATS

      set appfw profile shopping_cart -fieldConsistencyAction LEARN LOG STATS

    • SQLインジェクション・チェックでは、「SQLインジェクション・チェックの変更」ダイアログ・ボックスの「全般」タブの「チェック・アクション」セクションで、ブロックを無効にし、特殊文字のラーニング、ロギング、統計および変換を有効にします。

      コマンドラインを使用している場合は、プロンプトで次のように入力し、Enter キーを押して、これらの設定を構成します。

      set appfw profile shopping_cart -SQLInjectionAction LEARN LOG STATS -SQLInjectionTransformSpecialChars ON

    • クレジット・カード・チェックでは、ブロックを無効にし、クレジット・カード番号のロギング、統計、マスキングを有効にし、支払方法として受け入れるクレジット・カードの保護を有効にします。

      • 構成ユーティリティを使用している場合は、[クレジットカードチェックの変更] ダイアログボックスの [全般] タブの [チェックアクション] セクションで、ブロック、ログ、統計、およびマスキング (または x-out) を構成します。特定のクレジットカードの保護は、同じダイアログボックスの [設定] タブで構成します。
      • コマンドラインを使用している場合は、プロンプトで次のように入力し、Enter キーを押して、これらの設定を構成します。

      set appfw profile shopping_cart -creditCardAction LOG STATS -creditCardXOut ON -creditCard <name> [<name>...]

      <name>あなたが保護したいクレジットカードの名前を置き換えるために. ビザの場合は、VISAを代用します。マスターカードの場合は、マスターカードの代わりになります。アメリカン・エキスプレスの場合は、アメックスに置き換えます。「検出」の場合は、「検出」に置き換えます。ダイナースクラブは、ダイナースクラブに代わるものです。JCB の場合は、JCB に置き換えます。

  8. ショッピングカートアプリケーションへの接続を検出し、shopping_cart プロファイルをそれらの接続に適用する shopping_cart という名前のポリシーを作成します。

    ショッピングカートへの接続を検出するには、着信接続の URL を調べます。ショッピングカートのアプリケーションを別のホストでホストする場合(セキュリティやその他の理由による賢明な措置)、URL でそのホストが存在することを確認することができます。他のトラフィックを処理するホスト上のディレクトリでショッピングカートをホストする場合は、接続が適切なディレクトリまたは HTML ページに移動していることを確認する必要があります。

    これらのいずれかを検出するプロセスは同じです。次の式に基づいてポリシーを作成し、<string>の適切なホストまたは URL を置き換えます。

    REQ.HTTP.HEADER URL CONTAINS <string>
    
    • 構成ユーティリティを使用している場合は、アプリケーション・ファイアウォールの「ポリシー」ページに移動し、「追加…」ボタンをクリックして新しいポリシーを追加します。次に、201ページ以降の「構成ユーティリティを使用してクラシック式を使用してポリシーを作成するには」で説明するポリシー作成プロセスに従います。

    • コマンドラインを使用している場合は、プロンプトで次のコマンドを入力し、Enter キーを押します。

      add appfw policy shopping_cart "REQ.HTTP.HEADER URL CONTAINS <string>" shopping_cart

2. 新しいポリシーをグローバルにバインドして有効にします。

このポリシーがショッピングカートへのすべての接続と一致し、別のより一般的なポリシーによってプリエンプトされないようにする必要があるため、高い優先順位を割り当てる必要があります。1 をプライオリティとして割り当てると、他のポリシーはこのポリシーを優先させることはできません。

スクリプト化されたWebページを保護するためのアプリケーションファイアウォールポリシー

埋め込まれたスクリプト、特にレガシー JavaScript を含む Web ページは、「同じ生成元ルール」に違反することがよくあります。このルールでは、スクリプトが配置されているサーバー以外のサーバー上のコンテンツにアクセスしたり変更したりすることはできません。このセキュリティ上の脆弱性をクロスサイトスクリプティングと呼びます。アプリケーションファイアウォールのクロスサイトスクリプティング規則は、通常、クロスサイトスクリプティングを含むリクエストを除外します。

残念ながら、システム管理者がこれらのスクリプトをチェックし、安全であることがわかっていても、古い JavaScript を持つ Web ページが機能しなくなる可能性があります。次の例では、他の Web サイトに対してこの重要なフィルタを無効にせずに、信頼できるソースからの Web ページのクロスサイトスクリプティングを許可するようにアプリケーションファイアウォールを構成する方法について説明します。

コマンドラインインターフェイスを使用して Web ページをクロスサイトスクリプティングで保護するには

  • コマンドラインで詳細プロファイルを作成するには、次のように入力します。

    add appfw profile pr_xssokay -defaults advanced

  • プロファイルを構成するには、次のように入力します。

    set appfw profile pr_xssokay -startURLAction NONE -startURLClosure OFF -cookieConsistencyAction LEARN LOG STATS -fieldConsistencyAction LEARN LOG STATS -crossSiteScriptingAction LEARN LOG STATS$"

  • スクリプト化された Web ページへの接続を検出し、pr_xssOK プロファイルを適用するポリシーを作成します。次のように入力します。

    add appfw policy pol_xssokay "REQ.HTTP.HEADER URL CONTAINS ^\\.pl\\?$ || REQ.HTTP.HEADER URL CONTAINS ^\\.js$" pr_xssokay

  • ポリシーをグローバルにバインドします。

構成ユーティリティを使用して Web ページをクロスサイトスクリプトで保護するには

  1. [セキュリティ] > [アプリケーションファイアウォール] > [プロファイル] に移動します。

  2. 詳細ビューで、[追加] をクリックします。

  3. [アプリケーションファイアウォールプロファイルの作成] ダイアログボックスで、詳細な既定で Web アプリケーションプロファイルを作成し、pr_xssOK という名前を付けます。[作成] をクリックし、[閉じる] をクリックします。

  4. 詳細ビューで、プロファイルをクリックし、[開く] をクリックし、[Web アプリケーションプロファイルの構成] ダイアログボックスで、次に示すように pr_xssOK プロファイルを構成します。

    URL チェックを開始:すべてのアクションをクリアします。

    • Cookie の一貫性チェック:ブロックを無効にします。
    • フォームフィールドの一貫性チェック:ブロックを無効にします。
    • クロスサイトスクリプティングチェック:ブロックを無効にします。

    これにより、安全であることがわかっているクロスサイトスクリプティングを含む Web ページを含む正当な要求がブロックされるのを防ぐことができます。

  5. [ポリシー] をクリックし、[追加] をクリックします。

  6. [アプリケーションファイアウォールポリシーの作成] ダイアログボックスで、スクリプト化された Web ページへの接続を検出し、pr_xssOK プロファイルを適用するポリシーを作成します。

    • ポリシー名:pol_xssOK
    • 関連付けられたプロファイル:pr_xssOK
    Policy expression: “REQ.HTTP.HEADER URL CONTAINS ^\.pl\?$   REQ.HTTP.HEADER URL CONTAINS ^\.js$”
  7. 新しいポリシーをグローバルにバインドして有効にします。

特定の IP からのパケットをドロップする DNS ポリシー

次の例では、DDOS 攻撃で使用されるような不要な IP またはネットワークからの接続を検出し、それらの場所からのすべてのパケットをドロップする DNS アクションおよび DNS ポリシーを作成する方法について説明します。この例では、IANA 予約済み IP ブロック 192.168.0.0/16 内のネットワークを示しています。敵対的なネットワークは、通常、パブリックにルーティング可能なIP上にあります。

コマンドラインインターフェイスを使用して特定の IP からのパケットをドロップするには

  • 敵対的なネットワークからの接続を検出し、それらのパケットをドロップする pol_dos_drop という名前の DNS ポリシーを作成するには、次のように入力します。

    add dns policy pol_ddos_drop 'client.ip.src.in_subnet(192.168.253.128/25) || client.ip.src.in_subnet(192.168.254.32/27)' -drop YES'

    192.168.0.0/16 の範囲のネットワーク例では、ブロックする各ネットワークの ##.##.##.##.##.###/## 形式の IP とネットマスクを置き換えます。各CLIENT.IP.SRC.IN_SUBNET(##.##.##.##.##./##)コマンドを OR 演算子で区切って、必要な数のネットワークを含めることができます。

  • 新しいポリシーをグローバルにバインドして有効にします。

有効なクライアント証明書を要求する SSL ポリシー

次の例は、クライアントとの SSL 接続を開始する前に、ユーザーのクライアント証明書の有効性をチェックする SSL ポリシーを示しています。

期限切れのクライアント証明書を持つユーザーからの接続をブロックするには

  • コマンドラインインターフェイスにログオンします。

    GUI を使用している場合は、[SSL ポリシー] ページに移動し、[データ] 領域で [アクション] タブをクリックします。

  • act_current_client_certという名前のSSLアクションを作成します。このアクションでは、Citrix ADCとのSSL接続を確立するためにユーザーが現在のクライアント証明書を持っている必要があります。

    add ssl action act_current_client_cert-clientAuth DOCLIENTAUTH -clientCert ENABLED -certHeader "clientCertificateHeader" -clientCertNotBefore ENABLED -certNotBeforeHeader "Mon, 01 Jan 2007 00:00:00 GMT"

  • クエリ文字列を含む Web サーバーへの接続を検出する pol_current_client_cert という名前の SSL ポリシーを作成します。

    add ssl policy pol_current_ client_cert 'REQ.SSL.CLIENT.CERT.VALIDFROM \>= "Mon, 01 Jan 2007 00:00:00 GMT"' act_block_ssl

  • 新しいポリシーをグローバルにバインドします。

    この SSL ポリシーは、より具体的な SSL ポリシーが適用されない限り、すべてのユーザーの SSL 接続に適用する必要があるため、低優先度を割り当てることができます。1,000(1000)のプライオリティを割り当てると、他の SSL ポリシーが最初に評価されます。つまり、このポリシーは、より具体的なポリシー基準に一致しない接続にのみ適用されます。