Back

WAF Configのルール設定 (AWS WAF v2)

AWS WAF v2Old PlanNew PlanLegacyAdvancedFeature / Spec.

概要

WAF Config設定に含まれる「ルール設定」は、WafCharmコンソールにて各種ルールの設定を行うための項目です。Ruleポリシーにて選択する値によって、ルール設定の中で設定できる項目が異なります。

いずれのルール設定も、設定されていない項目がある場合などは [次のステップへ] ボタンが無効になります。[ルール設定] の画面上で [次のステップへ] ボタンが無効になっていてクリックできない場合は、各種ルールの設定を確認の上、調整してから次に進んでください。

WAF Configの設定完了後も、詳細画面にある [編集] ボタンをクリックすることで各種設定項目の変更や追加が可能です。

Ruleポリシーによる違いについて

Ruleポリシーには、AdvancedとLegacyの2つがあります。

Advanced:WafCharmコンソールにて追加された新しいルール構成です。レートベースルールやGeo-match、Botルールなどのルール設定が可能です。新プランでのみご利用可能です。

Legacy:旧管理画面にてご提供していたルール構成です。ルール設定のうち、IPアドレスに関する内容のみ設定可能です。新プラン・旧プランでご利用可能です。

Advancedを選択した場合、以下のルール設定が提供されます。

  • IPアドレス
  • GEO(Geo-match)
  • Rate-base
  • Bot
  • 正規表現
  • Body size
  • 例外設定

Legacyを選択した場合、以下のルール設定が提供されます。

  • IPアドレス
  • 例外設定

各種ルール設定について

IPアドレス

IPアドレスベースのルール制御を行うための設定です。

Allowlist

登録したIPアドレスからのリクエストを許可します。

設定方法

  1. AllowlistにIPアドレスを追加する
  2. 登録ボタンをクリックする

Denylist

登録したIPアドレスからのリクエストをブロックします。

設定方法

  1. DenylistにIPアドレスを追加する
  2. 登録ボタンをクリックする

動的Denylist

WafCharmが自動で更新するDenylistルールのアクションを選択します。

動的Denylistは、以下2つの機能によりIPアドレスの登録・解除が行われます。詳細については、Denylist、Allowlistについてをご確認ください。

  • ログを数百ものシグネチャに再マッチング処理をしており、都度Denylist登録する機能(動的Denylist機能)
  • 弊社独自のIPレピュテーションによるDenylist機能(IPレピュテーション機能)

※本機能はAdvanced Ruleポリシーの場合のみご提供しております。Legacy Ruleポリシーの場合、この項目は存在しません。

設定方法

  1. プルダウンから利用したいアクション(CountあるいはBlock)を選択する
  2. [登録] ボタンをクリックする

IP参照

リクエスト内のどのIPアドレスを参照するかの設定です。Allowlist、Denylist両方に対して同じ設定が適用されます。

  • Source IP
    • リクエスト元のIPアドレスであるSource IP(Client IP)を検査対象とします。
  • 特定ヘッダ(参考:特定ヘッダについて )
    • X-Forwarded-Forなどのヘッダー名を登録いただき、指定されたヘッダーに記載されるIPアドレスを検査対象とします。
    • 特定のヘッダー内のIPアドレスを参照する場合は、参照したいIPアドレスの位置も「参照するヘッダ位置」からご指定ください。

設定方法

デフォルトではSource IPが選択されています。特定ヘッダを利用されたい場合に、以下の手順で変更してください。

  1. 「IPアドレスの参照先」にて、「特定ヘッダ」を選択する
  2. 「特定ヘッダ名」に参照すべきヘッダー名を記載する

    デフォルトでは「X-Forwarded-For」と入力されています。必要に応じて、ヘッダー名をご変更ください。

  3. 「参照するヘッダ位置」を選択する

    ヘッダーに含まれるIP アドレスがリストになっている場合、リスト内の最初(一番左)あるいは最後(一番右)どちらのIP アドレスを評価対象とするかを選択するための項目です。

制限事項・注意点

  • 「特定ヘッダ」を選択した場合、リクエスト内に指定したヘッダーが存在しない場合、指定したヘッダーに IP アドレスが存在しない場合、ルールに一致しません。
    • 特定のヘッダーのIPアドレスに関する詳細は、AWS公式ドキュメントの「転送されたIPアドレス」もご参考ください。
  • 複数のIPアドレスを登録する場合は、改行で区切ってください。
  • 登録可能数は、最大8000件です。
  • IPアドレスはCIDRでの指定も可能です。指定可能なCIDRは、/8 と /16 ~ /32 です。
  • IPv6 には対応しておりません。
  • CIDR の指定が無い場合は、/32 として処理されます。
  • 登録完了後、基本的には即時で反映されます。何らかの理由により処理が完了するまで多少前後する可能性はございます。

