ADC

NetScaler Gatewayのレート制限

NetScaler Gatewayのレート制限機能を使用すると、NetScaler Gatewayアプライアンス上の特定のネットワークエンティティまたは仮想エンティティの最大負荷を定義できます。NetScaler Gatewayアプライアンスは認証されていないトラフィックをすべて消費するため、アプライアンスは頻繁にプロセス要求にさらされます。レート制限機能を使用すると、エンティティに関連するトラフィックのレートを監視し、トラフィックに基づいてリアルタイムで予防措置を講じるようにNetScaler Gatewayアプライアンスを構成できます。 NetScalerアプライアンスでのレート制限の仕組みについて詳しくは、「レート制限」を参照してください。

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

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

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

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

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

NetScaler Gateway のレート制限の設定

前提条件

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

注意事項

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

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

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

  • ポリシーをNetScaler Gateway仮想サーバーにバインドすると、認証されていないリクエストを含め、NetScaler Gatewayが消費するすべてのトラフィックのAAA_REQUESTバインドポイントでのレート制限が可能になります。

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

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

add limitIdentifier <limitIdentifier name> -threshold <positive_integer> -timeslice <positive_integer> -mode <mode type>
<!--NeedCopy-->

例:

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

例:

bind authentication vserver authvserver -policy denylogin –pri 1 –type aaa_request
<!--NeedCopy-->

パラメータの説明

  • limitIdentifier: レート制限識別子の名前。ASCII 文字またはアンダースコア (_) 文字で始まり、ASCII 英数字またはアンダースコア文字のみで構成する必要があります。予約語は使用できません。これは必須の議論です。最大長:31

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

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

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

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

NetScaler GUIを使用してレート制限を設定するには:

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

    リミット識別子の作成

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

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

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

  5. [ レスポンダーアクションの作成 ] ページで、レスポンダーアクションの名前を入力します。

  6. ドロップダウンメニューからタイプとして [ 返信する ] を選択します。

  7. エクスプレッションエディターで、レスポンスメッセージを設定します。例:"HTTP/1.1 200 OK\r\n\r\n"+ "Request is denied due to unusual rate"

  8. [Create] をクリックします。

  9. レスポンダーポリシーを作成するには、[ レスポンダーポリシーの作成 ] ページで、レスポンダーポリシーの名前を入力します。

  10. 式エディターで、レスポンダーポリシーの条件を設定します。例:'sys.check_limit("limit_one_login")'

  11. [Create] をクリックします。

  12. レスポンダーポリシーを認証仮想サーバーにバインドします。

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

注:

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

NetScaler 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
     <!--NeedCopy-->
    
  • リクエストがレート制限を超えた場合、www.yourcompany.comからのリクエストで受信した Cookie に基づいて接続をドロップします。

     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'
    
     add responder policy rateLimitCookiePolicy
    
     “http.req.url.contains(\www.yourcompany.com) && sys.check_limit(\”myLimitIdentifier\”)” sendRedirectUrl
    
     <!--NeedCopy-->
    
  • 同じホスト(サブネットマスクが 32)から着信し、同じ宛先 IP アドレスを持つ HTTP 要求の数を制限します。

     add stream selector ipv6_sel “CLIENT.IPv6.src.subnet(32)”CLIENT.IPv6.dst
    
     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
     <!--NeedCopy-->
    

認証、承認、監査エンドポイントのバインドレスポンダーポリシー

パケットエンジンが要求を処理できるようにするには、AAA_REQUESTバインドポイントを使用してレスポンダーポリシーを認証仮想サーバーまたは VPN 仮想サーバーにバインドします。

  • VPN 仮想サーバーの例: bind vpn vserver vpnVs -policy resp_pol -priority 6 -type AAA_REQUEST

  • 認証仮想サーバーの例: bind authentication vserver av_vs -policy resp_pol -priority 6 -type AAA_REQUEST

Apache HTTP サーバーが要求を処理できるようにするには、バインドポイントREQUESTを使用してレスポンダーポリシーを認証仮想サーバーまたは VPN 仮想サーバーにバインドします。

例:

  • VPN 仮想サーバーの例: bind vpn vserver vpnVs -policy resp_pol -priority 6 -type REQUEST

  • 認証仮想サーバーの例: bind authentication vserver av_vs -policy resp_pol -priority 6 -type REQUEST

レスポンダーポリシーのバインドについて詳しくは、「 レスポンダーポリシーのバインド」を参照してください。

NetScaler Gatewayのレート制限