LoginSignup
21
19

More than 5 years have passed since last update.

「AWS WAF」を導入してみた。- SQL injection編

Last updated at Posted at 2015-12-08

はじめに

2015年のre:Inventで「AWS WAF」が発表されました。

AWS WAFはアプリケーション用のファイアウォールで、IP address、SQL injection、String matchingに関するアクセスの制御ができます。
ただ、このサービスを利用するにはCloudFront経由でのアクセスにしか対応していないため、ELBやEC2にWAFを導入する場合はCloudFrontを配置する必要があります。

今回は既に作成済みの「waf-test-acl」にSQL injectionの設定を追加してみます。
その他の設定については以下参照ください。
「AWS WAF」を導入してみた。- IP addresses編
「AWS WAF」を導入してみた。- String matching編

1.設定

まず、SQL injectionをクリックします。
aws-waf_sql-injection_2015120401.png

「Create condition」をクリックします。
aws-waf_sql-injection_2015120402.png

「Name」には任意のコンディション名を入力します。
また、Filter settingsの「Part of the request to filter on」でチェックしたいWeb要求、「Transformation」でAWS WAFがリクエストをチェックする前に行う変換方式を指定し、OKであれば「Add another filter」をクリックして条件に追加します。
aws-waf_sql-injection_2015120403.png

Filters in this SQL injection match conditionへの追加が確認できたら「Create」をクリックして作成します。
aws-waf_sql-injection_2015120404.png

conditionを作成したら、次に「Rules」をクリックします。
aws-waf_sql-injection_2015120405.png

Rules設定画面が表示されたら「Create rule」をクリックしルールの作成を行います。
aws-waf_sql-injection_2015120406.png

先ほどConditionsのSQL injectionで作成したルールを設定し、完了したら「Create」をクリックします。
aws-waf_sql-injection_2015120407.png

ルールの作成が完了したら「Web ACLs」をクリックします。
aws-waf_sql-injection_2015120408.png

今回ルールを追加する対象のACL名をクリックします。
aws-waf_sql-injection_2015120409.png

タブ「Rules」をクリックして「Edit web ACL」をクリックします。
aws-waf_sql-injection_2015120410-1.png

「Rules」のプルダウンで今回作成したルールを選択し、「Add rule to web ACL」をクリックすると下の”If a request matches all the conditions in a rule, take the corresponding action”に追加されます。そうしたら今回はブロックをしたいため「Block」にチェックし、「Update」をクリックします。
aws-waf_sql-injection_2015120411.png

ルールが追加されました。「Requests」タブをクリックするとリクエストログが確認できます。
aws-waf_sql-injection_2015120412-1.png

2.動作確認

まずは現状を確認します。リクエストがない状態です。
aws-waf_sql-injection_2015120414.png

次にsqlmapを実行します。
aws-waf_sql-injection_2015120419-1.png

それでは再度、リクエストを確認してみます。
aws-waf_sql-injection_2015120415-1.png

先ほど設定したルール"sql-injection-rule"によってリクエストが「Block」されているのが確認できます。
さらに今回はUser-Agentに対して設定したので、Request headersのUser-Agentを確認するとどういったリクエストを防いだかがわかります。
aws-waf_sql-injection_2015120416-1.png

aws-waf_sql-injection_2015120417-1.png

aws-waf_sql-injection_2015120418-1.png

以上で設定完了です。

21
19
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
21
19