0
0

More than 1 year has passed since last update.

API GatewayにWAFを配置してIP制限を実施する

Posted at

はじめに

既存の構成にAWS WAFを追加してIP制限を実施しました。WAFはCloudFrontやALBと組み合わせて使われることも多いと思いますが、今回はAPI Gatewayの前段に配置する構成を試してみました。
以下の赤枠の部分です。
image.png
その他の構築については、以下の記事などで記載しているのでもし興味があればどうぞ。↓

以下の順序でWAFを作成していきます。

  1. IP Setの作成
  2. WEB ACLの作成

IP Setsの作成

今回はIPリストを作成しホワイトリスト方式でIPアクセス制限を実施する検証をしました。手順2のWEB ACLの作成画面にて対象のIPリストを選択するステップがあるため、先にIP Setを作成しておく必要があります。
WAFのコンソール画面からIP Setsを選択し、以下のように簡単にIPリストを作成できます。
image.png
(※上図では文字xを使っているため赤文字エラーが出ています。実際のIPを入力すればエラーは消えます)

Web ACLの作成

AWS WAF >> Web ACLsからWeb ACSを作成していきます。Associated AWS resourcesから対象のAPIを指定します。
image.png

次の設定ページではAdd my own rules and rule groupsを選択し、Rule typeIP Setとします。先ほど作成したIP Setを選択し、今回はホワイトリスト形式のIP制限を実施したいのでActionにAllowを選択します。
image.png

ルールの追加が完了したらデフォルトのACLアクションとしてBlockを選択します。これでホワイトリストに登録されていないIPからのリクエストはブロックされます。
image.png

今回適用しているルールは今作成した1つのみなので、優先順位はそのままNextをクリックします。
image.png

CloudWatchメトリクスの名前を設定します。リクエストのサンプリングもそのままONとします。
image.png

これで設定項目は以上です。最後にReviewしてCreateすれば約1分ほどでWAF(Web ACS)が適用されます。早い!!

動作確認

まずはIP Setに登録したホワイトリストに含まれるIPからリクエストを実施します。
image.png
無事にリクエストがAPI Gatewayまで届いています。

次にホワイトリストに含まれないIPからリクエストを実施します。
image.png
ステータス403Forbiddenが返ってきました。先ほど作成したWAFによってリクエストがブロックされていることが確認できました。ちなみのこのステータスコードやメッセージの中身はカスタマイズすることも可能です。

終わりに

WAFの構築がものすごく早く完了したことにまず驚きました。またバックエンドの仕組みをAWSサービスで構築している場合はネイティブに統合できるのもやはり便利です。
今回は簡単なIP制限を実施したのみでしたが、特定のHeaderにセットされる文字列を検知するようなルールを作成したり、もしくはAWSが用意しているマネージドルールでBot攻撃やマルアクセスを検知するようなルールを追加することも可能です。
サービス利用が拡大するとそれだけアクセス回数や攻撃対象となるリスクも増える可能性が高くなると思うでの、このように簡単にセットアップできるWAFをうまく活用して少しでもセキュアなWebサービスを構築していきたいです。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0