CloudFrontにWAF設定方法

目的

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

今回ご紹介するのは、CloudfrontにWAFを設定して許可するIPのみにサーバーに接続できるように環境を作成する手順です。

WAFとは

ユーザーが定義する条件に基づきウェブリクエストを許可、ブロック、または監視 (カウント) するルールを設定することで、ウェブアプリケーションを攻撃から保護するのを助ける Web アプリケーションファイアウォールです。

IP sets作成

https://console.aws.amazon.com/wafv2/homev2/ip-sets?region=global

CloudFrontはGlobal領域なので、「Global(CloudFront)」を選択してIP setsを作成します。

IP set name
名前を設定します。

Region
Globalでなければ、変更してください。

IP version
IPv4,IPv6を、両方は登録できないので、IPv6も使う為にはIPv6用のIPsetを作る必要があります。

IP address
単一のIPとCIDRを利用してIP範囲を設定可能です。
区分は行単位です。

テストの為、三つのIP setを作って見ました。

Web ACLs 作成

保護されたリソースが応答する Web リクエストをきめ細かく制御して、保護されたリソースで応答できます。Amazon CloudFront、Amazon API Gateway、Application Load Balancer、AWS AppSyncリソースの使用料金を見積もることができます。

Web ACLsもIP setsと同じように「Global(CloudFront)」を選択してWeb ACLsを作成します。

Resource typeは
「CloudFront distributions」を選択し、「Next」を押してください。

Add rules > Add my own rules and rule groups を選択してルールを追加します。

Rule type
上記で作ったIP setsを利用する為、IP setを選択します。

IP set
上記で作ったIP setを選択します。

Action
選択したIP setを許可する為「Allow」を選択します。

TEST-IP-Rule2はBlockにされているのでTEST-IP-Rule2に入っているIPは全て拒否されます。

Default action
ルールで決められなかったIPを許可するか拒否するかを選択します。
今回は決めたIP以外は拒否する為、「Block」を選択しました。

「Next」を押して次の設定に行きます。

ルールの順番を決めます。
例えば上のようだったらTEST-IP-Ruleは127.0.0.1/30を設定して127.0.0.0~127.0.0.3のIPが許可になりますが、TEST-IP-Rule2が127.0.0.1を拒否するとWAFに許可するIPは127.0.0.0、127.0.0.2、127.0.0.3なります。

TEST-IP-RuleがTEST-IP-Rule2上にあるとTEST-IP-Rule2は拒否にしても上のルールで許可されるので、
127.0.0.0~127.0.0.3のIP全部が許可されます。

設定したら「Next」を押して次に進んでください。

CloudWatchにMetricを記録してアラートの設定もできると思います。
必要な方は設定してください。

Web ACLの設定が終わりました。「Create web ACL」を押して作成してください。

CloudFrontにWAFを設定

設定したいCloudFrontのAWSコンソール画面で「編集」ボタンを押してください。

「AWS WAF ウェブACL」に作った「web ACL」を設定したら完了です。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス