みなさん、こんにちは。サニービュー事業部の小寺です。
いよいよ、今日から6月ですね。
みなさんの中には、AWS WAFを使っている方も多いのではないでしょうか。
AWS WAFを導入して、マネージドルールを使って運用していると誤検知が起きてしまった経験をお持ちの方、または、決まったIPアドレスで制御をかけたいという要望もありますよね。
そんなときに、特定のIPアドレスをホワイトリストとして、リクエストを許可する方法を紹介します。
WAF v2で試しています。Web ACLはすでに作成済としています。
■IPセットを新規に登録
AWS WAFの画面から「IP sets」をクリックします。
既に設定がある場合、一覧に表示がされます。
新規に登録する場合、「Create IP set」をクリックします。

・IP set nameには登録する名前を入力します。ここでは「Test」としておきます。
・Regionには、IPセットを登録するリージョンを選びます。
CloudFrontと連携する場合は「Global(CloudFront)」を選択し、CloudFront以外の場合は、対象リージョンを選択します。
・IP versionはIPv4とIPv6のどちらかを選びます。
IPv4 アドレス 192.0.2.44 を指定するには、「192.0.2.44/32」と入力します。
IPv6 アドレス 0:0:0:0:0:ffff:c000:22c を指定するには、「0:0:0:0:0:ffff:c000:22c/128」と入力します。
IPv4 アドレス範囲 192.0.2.0 ~ 192.0.2.255 を指定するには、「192.0.2.0/24」と入力します。
IPv6 アドレス範囲の 2620:0:2d0:200:0:0:0:0〜2620:0:2d0:200:ffff:ffff:ffff:ffff を指定するには、「2620:0:2d0:200::/64」と入力します。
・IP addressesに該当するIPを入力します。
「Create IP set」をクリックします。

画面に「Success」と表示され、一覧に先ほど登録したIPセットが追加されます。

ここまでの作業でホワイトリスト用のIPアドレスの登録ができました。
■WAFのルールにホワイトリストを追加
続いて、先ほど作成したIPセットをWAFのルールに追加します。
AWS WAFの画面から「Web ACLs」を選びます。紐づけするルールを設定します。「Add rules」より「Add my own rules and rule groups」を選びます。

次に、Rule type の設定画面で ホワイトリスト化された IP アドレスからのアクセスを許可するため、以下の通り入力します。

・Rule typeには「IP set」を選びます。
・Ruleはルール名を入力します。ここでは、「Test」としておきます。
・IP setについて、先ほど登録した「Test」のIP setをプルダウンから選びます。
・IP address to use as the originating addressはアクセス元として「Source IP address」を選びます。
※「IP address in header」を選ぶとX-Forwarded-Forの設定が可能です。
ヘッダーの最初のアドレス、最後のアドレス、または任意のアドレスとマッチする場所を選ぶことができます。
・Actionは「Allow」を選びます。
今日はホワイトリストの設定ですが、もし、特定のIPアドレスをブロックしたいときは、「Block」を選ぶと設定ができます。
「Add rule」をクリックします。「Success」が表示され、優先したいルールの順番を決めます。

優先したいルールを選び、「Move up」をクリックすると、より優先順位が高くなります。「Move down」をクリックすると、より優先順位が低くなります。
上にあるルールほど優先されるので、順位つけをした後、「Save」をクリックします。
※ここで紹介したのは、他のマネージドルールが存在するWebACLでの画面イメージですが、ホワイトリストだけにアクセスを絞るために、作成したルールの Action は「Allow」を選択、Default action は「Block all requests that don’t match any rules」を選択しましょう。こうすれば、このルールにマッチしなかった IP アドレスはブロックする動作になります。
これで設定は完了です。
実際にアクセスが可能なことを確認しましょう。
■AWS WAFの利用料
AWS WAFの料金は、固定部分(Web ACL数、ルール数)と従量部分(リクエスト数)で構成されます。先ほど追加したルールやWeb ACLは以下の料金で利用ができます。
リソースタイプ | 料金 |
Web ACL | 5 USD /月 |
ルール | 1 USD /月 |
リクエスト | 0.6 USD /100 万リクエスト |
■まとめ
AWS WAFを使って、ホワイトリストからのアクセス許可をする方法について
お伝えしました。誤検知の対処方法としても活用ができるのではないかと思います。
実は、誤検知の対応として、対処が必要になったので手順を試してみました。
マネージドルールなので、WAFの運用でコストがかかるケースは多くはないと思いますが、以下のようなケースで対応が必要に可能性もあります。
・アプリケーションのリリースによる影響
テストしたが、想定されていなかったアクセスパターンで誤検知が発生
・マネージドルールや機械学習によるルール更新
SunnyCloudでは、セキュリティ最適化のソリューションも提供しております。
AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!