高度なレート制限ルールの設定
- English
- 日本語
高度なレート制限ルールは、同じクライアントからのすべてまたは一部のリクエストがブロックされるかログに記録される前に、個々のクライアントが設定条件を満たすリクエストを送信できる頻度に上限を設けるしきい値設定の一種です。
制約と考慮事項
高度なレート制限ルールを設定する場合、以下の点に留意してください。
高度なレート制限の機能は、Premier プラットフォームと特定のパッケージ製品/サービスにのみ含まれています。Professional または Essential プラットフォームには含まれていません。
高度なレート制限ルールは、パッケージ内容の制限の目的においては、カスタムルールとみなされます。
各サイト (ワークスペースとも呼ばれる) には、最大15件のレート制限ルールを設定できます。
特定のシグナルは、単一のレート制限ルールのしきい値シグナルとしてのみ使用できます。単一のシグナルを複数のレート制限ルールのしきい値シグナルとして使用することはできません。
エッジ WAF デプロイを採用している場合、以下の考慮事項にも留意してください。
リクエストの受信が早ければ早いほど、リクエストをブロックできるのも早くなります。
しきい値の低いルールは、リクエストの受信レートに応じて、しきい値が高いルールよりも早くリクエストをブロックまたはログに記録します。
一致を宣言するには、60秒の時間枠内で最大2倍のリクエスト数が必要になる場合があります。
複数の物理的な場所でルールをテストする場合、Fastly のネットワークの分散性と POP ごとのキャッシュノードの数の違いにより、結果が異なる場合があります。
最も一貫した結果を得るには、100 RPS 以上のレートでテストしてください。
高度なレート制限ルールの仕組み
Web アプリケーションがレート制限ルールの条件を満たすリクエストを受信すると、WAF は選択したしきい値シグナルをリクエストにタグ付けします。これらのシグナルは、ルールのしきい値に対してカウントされます。単一のクライアントからのしきい値シグナルの数がルールの制限を超えると、該当するクライアントはレート制限されます。
クライアントがどのようにレート制限されるかは、そのレート制限ルール内の Match type フィールドと Action type フィールドによって異なります。Match type フィールドは、WAF がしきい値を超えた後にどのクライアントからのリクエストに対応するかを定義します。マッチタイプのオプションには、次のものがあります。
ルール条件 : ルールの条件に一致するクライアントからのリクエストをレート制限します。このオプションのユースケースをご覧ください。
その他のシグナル: アクションシグナルがタグ付けされたクライアントからのリクエストをレート制限します。アクションシグナルがシステムシグナルでない場合は、選択したシグナルでリクエストにタグを付けるリクエストルールを作成する必要があります。
すべてのリクエスト : クライアントからのすべてのリクエストをレート制限します。
Action type フィールドは、マッチタイプ条件を満たすリクエストに対して実行するアクションを定義します (例 : ブロックまたはログ記録)。
レート制限されたリクエストには、Rate Limit システムシグナルのタグが付けられます。
しきい値のカウント
Next-Gen WAF は、ローカルおよびグローバルのカウントメカニズムを使用して、クライアントごとのしきい値シグナルの数を追跡し、クライアントが高度なレート制限ルールのしきい値を超えたかどうかを判断します。特定のデプロイタイプでの動作についての詳細は、以下をご覧ください。
高度なレート制限ルールの作成
高度なレート制限ルールを作成するには、次の手順を実行します。
- Next-Gen WAF control panel
- Fastly control panel
まず、ルールの追加フォームに移動し、ルールタイプを選択します。
- Next-Gen WAF コンソールにログインします。
- Sites メニューから、複数のサイトがある場合はサイトを選択します。
Rules メニューから、Site Rules を選択します。
Add site rule をクリックします。
.Type セクションで、Rate limit を選択します。
次に、しきい値にカウントするリクエストを識別するためにルールが適用するロジックを定義します。Conditions セクションで、次の手順を実行します。
以下のフィールドに入力して条件を作成します。
Field メニューから、条件の基準となるリクエストフィールドを選択します。
Operator メニューから演算子を選択して、選択したフィールドと値の関係を指定します。
Value フィールドに、指定したフィールドの値を入力します。
(オプション) 別の条件を追加するには、Add condition をクリックします。条件のグループを作成するには、Add group をクリックします。
しきい値としてカウントするために、リクエストが1つの条件を満たす必要があるか、すべての条件を満たす必要があるかを指定します。
条件メニューで Any を選択すると、リクエストは作成した条件の1つのみを満たす必要があります。
条件メニューで All を選択したままにすると、リクエストは作成したすべての条件を満たす必要があります。
この設定の後に、レート制限ルールが個々のクライアントをどのように識別するかを指定します。Client identifier セクションで、以下を実行します。
Client key メニューから、レート制限ルールのクライアント識別方法をを選択します。選択した Client key オプションに応じて、追加のクライアント識別子フィールドが表示される場合があります。
(オプション) Client identifier セクションに表示された追加フィールドに入力します。
次に、ルールの設定条件を満たすリクエストに適用するシグナルを指定し、しきい値を定義します。Actions セクションで、Tracking サブセクションに以下の内容を入力します。
Threshold signal メニューから、ルール条件に一致するリクエストに適用するシグナルを選択します。しきい値シグナルがタグ付けされたリクエストは集計され、ルールのしきい値としてカウントされます。
Threshold フィールドに、クライアントがレート制限される前に検出する必要のあるリクエスト数を入力します。
Interval メニューから、しきい値を超えるまでにリクエストを検出する必要のある期間を選択します。
次に、しきい値を超えたクライアントのレート制限方法を定義します。Actions セクションで、Rate limiting サブセクションに以下の内容を入力します。
Action type メニューから、しきい値を超え、リクエストがマッチタイプの条件を満たしたときに実行するアクションを選択します。Block を選択すると、Change response リンクが表示されます。
(オプション) Change response をクリックして、ルールがリクエストをブロックしたときに返すカスタムレスポンスコードを指定し、以下の要領で関連フィールドに入力します。
Response code (オプション) フィールドに、カスタムレスポンスコードを入力します。サポートされているカスタムレスポンスコードは301、302、400~599です。
Response code (オプション) フィールドに
301または302を入力した場合は、Redirect URL (オプション) フィールドにリダイレクト先の絶対 URL または相対 URL を入力します。リダイレクト・カスタム・レスポンス・コードの使用をご覧ください。
Match type メニューから、しきい値を超えた場合にレート制限する対象を決定する条件を選択します。オプションは以下のとおりです。
Duration メニューから、クライアントにレート制限を適用する期間を選択します。
最後に、ルールの説明を追加してルールを保存します。
Details セクションに以下のように入力します。
Status スイッチは有効のままにしておきます。
Description フィールドに、ルールの説明を入力します。
Create site rule をクリックします。高度なレート制限ルールが作成され、サイトルールページが表示されます。
レート制限ルールの例
以下の例では、一般的なユースケースでレート制限ルールを設定する方法を示しています。例で使用されている値 (パスやレスポンスコード) は、特定の Web アプリケーションで使用される値とは異なる場合があることにご注意ください。
レート制限コメントの送信
この例は、コメントの送信機能をレート制限するルールを示しています。ルールは以下のようになります。
/comments.phpファイルへの POST リクエストを探す。User-Agentリクエストヘッダーを使用してクライアント (クライアントキー) を識別する。指定されたルールの条件を満たすリクエストに、
Comment Submissionカスタムシグナル (しきい値シグナル) を適用する。次のしきい値を定義する : 1分間以内 (間隔) に一意のクライアントから検出された、
Comment Submissionシグナルがタグ付けされた10件のリクエスト (しきい値)。Comment Submissionシグナルがタグ付けされ、かつ次の5分間以内 (Duration) にしきい値を超えたクライアントから発信されたリクエストをブロック (Action type) します。
- Next-Gen WAF control panel
- Fastly control panel
.
クレジットカード認証試行のレート制限
この例は、ログイン試行の失敗が多すぎる場合に、クレジットカードの検証試行をレート制限するルールを示しています。ルールは以下のようになります。
Credit Card Failureシステムシグナルがタグ付けされたリクエストを探します。指定されたルールの条件を満たすリクエストに、
Credit Card Failure Countカスタムシグナル (しきい値シグナル) を適用する。しきい値を次のように定義します: 10分間以内 (Interval) に単一の IP アドレス (Client key) からの
Credit Card Failure Countシグナルがタグ付けされた5件のリクエスト (Threshold)。Credit Card Attemptシグナル (Action signal) がタグ付けされ、かつ次の5分間以内 (Duration) にしきい値を超えた IP アドレスから発信されたリクエストをブロック (Action type) します。
重要 : この例では、
Credit Card AttemptとCredit Card Failureのシステムシグナルが有効であることを前提としています。
- Next-Gen WAF control panel
- Fastly control panel
.
レート制限列挙試行
攻撃者は多くの場合、ファイル、ディレクトリ、認証情報などのブルートフォース手法を利用して Web アプリケーションを列挙しようと試みます。これらの試行により、大量の 4XX および 5XX エラーが生成されるため、攻撃者の列挙試行が成功する前に攻撃者を阻止するには、以下のような広範なレート制限ルールを作成することになります。
4XXおよび5XXのレスポンスコードを探します。
IP アドレスを使用してクライアント (クライアントキー) を識別する。
指定されたルールの条件を満たすリクエストに、
Suspected attackerカスタムシグナル (しきい値シグナル) を適用する。次のしきい値を定義する : 1分間以内 (間隔) に単一の IP アドレス (クライアントキー) から検出された、
Suspected attackerシグナルがタグ付けされた100件のリクエスト (しきい値)。次の10分間 (期間) にクライアントからのすべてのしきい値を超えるリクエストをブロック (アクションタイプ)。
- Next-Gen WAF control panel
- Fastly control panel
.
用語集
| 用語 | 定義 |
| アクションタイプ | しきい値を超え、リクエストがマッチタイプの条件を満たしている場合に、WAF がリクエストを処理する方法。 |
| クライアント | リクエストの発信元。 |
| クライアント識別子 | 個々のクライアントを識別するのに使用されるリクエストのパーツ。 |
| 期間 | クライアントがレート制限される期間。 |
| インターバル | しきい値を超えるまでにリクエストを検出する期間。 |
| マッチタイプ | しきい値を超えた後にブロックまたはログに記録するクライアントからのリクエスト。 |
| しきい値 | クライアントがレート制限される前に検出するリクエストの数。 |
| しきい値シグナル | レート制限ルールの条件を満たしたときにリクエストにタグ付けされるシグナル。しきい値シグナルは集計され、そのルールのしきい値としてカウントされます。単一のクライアントのしきい値シグナルの数がルールのしきい値を超えると、そのクライアントはレート制限されます。 |