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のサービス