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 の文字列」の中から複数設定。
設定
作業の流れ
以下の順番で利用を開始できます。
- Web ACL の作成
- ターゲットの指定
- フィルターの指定
- ルールの作成
- ルールとフィルターの関連づけ
-
Web ACL の作成
はじめてのアクセスのときだけ下記のスタート画面が表示されます。
はじめに概要が説明されます。
以下の設定を進めてください。- Conditions(IP/文字列/SQLインジェクション)
- Rules contains conditions
- ACL contains rules
- WAFメニューの「Web ACL」を選び、「Create ACL」を選択します。
- [Web ACL name]に名前を入力します。
注意:ウェブ ACL の作成後は、名前を変更することはできません。
-
ターゲットの指定
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] を選択します。
- [CloudWatch metric name]で、必要に応じてデフォルト名を変更します。
-
フィルターの設定
- ACLの作成完了後、ACLに攻撃に対するフィルターを作成します。
「Create condition」のページで設定する攻撃対策を選択します。
- 「Part of the request to filter on」では攻撃を検知するためのフィルターの箇所、「Header*」にはフィルターで検知するヘッダーの内容、「Transformation」にはチェックする際の変換方式を入力します。
- ACLの作成完了後、ACLに攻撃に対するフィルターを作成します。
-
ルールの作成
フィルターの作成完了後、ルールを設定します。
「Create Rule」を選択します。 -
ルールとフィルターの関連付け
ルール名を記入し、「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」ではフィルターに引っかからないアクセスを遮断するか通すかを選択できます。
-
ここまでの設定を終えると確認画面となります。
「Confirm and cerate」を選択してWAFを立ち上げます。
これでWAFの設定は完了です。
WAFの設定方法をご紹介しました。