Citrix ADC

Citrix Gatewayのレート制限

Citrix Gatewayのレート制限機能を使用すると、Citrix Gatewayアプライアンス上の特定のネットワークエンティティまたは仮想エンティティの最大負荷を定義できます。Citrix Gatewayアプライアンスは認証されていないトラフィックをすべて消費するため、多くの場合、アプライアンスは高いレートで処理要求にさらされます。レート制限機能を使用すると、エンティティに関連付けられたトラフィックのレートを監視し、トラフィックレートに基づいてリアルタイムで予防措置を実行するようにCitrix Gatewayアプライアンスを設定できます。Citrix ADCアプライアンスでのレート制限の動作の詳細については、「レート制限」を参照してください。

Citrix ADCには、予期しないレートでバックエンドサーバーを保護するレート制限機能があります。Citrix ADCの機能はCitrix Gatewayが処理する認証されていないトラフィックを処理しなかったため、Citrix Gateway独自のレート制限機能が必要でした。これは、Citrix Gatewayアプライアンスが公開されているさまざまなソースからの予期せぬ要求率をチェックするために必要です。たとえば、認証されていない/ログイン/制御要求や、エンドユーザーまたはデバイスの検証のために公開される特定の API などです。

レート制限の一般的なユースケース

  • URLからの1秒あたりのリクエスト数を制限します。

  • リクエストがレート制限を超えた場合、特定のホストからのリクエストで受信された Cookie に基づいて接続をドロップします。

  • 同じホスト(特定のサブネットマスクを持つ)から着信し、同じ宛先 IP アドレスを持つ HTTP 要求の数を制限します。

Citrix Gatewayのレート制限を構成する

前提条件

設定済みの認証仮想サーバ。

注意点

  • 設定手順では、サンプルの制限識別子が設定されます。ストリームセレクタ、モードなどのサポートされているすべてのパラメータで同じように設定することができます。レート制限機能の詳細については、レート制限を参照してください。

  • このポリシーは、次のように VPN 仮想サーバーにバインドすることもできます。次のコマンドを使用してポリシーをバインドするには、設定済みの VPN 仮想サーバが必要です。

     bind vpn vserver  -policy denylogin –pri 1 –type aaa_request
    
  • AAA_REQUEST は、レスポンダーポリシー用に新しく導入されたバインドポイントです。このバインドポイントで設定されたポリシーは、指定された仮想サーバーのすべての着信要求に適用されます。ポリシーは、認証されていないトラフィック/制御トラフィックに対して最初に処理されます。

  • Citrix Gateway仮想サーバーにポリシーをバインドすると、認証されていない要求を含むCitrix Gatewayによって消費されるすべてのトラフィックに対して、AAA_REQUEST バインドポイントでのレート制限が有効になります。

  • ポリシーを認証仮想サーバレートにバインドすると、認証仮想サーバに到達する未認証/制御要求が制限されます。

コマンドラインインターフェイスを使用してレート制限を設定するには、コマンドプロンプトで次のコマンドを入力します。

add limitIdentifier <limitIdentifier name> -threshold <positive_integer> -timeslice <positive_integer> -mode <mode type>
Example: add limitIdentifier limit_one_login -threshold 10 -timeslice 4294967290 -mode REQUEST_RATE
add responderaction denylogin respondwith ‘“HTTP/1.1 200 OK\r\n\r\n” + “Request is denied due to unusual rate”’
add responder policy denylogin 'sys.check_limit("limit_one_login")' denylogin
bind authentication vserver <vserver name> -policy denylogin –pri 1 –type aaa_request
Example: bind authentication vserver authvserver -policy denylogin –pri 1 –type aaa_request

パラメータの説明

  • リミット識別子- レート制限識別子の名前。ASCII 文字またはアンダースコア (_) 文字で始まり、ASCII 英数字またはアンダースコア文字のみで構成する必要があります。予約語は使用しないでください。これは必須の引数です。最大長さ:31

  • threshold- リクエスト(モードが REQUEST_RATE として設定されている)がタイムスライスごとに追跡される場合に、指定されたタイムスライスに許可されるリクエストの最大数。接続(モードが CONNECTION に設定されている)が追跡されるとき、それは通過する接続の総数です。デフォルト値:1 最小値:1 最大値:4294967295

  • TimeSlice- 10 の倍数で指定される時間間隔(ミリ秒単位)。要求がしきい値を超えるかどうかをチェックするために追跡されます。この引数は、モードが REQUEST_RATE に設定されている場合にのみ必要です。デフォルト値:1000 最小値:10 最大値:4294967295

  • mode- 追跡するトラフィックのタイプを定義します。

    • REQUEST_RATE-リクエスト/タイムスライスを追跡します。
    • 接続-アクティブなトランザクションを追跡します。

