AWS WAF を使用して、HTTP リクエストに特定のユーザーエージェント値が含まれていないか、特定のユーザーエージェントヘッダー値が含まれる場合に制限をかけたいです。
簡単な説明
デフォルトでは、AWS WAF フィルターは HTTP リクエストパラメータの有無を確認しません。AWS WAF を使用して、ユーザーエージェントヘッダーに応じて HTTP リクエストをブロックするには、次のいずれかの手順を実行します。
- AWS マネージドルールを使用して、ユーザーエージェントヘッダーを含まないリクエストをブロックします。
- カスタムルールを使用して、ユーザーエージェントヘッダーを含まないリクエストをブロックします。
- カスタムルールを使用して、特定のユーザーエージェントヘッダーを含むリクエストをブロックします。
解決策
AWS マネージドルールを使用して、ユーザーエージェントヘッダーを含まないリクエストをブロックする
AWS WAF で AWS マネージドルールを使用する場合、独自のルールを作成する必要はありません。
注: AWS マネージドルールは、バージョンが変更されたり、失効したりする可能性があります。詳細については、「AWS WAF でバージョン管理されたマネージドルールグループを使用する」を参照してください。
NoUserAgent_HEADER ルールは、HTTP User-Agent ヘッダーのないリクエストを検査します。SignalNonBrowserUserAgent ルール は、ウェブブラウザ経由ではないと思われるユーザーエージェント文字列がないかを検査します (リクエストにユーザーエージェントが欠けている場合も含まれます)。
ウェブ ACL に AWS マネージドルールのルールグループを追加する
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインで [AWS WAF] を選択します。
- [リソースと保護パック] を選択します。
- 目的の保護パックを探し、[ルール] の横にある [表示と編集] を選択します。
- 右側のペインで [ルールを追加] を選択します。
[AWS マネージドルールグループ] を選択し、[次へ] を選択します。
- 追加するルールグループを選択します。
- [ウェブ ACL に追加] を選択します。
注: [コアルールセット] で [ウェブ ACL に追加] を選択します。コアルールセットには NoUserAgent_HEADER ルールが含まれています。
- [ルールを作成] を選択します。
ウェブ ACL の既存の AWS Managed Rules ルールグループを編集する
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインで [AWS WAF] を選択します。
- [リソースと保護パック] を選択します。
- 目的の保護パックを探し、[ルール] の横にある [表示と編集] を選択します。
- 右側のペインで [AWS マネージドルールグループ] を選択します。
- [ルールオーバーライド] セクション内の設定を編集します。
注: 設定の編集に関する詳細については、「マネージドルールグループを使用する」を参照してください。
- [ルールを保存] を選択します。
AWS Managed Rules のルールグループで誤検知が発生した場合は、「AWS WAF の AWS マネージドルール」を参照してください。
カスタムルールを使用してユーザーエージェントヘッダーを含まないリクエストをブロックする
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインで [AWS WAF] を選択します。
- [リソースと保護パック] を選択します。
- 目的の保護パックを探し、[ルール] の横にある [表示と編集] を選択します。
- 右側のペインで [ルールを追加] を選択します。
[カスタムルール] を選択し、[次へ] をクリックします。
[カスタムルール] を再度選択し、[次へ] をクリックします。
- ルールの [アクション] を BLOCK に設定します。
- [ルール名] を入力します。
- [リクエストが次の場合] でドロップダウンを展開し、[ステートメントに一致しない (NOT)] を選択します。
- [検査] で [単一ヘッダー] を選択します。
- [NOT ステートメント] で次の手順を実行します。
[ヘッダーフィールド名] にフィールド名を入力します (例: User Agent)。
[一致タイプ] ** で[次を超えるサイズ]** を選択します。
[サイズ (バイト単位)] に 0 を入力します。
(オプション) [テキスト変換] を選択するか、[なし] を選択します。
- [ルール****を作成] を選択します。
- (オプション) ルールの優先度を設定する場合は、右側のペインで [ルール順序の編集] を選択し、優先度を更新します。詳細については、「ルール優先度を設定する」を参照してください。
注: ルールは表示された順序で適用されます。
- [ルール順序を保存] を選択します。
カスタムルールを使用して、特定のユーザーエージェントヘッダーを含むリクエストをブロックします。
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインで [AWS WAF] を選択します。
- [リソースと保護パック] を選択します。
- 目的の保護パックを探し、[ルール] の横にある [表示と編集] を選択します。
- 右側のペインで [ルールを追加] を選択します。
[カスタムルール] を選択し、[次へ] をクリックします。
[カスタムルール] を再度選択し、[次へ] をクリックします。
- ルールの [アクション] を BLOCK に設定します。
- [ルール名] を入力します。
- [リクエストが次の場合] でドロップダウンを展開し、[ステートメントに一致] を選択します。
- [検査] で [単一ヘッダー] を選択します。
- [ステートメント] で、次の設定を行います。
[ヘッダーフィールド名] にフィールド名を入力します (例: User Agent)。
[マッチタイプ] で [文字列を含む] を選択します。
[一致する文字列] にブロックするユーザーエージェントを入力します。
(オプション) [テキスト変換] を選択するか、[なし] を選択します。
- [ルール****を作成] を選択します。
- (オプション) ルールの優先度を設定する場合は、右側のペインで [ルール順序の編集] を選択し、優先度を更新します。詳細については、「ルール優先度を設定する」を参照してください。
注: ルールは表示された順序で適用されます。
- [ルール順序を保存] を選択します。