「AWS WAF」を導入してみた。- IP addresses編
WS 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からのみブロックできているのが確認できました。

以上で設定完了です。