AWSのCloudFrontで特定のIPアドレスからのアクセスをブロックしたくなりました。
本記事はその際の設定方法のメモ書です。
設定には主にWAFを使用します。
設定手順
AWSにログインし、WAF&Sheldにアクセスします。
まずはブロックするIPアドレスを設定します。
設定にはIP setsに移動して、Global(CloudFront)を選択してCreate IP setを押下します。

IP set nameに任意の名前を設定します。
IP addresses欄にはアクセス制御を行いたいIPアドレスを入力します。
今回は10.0.0.0/32と入力しています。
入力が完了したらCreate IP setを押下します。

次にRule groupを作成します。
作成するには左ペインのRule groupsをクリックします。

Nameに任意のグループ名を入力します。
CloudWatch metric nameはNameを入力すると自動で設定されます。
設定が完了したらNextを押下します。

RulesからAdd ruleを押下します。

下記の画像のように設定を行います。
Nameには任意のルール名を設定します。
InspectでOriginates from an IP address inを選択すると、先ほどIP setsで設定したtest_ip_setが選択できるようになります。

続いて、Actionを設定します。
今回は条件に一致したIPアドレスからのアクセスを拒否したいのでBlockを選択します。
設定が完了したらAdd ruleを選択します。

設定が完了すると赤枠の部分が追加されます。
確認したらNextを押下します。
その次の画面でCreate rule groupを押下すればrule groupの作成は完了です。

次にWeb ACLを作成します。
作成するには左ペインからWeb ACLsを選択し、Create web ACLを押下します。

Nameに任意のACL名を入力してNextを押下します。

Add rulesからAdd my own rules and rule groupsを選択します。

Rule typeでRule groupを選択します。
Ruleには任意のルール名を設定します。(Web ACLs用のルールセットの名前)
Rule groupには先ほど作成したルールグループのtest_rule_groupを選択します。
設定が完了したらAdd ruleを押下します。

ルール設定が完了するとRules欄に先ほど作成したルールが追加されます。
Default web ACL action for requests that don't match any rulesでは設定したルール以外の条件で接続があった際の処理内容を設定します。
今回は設定したルールのIPアドレス以外は接続させたいのでAllowを選択します。

Request sampling optionsはEnableに設定します。
設定するとWeb ACLs の overview 画面から ブロックされた IP アドレスを確認できるようになります。
これでWeb ACLsの設定は完了です。

あとはCloudFrontのディストリビューションから対象のCloudFront、またはCreateを実行し、AWS WAF ウェブACLの項目で先ほど作成したWeb ACLを選択すれば設定は完了です。

