AWS マネージドルールが原因となって生じた誤検知を検出してセーフリストに追加するにはどうすればよいですか?

所要時間2分
0

アプリケーションに対する正当なリクエストが、AWS WAF の AWS マネージドルールによってブロックされます。これらのルールが原因となって生じた誤検知を検出してセーフリストに追加するにはどうすればよいですか?

解決方法

AWS マネージドルールが原因となって生じた誤検知を検出する

1.    正当なリクエストをブロックしているマネージドルールグループ内のルールを見つけます。リクエストをブロックしているルールは、AWS WAF ログの [terminatingRuleId] フィールドにあります。詳細については、ログの「terminatingRuleMatchDetails」セクションを確認してください。

2.    以下のいずれかの方法を使用して、リクエストパラメータで誤検知の原因となっている部分を確認します。

curl: エンドポイントで curl を実行し、誤検知エラーを送信したときに「403 Forbidden」(403 禁止) エラーが表示されるかどうかを確認します。例:

$ curl -ikv http://<your-domain>.com/<false positive>

: この例では、<your-domain> をお客様のドメインに、<false positive> を誤検知ベクトルにそれぞれ置き換えてください。

ウェブブラウザ: ウェブブラウザにドメインと誤検知ベクトルを入力して、「403 Forbidden」(403 禁止) エラーが表示されるかどうかを確認します。例:

http://<your-domain>/<false positive>

前の例では、<your-domain> をお客様のドメインに、<false positive> を誤検出ベクトルにそれぞれ置き換えてください。

Postman: Postman ツールを使用して、誤検知エラーを生じさせているルールとパラメータを使用してエンドポイントにリクエストを送信します。

3.    誤検知の原因となっているベクトルを特定します。正当なリクエストをパスすることを許可するカスタム条件ルールを作成します。

例えば、社内チームがウェブページを変更しようとしているとします。リクエストには、ManagedRulesCommonRuleSet というルールによってリクエストがブロックされる原因となる変更のスクリプトが含まれています。内部リクエストを一意に識別するパラメータを使用して、マネージドルールがそれらのリクエストを検査しないようにすることができます。例えば、正当なリクエストが特定の IP からのものである場合は、その IP を検査対象から除外する IP セット条件を作成できます。

AWS マネージドルールが原因となって生じた誤検知をセーフリストに追加する

誤検知を検出したら、誤検知の原因となっている AWS マネージドルールのルールグループに照らして正当なリクエストを検査しないようにウェブ ACL を設定します。その後、リクエストをブロックしているルールをバイパスできます。AWS マネージドルールを変更するには 2 つの方法があります。

ラベル

AWS マネージドルールによって追加されたラベルを使用して、誤検知を防ぐことができます。ラベルは、ルールに関連付けられているアクションにかかわらず、一致するウェブリクエストにルールが追加できるメタデータです。最新バージョンの AWS マネージドルールはラベルをサポートしています。ラベルが付されたリクエストを照合するカスタムルールを作成することで、マネージドルールグループ内のルールのデフォルトアクションを変更できます。

1.    AWS WAF コンソールを開き、正しい [Region] (リージョン) を選択してから、[IP sets] (IP セット) を選択します。

2.    ルールグループによる検査から除外する正当な IP を含む IP セットを作成します。

3.    AWS WAF コンソールのナビゲーションペインから [Web ACLs] (ウェブ ACL) を選択し、自分の [Web ACL] (ウェブ ACL) を選択します。

4.    [Rules] (ルール) タブを選択します。

5.    誤検知エラーの原因となっているルールを含むルールグループを選択し、[Edit] (編集) を選択します。

6.    誤検知エラーの原因となっているルールを選択し、それを [Count] (カウント) に設定します。

7.    [Save rule] (ルールを保存) を選択します。

8.    [Add rule] (ルールを追加) を選択し、[Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。

9.    ルールタイプに [Rule Builder] (ルールビルダー) を選択します。

10.    ルール名を入力し、タイプとして [Regular rule] (通常のルール) を選択します。

11.    [If a request] (リクエストが次の場合) ドロップダウンを [matches all the statements (AND)] (すべてのステートメントに一致 (AND)) に設定します。

12.    ステートメント 1 には次のパラメータを選択します。
[Inspect] (検査) を [Has a label] (ラベルあり) に設定
[Match scope] (一致の範囲) を [Label] (ラベル) に設定
誤検知エラーの原因となっているルールのラベル名を含む文字列を入力

13.    ステートメント 2 には次のパラメータを選択します。
[Negate statement results] (ステートメントの結果を無効にする) オプションをオンにする
[Inspect] (検査) を [Originates from an IP address in] (次の IP アドレスから送信) に設定
[IP set] (IP セット) を、正当な IP を含む作成した IP セットに設定
[IP address to use as the originating address] (送信元アドレスとして使用する IP アドレス) を [Source IP address] (送信元 IP アドレス) に設定

14.    [Action] (アクション) を [Block] (ブロック) に設定します。

15.    [Set rule priority] (ルールの優先度を設定) で、ルールの優先度が、誤検知エラーの原因となっている AWS マネージドルールよりも低くなるように設定します。

16.    [Save] (保存) を選択します。

スコープダウンステートメント

スコープダウンステートメントを使用して、ルールまたはルールグループが評価するリクエストの範囲を絞り込むことができます。スコープダウンステートメントをルールグループに追加すると、リクエストを検査できます。このステートメントは、ステートメントに含まれるすべての正当な IP をスキップします。

1.    AWS WAF コンソールを開き、正しい [Region] (リージョン) を選択してから、[IP sets] (IP セット) を選択します。

2.    ルールグループによる検査から除外する正当な IP を含む IP セットを作成します。

3.    AWS WAF コンソールのナビゲーションペインで [Web ACLs] (ウェブ ACL) を選択し、自分の [Web ACL] (ウェブ ACL) を選択します。

4.    [Rules] (ルール) タブを選択します。

5.    スコープダウンステートメントを追加する AWS マネージドルールのエントリを選択し、[Edit] (編集) を選択します。

6.    作成した IP セットを除外してスコープダウンステートメントを作成します。ステートメントの例を次に示します。
If a request: doesn't match the statements (NOT) (リクエストが次の場合: ステートメントと一致しない (NOT))
Inspect: originates from an IP address in (検査: 次の IP アドレスから発信)
IP set: <your-IP-set> (IP セット: <your-IP-set>)
IP addresses to use as the originating address: Source IP address (送信元アドレスとして使用する IP アドレス: 送信元 IP アドレス)

7.    [Save rule] (ルールを保存) を選択します。

: スコープダウンステートメントは、範囲外のリクエストをルールグループ内のすべてのルールに照らして検査しません。明示的な詳細ルールの場合は、ラベルを使用するのがベストプラクティスです。


AWS公式
AWS公式更新しました 4年前