GEO(Geo-match)

Geo-match(国別制限)でのルール制御を行うための設定です。

この設定にて、特定のユースケースに対応したGeo-matchルールを登録できます。

ユースケース

  • 特定の国・地域からのアクセスのみをBlockする
    • 指定した国からのアクセスの場合にブロックするルールを適用します。
  • 特定の国・地域以外からのアクセスのみをBlockする
    • 指定した国以外からのアクセスの場合にブロックするルールを適用します。

例えば、日本以外に提供していないサービスであるといった場合には、「日本以外からのアクセスをブロックする」というルールの適用を行うことが可能です。

設定方法

  1. 「GEOルールを有効化する」にチェックを入れる
  2. ユースケースを選択する
  3. 「対象の国・地域」以下のプルダウンから制限したい国名を選択する
  4. 「国・地域の判定に使用するIP参照先」の設定を行う

    国・地域の判定にはIPアドレスを使用しますので、リクエスト検査時に使用するIPアドレスを指定します。

    IPアドレス設定の「IP参照」と同じ設定にする場合は、「IPルールの設定を継承する」を選択してください。

    設定するGeo-matchルールにて参照するIPアドレスを変更する場合は、「Source IP」「特定ヘッダ」のいずれかから設定を行います。

各項目を選択した後は、最後のステップまで完了した際にWeb ACLにGeo-matchルールが適用されます。

ルールの設定をキャンセルする場合は、「GEOルールを有効化する」のチェックを外してください。

制限事項・注意点

  • WafCharmコンソール上からは国単位での制限のみが可能です。
    • より細かい地域単位での制限を行いたい場合は、AWSマネージメントコンソール上でお客様ルールとして作成するか、カスタマイズでの対応となります。
  • AWS WAFのGeo-matchルールでは、IPアドレスをもとにリクエスト元の国・地域を判定します。
    • AWS WAFでの検査時に国・地域を判定できなかった場合や、判定した結果の国・地域がルールで指定したものとマッチしなかった場合には、設定したルールにマッチしない(ブロックされない)場合もあります。
    • AWS WAFによる国・地位域の判定などの詳細については、地理的一致ステートメントをご参照ください。

Ratebase(Rate-basedルール)

レートベースルールによるBot/DoS緩和制御を行うための設定です。特定のユースケースおよびお客様独自の設定を行えます。

ユースケース

  • Bot等からの急激なアクセスに対応する
    • 指定したレート計測のキーを集計し、1分あるいは2分間の間に特定の閾値を超えるリクエストがあった場合にブロックするルールを設定します。
    • ウィンドウサイズ(1分あるいは2分)と閾値(デフォルト値:10000)は変更可能です。
  • Botの可能性が疑わしいアクセスに対して、ブラウザアクセスであることを確認する
    • 指定したレート計測のキーを集計し、5分あるいは10分の間に特定の閾値を超えるリクエストがあった場合にChallengeアクションまたはCAPTCHAアクションを適用するルールを設定します。
    • ウィンドウサイズ(5分あるいは10分)、閾値(デフォルト値:10000)、アクションは変更可能です。
    • ChallengeおよびCAPTCHAのImmunity timeは、AWS WAFのデフォルト値である300が設定されます。
      • Immunity timeについて、デフォルト値である「300」以外の値に変更したい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。
  • カスタマイズ
    • 上記のユースケースに比べて、柔軟な設定が可能です。
    • 指定したレート計測のキーを集計し、指定したウィンドウサイズの間に閾値を超えるリクエストがあった場合に指定したアクションを実行するルールを設定します。
    • ウィンドウサイズ(1分、2分、5分、10分)、閾値(デフォルト値:10000)、アクション(Block, Challenge, CAPTCHA)は変更可能です。
    • ChallengeおよびCAPTCHAのImmunity timeは、AWS WAFのデフォルト値である300が設定されます。
      • Immunity timeについて、デフォルト値である「300」以外の値に変更したい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。

設定項目

