はじめに
Fastly NGWAF の上位パッケージには Advanced Rate Limiting(ARL) という機能が含まれています。
これは NGWAF のエージェントが指定した条件のリクエストを IP アドレスなどをベースにカウントし、設定した閾値を超える場合にアクセスをブロックするなどの機能を提供するものです。
もうひとつ別の Rate Limiting の機能として、Fastly は CDN レイヤーに Varnish Configuration Language(VCL) で実装する Edge Rate Limiting(ERL) という機能も提供しています。
この記事ではこの二つの機能の特性と、それぞれに適した用途について説明します。
ARL と ERL の比較
Advanced Rate Limiting(ARL)
ログインやカートへのアイテムの追加など特定の動作の繰り返しなど比較的小規模なアクセスに対するレートリミットです。
分かりやすいユースケースで言うとログイン時に3回パスワードを間違えるとしばらくアクセスが出来ないようにしたり、クレジットカードの登録を繰り返す IP からのアクセスを自動でブロックするといったユーザーの行動やボットに対するレートリミットとして利用することが出来ます。
NGWAF の実装はオリジン側でも Fastly の CDN 上(Edge Deploy)でも構いません。(ただしレートリミットが発動するタイミングに若干の動作の違いがあります)
ARL を利用するには本機能を含むパッケージの Fastly の NGWAF の契約が必要です。
ARL 動作イメージ
ARL の挙動
Rate Limit ルールに指定した条件に合致するリクエストを受信すると、threshold signal
に指定した signal がリクエストに付与されます。この条件を満たすリクエストがカウントされ閾値を超えると指定した期間、ブロックなどの処理を行います。
設定する場所: NGWAF(Edge Deploy, オリジン環境へのエージェント)
カウント対象: IP, リクエストヘッダ、その組み合わせ
カウント場所: Agent、その後 CloudEngine を通じて数値を合算
検知期間: 1分 or 10分
閾値: 1 - 10,000
Actionの時間: 5分から24時間
Action の対象: カウントと同じ条件、特定のシグナル、全てのリクエスト
Action の種類: Block, Log
典型的な利用ケース: アカウントテイクオーバー(ATO)、クレデンシャルスタッフィング、スニーカーボット、コンテンツスクレイピング、クレジットマスターアタックなど
設定画面
制約事項
・Site ごとに作成可能な Rate Limiting Rule の数には上限があります。
・閾値を超えてから実際に Action が開始されるまでは NGWAF の実装方法によって若干の時差があります。(Core型は即時、Edge Deploy は 30秒-1分程度)
機能の詳細は以下のドキュメントをご参照下さい。
https://docs.fastly.com/en/ngwaf/working-with-advanced-rate-limiting-rules
Edge Rate Limiting(ERL)
ERL は DDoS など中規模、大規模な攻撃に対する対策として主に利用されます。CDN レイヤーで実装されるため NGWAF の利用の有無に関わらず、Fastly CDN を利用していることが利用条件となります。
ERL 自体は VCL で CDN 上に実装しますが、ERL を利用するためには ERL を含むセキュリティオプションの契約が必要です。
ERL 動作イメージ
ERL の挙動
指定した条件を満たすリクエストが閾値(RPSで設定)を超えると指定したアクションをとる。ERL は Web UI でも設定可能ですが VCL を利用してより柔軟な設定を行うことも可能です。
設定する場所: VCL (Fastly CDN)
カウント対象: IP , User-Agent, IP and User-Agent
カウント場所: POP(配信拠点) 単位
検知期間: 1秒、10秒、60秒
閾値: 10 - 10,000 RPS
Actionの時間: 1-60分
Actionの種類: Block, Log
典型的な利用ケース: DDoS攻撃対策、中規模以上の不正アクセスに対する対策
※ 上記は ウェブ UI を利用して設定した場合の内容です。VCL を利用することでよりカスタマイズした挙動を設定することも可能です。
制約事項
・数値は配信拠点(POP)ごとにカウントされ別拠点には共有されません。
・累積したカウント数は、1秒、10秒、または60秒のうち、設定した時間枠に基づいて計算された推定レートです。
機能の詳細は以下のドキュメントをご参照下さい。
https://docs.fastly.com/ja/guides/working-with-rate-limiting-policies
まとめ
この記事では Fastly が提供する二つの Rate Limiting 機能について説明しました。用途に応じて使い分けることでサービスにあった最適なセキュリティを適用しましょう。
また、Fastly では Rate Limiting の機能以外にもセキュリティに利用可能な様々な機能を提供しています。Webサイトやアプリケーションのセキュリティにお困りの際はぜひご相談下さい。