Citrix ADC GUIを使用してレート制限を構成するには:

  1. AppExpert」>「レート制限」>「制限識別子」の順に選択し、「 追加 」をクリックして、CLIセクションで指定されている関連の詳細を指定します。

    制限識別子の作成」を参照してください。

  2. [AppExpert] > [レスポンダー] > [ポリシー]に移動します。[レスポンダーポリシー] ページで、[追加] をクリックします。

  3. [** レスポンダーポリシーの作成**] ページで、制限識別子を持つレスポンダーアクションを含むレスポンダーポリシーを作成します。

  4. レスポンダーのアクションを作成するには、[アクション] の横にある [追加] をクリックし、レスポンダーのアクションの名前を入力します。

  5. ドロップダウンメニューから「 応答 するタイプ」を選択し、「HTTP/1.1 200 OK\ r\ n\ r\ n” +「異常なレートのためリクエストが拒否されました」という式を指定し、「 作成」をクリックします。

    レスポンダーアクションの作成

  6. レスポンダーポリシーを作成するには、[レスポンダーポリシー の作成] ページで、レスポンダーポリシー の名前を入力し、次の式「sys.check_limit (「limit_one_login」)」を指定して、[作成] をクリックします。

    レスポンダーポリシーの作成

  7. 応答側ポリシーを認証仮想サーバーにバインドします。

    • a. [セキュリティ] > [AAA アプリケーショントラフィック] > [仮想サーバー] の順に選択します。
    • b. 仮想サーバーを選択します。
    • c. ポリシーを追加します。
    • d. サーバーにバインドするレスポンダーポリシーを選択し、優先順位を設定します。
    • e. [AAA-REQUEST] としてタイプを選択し、[続行] をクリックします。

    ポリシーをバインドする

注: VPN 仮想サーバの AAA_REQUEST バインドポイントでレート制限を有効にすることもできます。

Citrix Gatewayにレート制限を適用するための一般的なユースケースの構成

次に、一般的なユースケースを設定するコマンドの例を示します。

  • URLからの1秒あたりのリクエスト数を制限します。

     add stream selector ipStreamSelector http.req.url “client.ip.src”
    
     add ns limitIdentifier ipLimitIdentifier –threshold 4 –timeslice 1000 –mode request_rate –limitType smooth –selectorName ip StreamSelector
    
     add responder policy ipLimitResponderPolicy “http.req.url.contains(\”myasp.asp\”) && sys.check_limit(\”ipLimitIdentifier\”)” myWebSiteRedirectAction
    
     bind authentication virtual server authvserver -policy denylogin –pri 1 –type aaa_request
    
  • リクエストがレート制限を超えた場合は、www.yourcompany.com からのリクエストで受信したクッキーに基づいて接続をドロップします。

     add stream selector cacheStreamSelector “http.req.cookie.value(\”mycookie\”)” “client.ip.src.subnet(24)”
    
     add ns limitIdentifier myLimitIdentifier –Threshold 2 –timeSlice 3000 –selectorName reqCookieStreamSelector
    
     add responder action sendRedirectURL redirect `"http://www.mycompany.com"` + http.req.url' –bypassSafetyCheck Yes
    
     add responder policy rateLimitCookiePolicy
    
     “http.req.url.contains(\www.yourcompany.com) && sys.check_limit(\”myLimitIdentifier\”)” sendRedirectUrl
    
    
  • 同じホスト(サブネットマスクが 32)から着信し、同じ宛先 IP アドレスを持つ HTTP 要求の数を制限します。

    ``` Add stream selector ipv6_sel “CLIENT.IPv6.src.subnet(32)”CLIENT.IPv6.dst Q.URL

    Add ns limitIdentifier ipv6_id –imeSlice 20000 –selectorName ipv6_sel

    Add lb vserver ipv6_vip HTTP 3ffe:: 209 80 –persistenceType NONE –cltTime

    Add responder action redirect_page redirect “\”http://redirectpage.com/\”"

    Add responder policy ipv6_resp_pol “SYS.CHECK_LIMIT(\”ipv6_id\”)” redirect_page

    Bind responder global ipv6_resp_pol 5 END –type DEFAULT

Citrix Gatewayのレート制限