はじめに
AWS WAFを使ってXSSとSQLinjection攻撃をブロックする設定してみます。
AWS WAFの構成
要素 | 説明 |
---|---|
Web ACLs | Ruleを複数持つWAFの母体となるサービス。このACLをCDNに関連付けることで、WAFが有効となる。 |
Rule | Conditionを複数持つ固まり。Rule単位でACLに追加/削除を行なうため、関連の高いConditionを1つのルールにまとめておくとメンテナンスし易い。 |
Condition | 実際に制御を行なう条件。Cross-site scriptiong、Geo match、IP addresses、Size constraints、SQL injection、String matchingがある。複数のFilterを持つ。 |
Filter | AWS WAFを構成する最小単位。特定の条件に対して、RequestのPartとConvertを指定してConditionに追加していく。 |
前提事項
AWS WAFを利用するためには、アプリケーションがAWS Cloudfrontを利用している(ドメインの向き先がCloudfrontのドメインになっている)ことが前提となります。Cloudfrontの概要や設定方法は以下などを参考にしてください。
https://dev.classmethod.jp/cloud/cm-advent-calendar-2015-aws-re-entering-cloudfront/
WAFの設定
1. ACLの名前を入力
※ [AWS resource to associate]は空のままにしておく。
2. Conditionの作成
2.1 Cross-site scripting のCondition作成
Query String、URIに対してフィルターを設定する。
2.2 SQL injection のCondition作成
Query String、Body に対してフィルターを設定する。
3. Ruleの作成
[Create Rule]からRule作成Windowを開き、Ruleの名前と2で作った2つのConditionを入力する。
4. Ruleの適用
3.で作成したRuleがリストに追加されていることを確認し、Default Actionを選択して[Review and create]へ進む。
5. ACLの作成
入力内容を確認し[Confirm and create]をクリックでACL作成完了。
6. Cloudfrontへの適用
Cloudfrontのリストから該当するCloudfrontを選択して[General]>[Edit]から編集画面を開き、[AWS WAF Web ACL]の項目で、5.で作成したACLを選択する。
7. 動作確認
WAFの適用が完了したので、ブラウザからXSSとSQL injectionのテストを実施。
以下のような画面が表示されればOK。