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を選択すれば設定は完了です。