Help us understand the problem. What is going on with this article?

AWS WAFでCross site scriptingとSQL injectionをブロックする

More than 1 year has passed since last update.

はじめに

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]は空のままにしておく。

スクリーンショット 2018-05-11 13.20.03.png

2. Conditionの作成

2.1 Cross-site scripting のCondition作成

Query String、URIに対してフィルターを設定する。

スクリーンショット 2018-05-11 13.26.32.png

2.2 SQL injection のCondition作成

Query String、Body に対してフィルターを設定する。

スクリーンショット 2018-05-11 13.28.29.png

3. Ruleの作成

[Create Rule]からRule作成Windowを開き、Ruleの名前と2で作った2つのConditionを入力する。

スクリーンショット 2018-05-11 13.50.45.png

4. Ruleの適用

3.で作成したRuleがリストに追加されていることを確認し、Default Actionを選択して[Review and create]へ進む。

スクリーンショット 2018-05-11 13.53.49.png

5. ACLの作成

入力内容を確認し[Confirm and create]をクリックでACL作成完了。
スクリーンショット 2018-05-11 13.58.23.png

6. Cloudfrontへの適用

Cloudfrontのリストから該当するCloudfrontを選択して[General]>[Edit]から編集画面を開き、[AWS WAF Web ACL]の項目で、5.で作成したACLを選択する。

スクリーンショット 2018-05-11 14.02.42.png

7. 動作確認

WAFの適用が完了したので、ブラウザからXSSとSQL injectionのテストを実施。
以下のような画面が表示されればOK。

スクリーンショット 2018-05-11 14.15.26.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away