特定の User-Agent を含まない HTTP リクエストや、リクエストに特定の User-Agent ヘッダー値を含まない HTTP リクエストを制限したいと考えています。
簡単な説明
デフォルトでは、AWS WAF フィルタは HTTP リクエストパラメータが存在するかどうかを確認しません。HTTP リクエストパラメータが存在するかどうかを確認するには、次の操作を行います:
AWS マネージドルールを使用して、User-Agent ヘッダーを含まないリクエストをブロックします。
または、
カスタムルールを使用して、User-Agent ヘッダーを含まないリクエストをブロックするか、リクエストに特定の User-Agent が含まれている場合はトラフィックをブロックします。
解決策
AWS マネージドルールを使用して、ユーザーエージェントヘッダーを含まないリクエストをブロックする
AWS WAF 用 AWS マネージドルールを使用すると、独自のルールを作成しなくても、ユーザーエージェントヘッダーが含まれない HTTP リクエストをブロックできます。
注: マネージドルールについては、バージョンが変更されたり、有効期限が切れたりする場合があります。詳細については、「マネージドルールグループのバージョン処理に関するベストプラクティス」を参照してください。
次のルールは、HTTP User-Agent ヘッダーがないリクエストと、ウェブブラウザからのものではないと考えられる User-Agent 文字列を検査します。
NoUserAgent_HEADER
このルールは、コアルールセット (CRS) マネージドルールグループからのものです。このルールは、HTTP User-Agent ヘッダーがないリクエストを検査します。
SignalNonBrowserUserAgent
このルールは、AWS WAF Bot Control ルールグループからのものです。このルールは、User-Agent を持たないリクエストを含む、ウェブブラウザからのものではないと考えられる User-Agent 文字列を検査します。
ウェブ ACL に AWS マネージドルールグループを追加するには
-
AWS WAF コンソールを開きます。
-
ナビゲーションペインの [AWS WAF] で、[ウェブ ACL] を選択します。
-
[リージョン] で、ウェブ ACL を作成した AWS リージョンを選択します。
**注:**ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[グローバル] を選択してください。
-
ウェブ ACL を選択します。
-
[ルール] を選択し、[ルールを追加] を選択します。ドロップダウンから [マネージドルールグループの追加] を選択します。
-
[AWS マネージドルールグループ] セクションを展開します。
-
ルールグループを見つけて、[ウェブ ACL に追加] をオンにします。
例えば、NoUserAgent_HEADER ルールを含む [コアルールセット] の [ウェブ ACL に追加] をオンにすることができます。
-
(オプション) ルールグループの設定を表示および変更するには、[編集] を選択します。
-
[ルールを追加] を選択します。
-
[保存] を選択します。
ウェブ ACL の既存の AWS マネージドルールグループを編集するには
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] で、[ウェブ ACL] を選択します。
- [リージョン] で、ウェブ ACL を作成した AWS リージョンを選択します。
**注:**ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[グローバル] を選択してください。
- ウェブ ACL を選択します。
- [ルール] を選択し、[編集] を選択して設定を表示および変更します。
**注:**設定の編集の詳細については、「マネージドルールグループの使用」を参照してください。
- 編集が終了したら、[保存] を選択します。
AWS マネージドルールのルールグループで誤検知が発生した場合は、「AWS WAF の AWS マネージドルール」を参照してください。
カスタムルールを使用して、User-Agent ヘッダーを含まないリクエストをブロックする
カスタムルールを使用して User-Agent ヘッダーを含まないリクエストをブロックするには、次を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] で、[ウェブ ACL] を選択します。
- [リージョン] で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[グローバル] を選択してください。
- ウェブ ACL を選択します。
- [ルール] を選択し、[ルールを追加]、[独自のルールとルールグループのを追加] の順に選択します。
- **[ルールタイプ] **で [ルールビルダー] を選択します。
- [名前] に、このルールを識別するための名前を入力します。
- [タイプ] で [正規ルール] を選択します。
- [リクエストの場合] ** で、[ステートメントと一致しない (NOT)]** を選択します。
- [ステートメント] の [検査] で、[単一ヘッダー] を選択します。
[ヘッダーフィールド名] に、フィールドの名前を入力します。例: ユーザーエージェント。
[一致タイプ] ** で[次を超えるサイズ]** を選択します。
[サイズ (バイト単位)] ** に 0 (ゼロ) と入力します。
(オプション) [ テキスト変換] を選択するか、[なし]** を選択します。
- [アクション] で [ブロック] を選択します。
- [ルールを追加] を選択します。
- (オプション) [ルールの優先度を設定] で、ルールを選択して優先度を変更します。ルールは表示された順に処理されます。詳細については、「ウェブ ACL でのルールおよびルールグループの処理順序」を参照してください。
- [保存] を選択します。
カスタムルールを使用して、リクエストに特定の User-Agent が含まれている場合はトラフィックをブロックする
カスタムルールを使用して、リクエストに特定の User-Agent が含まれている場合にトラフィックをブロックするには、次を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] で、[ウェブ ACL] を選択します。
- [リージョン] で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[グローバル] を選択してください。
- ウェブ ACL を選択します。
- [ルール] を選択し、[ルールを追加]、[独自のルールとルールグループのを追加] の順に選択します。
- **[ルールタイプ] **で [ルールビルダー] を選択します。
- [名前] に、このルールを識別するための名前を入力します。
- [タイプ] で [正規ルール] を選択します。
- [リクエストがあった場合] で、**[ステートメントと一致] **を選択します。
- [ステートメント] の [検査] で、[単一ヘッダー] を選択します。
[ヘッダーフィールド名] に、フィールドの名前を入力します。例: ユーザーエージェント。
[マッチタイプ] で [文字列を含む] を選択します。
[一致する文字列] に、ブロックする特定のユーザーエージェントの値を入力します。
(オプション) [ テキスト変換] を選択するか、[なし] を選択します。
- [アクション] で [ブロック] を選択します。
- [ルールを追加] を選択します。
- (オプション) [ルールの優先度を設定] で、ルールを選択して優先度を変更します。ルールは表示された順に処理されます。詳細については、「ウェブ ACL でのルールおよびルールグループの処理順序」を参照してください。
- [保存] を選択します。