8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

はじめに

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

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?