AWS WAF を使用して DDoS 攻撃を軽減する方法を教えてください。
AWS WAF 保護パックを使用して、アプリケーションレイヤーでの分散型サービス拒否 (DDoS) 攻撃を軽減したいと考えています。
簡単な説明
アプリケーションレイヤーの DDoS 攻撃に対する主な緩和策として AWS WAF を使用するには、次のアクションを実行してください。
- レートベースのルールを使用します。
- AWS WAF ログをクエリして、不正なアクティビティに関する特定の情報を収集します。
- 地理的一致ルールを作成し、ビジネスにおいて想定されない国からの不正リクエストをブロックします。
- IP セットの一致ルールを作成し、不正なリクエストをブロックします。
- 文字列一致ルールを作成し、不正なリクエストをブロックします。
- 正規表現一致ルールを作成し、不正なリクエストをブロックします。
- Bot Control を有効にして、特定のターゲットに対応する保護レベルを使用します。
- Amazon IP 評価リストマネージドルールグループを使用します。
インフラストラクチャレイヤーの攻撃に対しては、Amazon CloudFront や Elastic Load Balancing (ELB) などの AWS サービスを使用して DDoS を自動的に防ぎます。詳細については、「DDoS 耐性に関する AWS のベストプラクティス」を参照してください。AWS Shield Advanced 自動アプリケーションレイヤーを使用して、レイヤー 3 ~ 7 などの高度な攻撃を軽減することもできます。詳細については、「Shield Advanced を使用してアプリケーションレイヤーでの DDoS 対策を自動化する」を参照してください。
解決策
レートベースのルールを使用する
包括的レートベースのルールを作成する
包括的なレートベースのルールを使用して、IP アドレスがウェブアプリケーションに対して実行できるリクエスト数のしきい値を設定します。
次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [カスタムルール] を選択し、[次へ] を選択します。
- [レートベースのルール] を選択し、[次へ] を選択します。
- ルールを設定するには、次の値を指定します。
[アクション] で [ブロック] を選択します。
[名前] に、ルール名を入力します。
[レート制限] には、10 から 2,000,000,000 までの数値を入力します。
注: 設定するレート制限を判断できない場合は、ルールアクションを使用してリクエストパターンをカウント、監視してください。次に、ベースラインに基づいてレート制限を設定します。
[評価期間] に 1 分、2 分、5 分、または 10 分を入力します。
[ルール設定ブロック] のドロップダウン内:
[レート制限に使用する IP アドレス] で [ソース IP アドレス] または [ヘッダー内の IP アドレス] を選択します。
注: リクエストレートの変更を送信した後、AWS WAF がルールアクションを適用または削除する際に遅延が発生する可能性があります。
[検査範囲] で [すべてのリクエストを考慮する] を選択します。 - [ルールを作成] を選択します。
カスタムキー (URI パス) でのレートベースのルールを作成する
次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [カスタムルール] を選択し、[次へ] を選択します。
- [レートベースのルール] を選択し、[次へ] を選択します。
- ルールを設定するには、次の値を指定します。
[アクション] で [ブロック] を選択します。
[名前] に、ルール名を入力します。
[レート制限] には、10 から 2,000,000,000 までの数値を入力します。
注: 設定するレート制限を判断できない場合は、ルールアクションを使用してリクエストパターンをカウント、監視してください。次に、ベースラインに基づいてレート制限を設定します。
[評価期間] に 1 分、2 分、5 分、または 10 分を入力します。
[ルール設定ブロック] のドロップダウン内:
[ルール設定] で [カスタムキー] を選択します。 - [リクエスト集計キー] で [URI パス] を選択します。
- [テキスト変換] で [なし] を選択します。
注: リクエストレートの変更を送信した後、AWS WAF がルールアクションを適用または削除する際に遅延が発生する可能性があります。
[検査範囲] で [すべてのリクエストを考慮する] を選択します。 - [ルールを作成] を選択します。
詳細については、「最も重要な 3 つの AWS WAF レートベースのルール」を参照してください。
AWS WAF ログをクエリして、不正なアクティビティに関する特定の情報を収集する
AWS WAF ログを有効にする次に、AWS WAF ログをクエリして DDoS シナリオを調査します。
次の AWS サービスを使用すると AWS WAF ログをクエリできます。
Amazon Athena ログパーサーまたは AWS Lambda ログパーサーを使用する
AWS WAF には、レートベースのルールで使用できる最低レートの制限があります。ボリューム不足が原因でレートベースのルールを使用できない場合や、カスタマイズ可能なブロック期間が必要な場合は、Athena または Lambda のログパーサーを使用してください。どちらのサービスも Security Automations for AWS WAF で使用できます。
地理的一致ルールを作成し、ビジネスにおいて想定されない国からの不正リクエストをブロックする
次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [地域ベースのルール] を選択します。
- ルールを設定するには、次の値を指定します。
[ルールアクション] で [ブロック] を選択します。
[名前] に、ルール名を入力します。
ステートメント内で、ブロックする国コードを選択します。 - [ルールを作成] を選択します。
詳細については、「地理的一致ルールのステートメント」を参照してください。
特定の IP アドレスからの不正リクエストをブロックする IP セットの一致ルールを作成する
次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [IP ベースのルール] を選択し、[次へ] を選択します。
- ルールを設定するには、次の値を指定します。
[ルールアクション] で [ブロック] を選択します。
[名前] に、ルール名を入力します。
ステートメントで [既存の IP セットを使用] を有効にして、IP セットを選択します。 - [ルールを作成] を選択します。
詳細については、「IP セット一致ルールのステートメント」を参照してください。
文字列一致ルールステートメントを作成して不正なリクエストをブロックする
次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [カスタムルール] を選択し、[次へ] を選択します。
- 再度 [カスタムルール] を選択し、[次へ] を選択します。
- [ルールアクション] で [ブロック] を選択します。
- ルールを設定するには、次の値を指定します。
[名前] に、ルール名を入力します。
[リクエストが以下の場合] で、[ステートメントに一致する] を選択します。
[検査] で [本文] を選択します。
[ヘッダーフィールド名] に、ブロックするボットの名前を AWS WAF ログに表示されているとおりに入力します。
[一致タイプ] で [完全一致文字列] を選択します。
[一致する文字列] に、ブロックするボットの値を AWS WAF ログに表示されているとおりに入力します。 - [ルールを作成] を選択します。
詳細については、「文字列一致ルールのステートメント」を参照してください。
正規表現一致ルールステートメントを作成して不正なリクエストをブロックする
次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [カスタムルール] を選択し、[次へ] を選択します。
- 再度 [カスタムルール] を選択し、[次へ] を選択します。
- ルールを設定するには、次の値を指定します。
[ルールアクション] で [ブロック] を選択します。
[名前] にルール名を入力します。
[リクエストが以下の場合] で [ステートメントに一致する] を選択します。
[検査] で [URI パス] を選択します。
[一致タイプ] で [正規表現と一致] を選択します。
[一致する文字列] に、ブロックする正規表現を入力します。
[ルールアクション] で [ブロック] を選択します。 - [ルールを作成] を選択します。
詳細については、「正規表現一致ルールのステートメント」を参照してください。
Bot Control を有効にして、特定のターゲットに対応する保護レベルを使用する
AWS WAF Bot Control のターゲット対応保護レベルでは、レート制限と CAPTCHA および Challenge アクションの組み合わせを使用してボットのアクティビティを軽減します。ターゲット対応 Bot Control の価格については、「AWS WAF の料金」ページの「ケース F」を参照してください。
Bot Control とターゲット対応保護レベルを有効にするには、次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [AWS マネージドルールグループ] を選択し、[次へ] を選択します。
- [支払い済み] で [ボットコントロールルールグループ] を選択します。
- [検査レベル] で [対象] を選択します。
- [ルールを作成] を選択します。
Amazon IP 評価リストマネージドルールグループを使用する
AWSManagedIPReputationList マネージドルールグループは、Amazon 内部の脅威インテリジェンスを使用して DDoS アクティビティに積極的に関与している IP アドレスを特定します。
Amazon IP 評価リストマネージドルールグループを有効にするには、次の手順を実行します。
- AWS WAF コンソールを開きます。
- [リージョン] は、保護パックを作成した AWS リージョンを選択します。
- ナビゲーションペインで [リソースと保護パック] を選択します。
- 保護パックの右側で、リージョン名の横にあるアイコンを選択して保護パックを選択します。
- 選択した保護パックで [ルール] を選択します。
- [ルール] の横にある [表示と編集] を選択すると、保護パックに関連付けられたルールを表示、編集できます。
- 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
- [AWS マネージドルールグループ] を選択し、[次へ] を選択します。
- [無料ルール] で [AmazonIpReputationList] を選択します。
- [ルールを作成] を選択します。
