【AWS】WAFでIP制限
1. 使用するサービス
(AWS)
- AWS WAF
- CloudFront
2. 概要
前提として、API GatewayとCloudFrontを使用したwebサイト等を実装しているとします。また、ドメインでアクセスが可能であるとします。
接続先IPからCloudFrontへのアクセス許可を判断するWAFの簡単な使い方を説明します。
3. WAF
AWSコンソールの検索からWAFと入力すると、画像のようなメニュー画面になります。
3-1. IP Sets
先にIP Setsを作成しておきます。ここで許可するIPアドレスのグループを作成し、後々のACLに紐付けます。
サイドバーからIP Setsを選択し、「Create IP Set」を押します。
Nameは任意の物を入れてもらい、リージョンはGlobalで、IP versionはIPv4、下の方のIPアドレスに許可したいIPアドレスをCIDR方式で入れてもらいます。
その後、「Create IP Set」で完成です。
3-2. ACL
サイドバーからAWS ACLsを選択し、「Create Web ACL」を選択し、ACLの作成を行います。
各種Nameを任意の物を入れてもらい、後はデフォルトで大丈夫です。「Next」ボタンで次の設定へいきます。
ACLのルールの設定を行います。「Add Rules」ボタンでルールを追加していきます。
ボタンを押すとドロップダウンで「add my own rules and rule groups」が出るのでそれを選択します。
Rule Typeに「IP Set」を選択し、Nameに任意の物を入れてもらいます。
IP setで先程作成したIP Setを選択してもらい、「IP address to use as the originating address」をSource IPにし、ActionはAllowにすることで
該当のIP Setを許可することになります。
「Add Rule」で作成完了です。
ACLのRule設定を完了します。
「Default web ACL action for requests that don't match any rules」をBlockにし、Rule外のアクセスをブロックします。
つまり、IP Set以外の通信を弾くようにします。逆に先程の「IP address to use as the originating address」をBlockにし、
こちらをAllowにすることで特定のIPを弾く設定も出来ます。
「Next」ボタンで次へいきます。
最後にルールの確認です。「Next」で次へいきます。
CloudWatchのメトリックスの設定です。Log等の吐き出し先です。最初の方で設定した名前のままでいいでしょう。
最後にACLの設定確認です。確認して問題なければ下の「Create web ACL」で作成完了です。
4. CloudFrontの紐付け
ACLが作成されたので、後はCloudFrontへ紐付けを行うことでCloudFrontへのアクセスを制限します。
Web ACLsから先程作成したACLを選択し、メニュー画面へ遷移します。メニューのタブにある「Associated AWS resources」を選択し
右上の「Add AWS resources」ボタンを押します。
モーダルウィンドウが開くので作成済のCloudFrontを選択し、「Add」で追加します。
すると、メニュー画面で追加されたことがわかります。
5. おわりに
以上で、WAFを用いたIPアドレスによるCloudFrontへのアクセス制限が出来ました。
ACLの「Overview」からアクセスの履歴が見れます。ここで実際にアクセスしてみてどのIPをACLが許可しているか、
どのパスに対するアクセスかなどモニタリング出来ます。作成した後は、こちらを見ながら、様々なIPからアクセスして
ACLが作動しているか確認してください。