レートベースルールの画面からは、以下の項目の設定が可能です。具体的な設定値は、ユースケースによって異なる場合があります。

  • レート計測のキー
    • AWS WAFでリクエストのレートを計測する際に、何をキーとして使用したいかを指定するための項目です。IPアドレス、Session ID、JA4 Fingerprintのいずれかからお選びいただけます。
    • IPアドレスをレート計測のキーに指定した場合、同一IPアドレスのリクエストレートを計測し、指定した閾値を超えたらアクションを適用します。IPアドレスの参照先の設定は、IPアドレスルールと同じです(参考:IP参照 )。
    • Session IDをレート計測のキーに指定した場合、Query、Header、Cookieなどに含まれるセッションIDのキーをもとにリクエストレートを計測し、指定した閾値を超えたらアクションを適用します。例えば、セッションIDが「name=key_value」という形でクエリーストリングに記載される仕組みとなっている場合、「Session IDの参照方法」は「クエリーストリング」、「Session IDをQueryから参照するためのキー」には「name」と指定することで、同一Session IDで多数のリクエストが発生した場合にレートベースルールで制限できるようになります。
      ※指定するのはセッションIDが記載されているキー「name」ですが、集計はキーの値にあたる「key_value」の部分で行われます。
    • JA4 Fingerprintをレート計測のキーに指定した場合、同一JA4 Fingerprintのリクエストレートを計測し、指定した閾値を超えたらアクションを適用します。
      • フォールバック動作は、NO MATCHが指定されます。フォールバック動作を変更することはできません。
    • レートベースルールで計測されるキーに関する詳細は、AWS公式ドキュメントのレートベースのルール集約オプションとキーをご参照ください。
  • ウィンドウサイズ
    • 評価対象の時間を指定します。例えば、5分間に100回リクエストが発生したら検知するルールの場合、ウィンドウサイズには「5分」を選択します。
  • 閾値
    • 評価対象のリクエスト数を指定します。例えば、5分間に100回リクエストが発生したら検知するルールの場合、閾値には「100」を指定します。
  • アクション
    • リクエストが当該レートベースルールにマッチした場合に実行するアクションを指定します。
    • いずれのルールも、アクションにはCountを選択できます。BlockやCAPTCHAなどでアクションを適用する前に、検知状況を確認したい場合や、誤検知などを回避したいといった場合にはCountアクションに切り替えてください。

設定方法

  1. [ルールの追加] をクリックする
  2. [ユースケース] を選択する
  3. [レート計測のキー] を設定する
  4. [ウィンドウサイズ]、[閾値]、[アクション] を選択する

各項目を選択した後は、最後のステップまで完了した際にWeb ACLにレートベースルールが適用されます。

ルールの設定をキャンセルする場合は、「Rule1」などと記載された各ルール枠の右下にあるゴミ箱アイコンをクリックし、設定を削除してください。

制限事項・注意点

  • ChallengeおよびCAPTCHAアクションについては ChallengeおよびCAPTCHAに関する注意点 をご確認ください。
    • Immunity timeは、AWS WAFのデフォルト値である300が設定されます。
    • Immunity timeについて、デフォルト値である「300」以外の値に変更したい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。
  • レートベースルールで設定できる閾値の最小値は10です。
    • 閾値を空にした場合や、10より下の数値を指定した場合、自動で10に切り替わります。
    • AWS WAF側の仕様によるものですので、変更できません。
  • WafCharmコンソールから設定できるレートベースルールの最大数は4です。
    • 1つのWeb ACLに設定できるレートベースルールの数は、最大10です。AWS WAFの仕様により、拡張はできません。
    • 5つ以上のレートベースルールを適用したい場合、5つ目からはWeb ACLに直接適用する必要があります。
  • IPアドレスもしくはSession ID以外の集約キーを用いたい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。
  • ご利用のリージョンによっては、AWS WAF側の制限により一部設定値をご利用いただけない場合がございます。

Bot

Bot制御を行うためのルールの設定です。Botルールを有効にすると、WafCharm独自ルールが追加されます。

Botルールには以下のカテゴリが存在し、カテゴリごとにアクションの指定が可能です。

  • Advertising
  • AI
  • ContentFetcher
  • HTTP Libraries
  • Monitoring
  • Scrapers
  • SearchEngine
  • Security
  • SEO
  • SNS

指定できるアクションは、以下の4つです。

  • Block
  • Count
  • CAPTCHA
  • Challenge

設定方法

  1. [Botルールを有効にする] にチェックを入れる
  2. [Bot Category] 以下の各カテゴリ横にあるアクションを設定する

最後のステップまで完了した際にWeb ACLにレートベースルールが適用されます。

