はじめに
2015年のre:Inventで「AWS WAF」が発表されました。
AWS WAFはアプリケーション用のファイアウォールで、
IP address、SQL injection、String matchingに関するアクセスの制御ができます。
ただ、このサービスを利用するにはCloudFront経由でのアクセスにしか対応していないため、ELBやEC2にWAFを導入する場合はCloudFrontを配置する必要があります。
今回はIP addressesの設定を行います。
その他の設定については以下を参照ください。
「AWS WAF」を導入してみた。- SQL injection編
「AWS WAF」を導入してみた。- String matching編
1.新規設定
今回は新規で特定IPアドレスからのアクセスをブロックする設定をします。
まずはじめに画面中央にある「Get started」をクリックします。
Concepts overview画面が表示されますが右下の「Next」をクリックします。
Step 1: Name web ACL
作成するWeb ACLの名前を入力します。これはWAFで設定する複数のルールをまとめるためのグループ名となるので、導入するサービス名などをつけるのが良いと思います。
今回は「waf-test-acl」にします。
Step 2: Create conditions
今回はIPアドレスのアクセスコントロール設定をするので「IP match conditions」の「Create IP match condition」をクリックします。
するとIPアドレスを設定する画面がポップアップされるためIPアドレス名とIPアドレス(レンジ指定可)を入力して「Create」をクリックします。
作成が完了したら「Next」をクリックします。
Step 3: Create rules
「Create rule」をクリックするとルールを設定する画面がポップアップされます。
今回の場合は「リクストが該当IP(waf-test-ip)からのアクセスからの場合」というルールを設定しています。
設定が完了したら「Create」をクリックします。
作成したらそのルールにマッチした際のアクション(Allow, Block, Count)と、マッチしない場合のデフォルトアクション(Allow, Block)を設定し「Next」をクリックします。
今回はデフォルトアクションをAllowとし、該当IP(ip-deny-rule)からのリクエストはBlockを設定します。
Step 4: Choose AWS resource
Resourceの項目を適用したいCloudFrontに設定して「Review and create」をクリックします。
Step 5: Review and create
最後に今までのStepで設定した内容が表示されるのでOKであることを確認して「Confirm and distribution」をクリックします。
作成が完了した後「Requests」タブをクリックするとリクエストログが確認できます。
2.動作確認
CloudFront経由でサーバへブラウザアクセスすると以下の画面が表示されます。
再度リクエストログのMatches ruleを確認すると「ip-deny-rule(Block)」というログが出ているのが確認でます。
今回ブロック対象としたIPからのみブロックできているのが確認できました。
以上で設定完了です。