AWS WAFを利用するにはCloudFrontもしくはApplication Load Balancer が必要となり、設定に必要な構成要素を満たしていないといけません。

  • WebACL:Ruleを束ねたもの、CloudFrontもしくはApplication Load Balancerが必要。
  • Rule:Conditionを束ねたもの。
  • Condition:IP addresses/SQL injection/String matchingの指定。
  • Filter:String matchingで「リクエストヘッダー/HTTP Method/クエリーストリング/URL の文字列」の中から複数設定。

設定

作業の流れ

以下の順番で利用を開始できます。

  1. Web ACL の作成
  2. ターゲットの指定
  3. フィルターの指定
  4. ルールの作成
  5. ルールとフィルターの関連づけ
  1. Web ACL の作成

    はじめてのアクセスのときだけ下記のスタート画面が表示されます。

    はじめに概要が説明されます。
    以下の設定を進めてください。

    • Conditions(IP/文字列/SQLインジェクション)
    • Rules contains conditions
    • ACL contains rules

    • WAFメニューの「Web ACL」を選び、「Create ACL」を選択します。

    • [Web ACL name]に名前を入力します。

    注意ウェブ ACL の作成後は、名前を変更することはできません。

  2. ターゲットの指定

    WebACLではWAFを付けるターゲットを指定します。
    「Web ACL Name」にWAF名を、「AWS resource to associate」にCloudfrontかALBを指定します。

    • [CloudWatch metric name]で、必要に応じてデフォルト名を変更します。
      注意ウェブ ACL の作成後は、名前を変更することはできません。
      名前に使用できるのは英数字 (A~Z、a~z、0~9) または次の特殊文字 _-!”、#`+*},./ です。空白を含めることはできません。
    • [Region] で、リージョンを選択します。
    • [AWS resource]で、ウェブ ACL に関連付けるリソースを選択し、[Next] を選択します。
  3. フィルターの設定

    • ACLの作成完了後、ACLに攻撃に対するフィルターを作成します。
      「Create condition」のページで設定する攻撃対策を選択します。

    • 「Part of the request to filter on」では攻撃を検知するためのフィルターの箇所、「Header*」にはフィルターで検知するヘッダーの内容、「Transformation」にはチェックする際の変換方式を入力します。

  4. ルールの作成

    フィルターの作成完了後、ルールを設定します。
    「Create Rule」を選択します。

  5. ルールとフィルターの関連付け

    ルール名を記入し、「When a request」に「match at least one of the filters in the cross-site scripting match condition」を指定し、先ほど作成したフィルターを選択します。ルールを作成すると選んだフィルターを検知した場合の挙動の設定が追加されています。通すのであれば「Allow」、遮断する場合は「block」、数を数える場合は「count」になります。「If a request doesn’t match any rules, take the default action」ではフィルターに引っかからないアクセスを遮断するか通すかを選択できます。

  6. ここまでの設定を終えると確認画面となります。

    「Confirm and cerate」を選択してWAFを立ち上げます。
    これでWAFの設定は完了です。

WAFの設定方法をご紹介しました。