Botルールを有効にすると、提供可能なすべてのカテゴリが有効になります。特定のカテゴリのみ無効といったことはできないため、もし特定のBotカテゴリでリクエストを遮断したくない場合には、アクションにCountを選択してください。Countの場合、ルールにマッチした際に検知はしますが、リクエストを遮断することはありませんので、他のルールにマッチしなければ最終的に許可されます。

制限事項・注意点

  • ChallengeおよびCAPTCHAアクションについては ChallengeおよびCAPTCHAに関する注意点 をご確認ください。
    • Immunity timeは、AWS WAFのデフォルト値である300が設定されます。
    • Immunity timeについて、デフォルト値である「300」以外の値に変更したい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。

正規表現

WafCharm独自の正規表現を用いて検知するルールの設定です。こちらはデフォルトで提供されるルールとなるため、ON/OFFの切り替えはありませんが、ルールごとのアクションの設定が可能です。

  • 新規ルールが追加された場合のアクション:WafCharmが正規表現ルールを新規追加する場合に利用するアクションを指定するための項目です。「正規表現リスト」に存在しないルールを新規追加する際に、この項目で指定したアクションで適用されます。BlockあるいはCountのいずれかを選択可能です。ルールの新規追加が行われた後、ルールアクションの変更を行いたい場合には、「正規表現リスト」からご実施ください。

    ※WAF Config新規作成時にWeb ACLに適用するデフォルトルールのアクションを変更するものではありません。デフォルトルールのアクションは、「正規表現リスト」からアクションを指定してください。
    ※[正規表現ルールを自動で更新しない] にチェックを入れている場合には表示されません。

  • 正規表現リスト以下のアクション:デフォルトのルールセットとして存在する、既存ルールのアクションを指定するための項目です。WAF Configの新規作成時、および通常の運用において利用する上で、リストに表示されているルールについては、リスト内で指定したアクションが優先されます。

正規表現リスト以下のルールに指定できるアクションは、以下の4つです。

  • Block
  • Count
  • CAPTCHA
  • Challenge

特定のルールを無効にするといったことはできないため、もし特定のルールで遮断したくないといった場合や、誤検知などが発生しており緊急で遮断を回避する必要がある場合には、対象のルールにてアクションにCountを選択してください。
Countの場合、ルールにマッチした際に検知はしますが、リクエストを遮断することはありませんので、他のルールにマッチしなければ最終的に許可されます。

設定方法

新規ルールが追加された場合のアクション

  1. [新規ルールが追加された場合のアクション] の下にあるルールアクションを選択する

正規表現リスト以下のアクション

  1. [正規表現ルール名] のルール名の隣にあるアクションを設定する

制限事項・注意点

  • ChallengeおよびCAPTCHAアクションについては ChallengeおよびCAPTCHAに関する注意点 をご確認ください。
    • Immunity timeは、AWS WAFのデフォルト値である300が設定されます。
    • Immunity timeについて、デフォルト値である「300」以外の値に変更したい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。
  • ルールアクションは、WafCharmコンソール上の正規表現ルールのアクション設定が優先されます。
    • 仮にAWSマネージメントコンソール上でルールアクションを変更した場合、定期的なタイミングでWafCharmコンソール上で設定した正規表現ルールの設定にて上書きされます。ルールアクションの変更を行う場合は、必ずWafCharmコンソールからご実施ください。
    • ルールアクション以外に、WafCharmが提供するルール条件そのものの編集を行った場合、動作保証ができませんのでご注意ください。
  • WafCharmの正規表現ルールは攻撃と思われるリクエストや不審なリクエストを検知し遮断することを目的としたルールのため、Allowアクションは選択肢に含まれていません。

Body size

リクエストボディのサイズが AWS WAF の検査上限を超えた場合に検知するルールのルールアクションや除外条件を指定するための設定です。

ルールの構成としては、オーバーサイズの処理オプションにて「Match」判定を行っておりますため、AWS WAFが検査できるリクエスト本文の最大サイズにあわせて動作いたします。一部リソースについてはWeb ACL上でリソースごとのボディ検査サイズの制限の値を変更できますので、変更されている場合にはその値を元に動作いたします。
※ボディ検査サイズの制限は、ご利用のリソースによって変更可否および設定値が異なります。詳細はAWS公式ドキュメントのボディ検査サイズの制限の変更オプションに関する情報をご参照ください。

  • アクション:ルールのアクションを以下のいずれかから指定します。初期値はCount(検知モード)です。
    • 検査上限を超えたリクエストを Block する
    • 検査上限を超えたリクエストを Count する(検知モード)
  • 対象外にする URI:ファイルアップロードなど、正常な用途として大きなボディサイズのリクエストを受け付けるURI・エンドポイントが存在する場合は、あらかじめ当該URIを例外として設定してください。

設定方法

  1. 必要に応じて、アクションを変更する
  2. 必要に応じて、[除外 URI を追加] ボタンをクリックし一致条件を指定する

    一致条件の選択肢は、以下のいずれかです。

    • 前方一致
    • 部分一致
    • 後方一致
    • 完全一致
  3. 対象となるURIの値を入力する

    URIは64文字まで指定が可能です。

  4. 必要に応じて、[除外 URI を追加] ボタンをクリックし対象のURIを追加する

    URIは最大20件まで登録可能です。

  5. [登録] ボタンをクリックする

URIの入力がない場合、「URI を入力するか、行を削除してください」といったエラーメッセージが表示された状態となり、登録ができません。URIの登録が不要な場合には、ゴミ箱アイコンから項目を削除してから登録をお願いいたします。

URIの設定値に関する注意点

  • 入力可能な文字列は A-Za-z0-9 - . _ ~ % : @ ! $ & ' ( ) * + , ; = / のいずれかです。
  • 正規表現での指定は受け付けておりません。文字列での指定のみ対応可能です。
  • 指定した文字列にスペースが混入している場合、エラーとなります。
  • クエリーストリングを含めることはできません。それに伴い、 ? という文字列を入力した場合にはエラーとなります。
  • フラグメント # を含めることはできません。
  • 一致条件に「前方一致」あるいは「完全一致」を選択した場合、URIは / で開始する必要があります。
  • 同じ条件は重複して指定できません。例えば、「前方一致」で /example という設定値を繰り返し指定することはできません。
    • 大文字・小文字は区別されます。例えば、「前方一致」で /example という設定値と、「前方一致」で /Example という設定値は重複とはみなしません。
  • 上記に伴い、 /example という値を指定した場合、 /Example や /EXAMPLE などの大文字・小文字が異なる値については一致しません。

例外設定

WafCharmが提供するルールにおいて、例外を設けたい場合の設定です。

IPアドレス

WafCharmには、お客様から提供されるログに対して再マッチングをし、動的にIPアドレスをDenylistに追加する機能を提供しています。

リクエストがシグネチャにマッチした際にIPアドレスがDenylistに登録される仕組みとなりますので、もしお客様管理のIPアドレスなどで、他のWafCharmルールでは検査したいが、Denylistには登録したくないものがある場合には、あらかじめ例外設定を行うことで、そのIPアドレスがDenylistに登録されてしまうことを回避できます。

設定方法

  1. 例外IPリストにIPアドレスを追加する

最後のステップまで完了した際に設定が適用されます。

制限事項・注意点

  • 複数のIPアドレスを登録する場合は、改行で区切ってください。
  • 登録可能数は、最大8000件です。
  • IPアドレスはCIDRでの指定も可能です。指定可能なCIDRは、/1 ~ /32 です。
  • IPv6 には対応しておりません。
  • CIDR の指定が無い場合は、/32 として処理されます。

ChallengeおよびCAPTCHAに関する注意点

ChallengeおよびCAPTCHAアクションは、BlockやCountといったアクションとは異なる動作をします。

Challengeは、ルールにマッチした場合に、Botではなくブラウザからのリクエストであることを確認する必要があるサイレントチャレンジを実行し、パスしたらリクエストを許可します。

CAPTCHAは、ルールにマッチした場合にCAPTCHAテストを表示し、テストをパスしたらリクエストを許可します。CAPTCHAアクションが実行された場合、画面上にAWSが提供するCAPTCHAの画面が表示されます。

CAPTCHAテスト自体はAWS提供のものになるため、CAPTCHA画面が表示されることの是非については別途ご判断いただく必要がございます。

ルールアクションの詳細や仕組みについては、AWS公式ドキュメントをご参照ください。

  • ルールアクション
  • ChallengeおよびCAPTCHAアクションについて
  • ChallengeおよびCAPTCHAの仕組み

なお、Immunity timeについて、デフォルト値である「300」以外の値に変更したい場合は、ルール自体をお客様にてAWSマネージメントコンソール上で適用いただくか、カスタマイズにて適用する必要がございます。カスタマイズでの対応をご希望の場合には、ご相談ください。