AWS WAFとAmazon CloudFrontを連携する方法とは?AWS WAF運用の注意点も紹介

AWS WAFは、AWS環境のWebアプリケーションを保護するために欠かせないセキュリティサービスです。特に、AWSのコンテンツデリバリーネットワークであるAmazon CloudFrontと連携させることで、高度なセキュリティ対策が可能になります。

しかし、AWS WAFをCloudFront上で設定する方法がわからず、悩んでいる方も多いのではないでしょうか。

この記事では、Amazon CloudFrontでAWS WAFを設定する手順を、わかりやすく解説していきます。さらに、設定後に注意すべき課題についても触れるので、ぜひ最後までご覧ください。

目次

AWS WAFとAmazon CloudFrontとは?

AWS WAFとAmazon CloudFrontを連携する方法を紹介する前に、まずそれぞれのAWSサービスについて簡単に説明します。

AWS WAFとは?

AWS WAFとはAWSが提供するWeb Application Firewall(WAF)で、AWS環境のWebアプリケーションをサイバー攻撃から守るセキュリティサービスです。代表的な防御できるサイバー攻撃としてSQLインジェクションやクロスサイトスクリプティング(XSS)などが挙げられます。

こういったサイバー攻撃は情報漏えいやWebサイトの改ざんなどの被害を引き起こす恐れがありますが、AWS WAFを導入することでサイバー攻撃によるリスクを抑えることができます

AWS WAFについてこちらの資料にまとめたので、ぜひダウンロードしてみてください。

Amazon CloudFrontとは?

Amazon CloudFrontは、AWSが提供するコンテンツデリバリーネットワーク(CDN)です。CDNとは、Webサイトやアプリなどのコンテンツを世界中の配信拠点にキャッシュ(コピー)し、ユーザーに最も近い拠点からコンテンツを配信するサービスです。

Amazon CloudFrontを導入することで、世界中に分散されたエッジロケーションと呼ばれるデータセンターのネットワークを経由して、コンテンツを配信することができます

オリジンサーバからコンテンツを都度取得する必要がなくなり、ユーザーに近い場所から配信できるため、遅延を短縮しWebコンテンツの表示速度を向上させることができます。

AWS WAFとAmazon CloudFrontを連携する方法

AWS WAFを使ってAmazon CloudFrontを保護することができます。ここではAWS WAFとAmazon CloudFrontを連携する方法をわかりやすく解説します。

AWS WAF側でWeb ACLを作成する

通信の制御を行うためにAWS WAFの検知ルールを設定する必要があります。その前に、まずWeb ACL(Web Access Control List)と呼ばれる検知ルールの箱のようなものを作成します

Web ACLの作成方法は下記の通りです。

  1. AWS Management ConsoleからAWS WAFコンソールを開き、“Create Web ACL”でWeb ACLを作成します。
  2. Web ACLの名前と説明をそれぞれ“Name”と“Description – optional”に入力します。“CloudWatch metric name”はデフォルトのままで問題ありません。
  3. “Resource Type”と”Region”を選択してください。AWS WAFでAmazon CloudFrontを保護するので、“CloudFront distributions”を選んでください。この場合、Region(リージョン)が自動的に“Global(CloudFront)”になるので追加の設定は不要です。
  4. 必要に応じて“Associated AWS resources – optional”で“Add AWS resources”を選択して追加で保護したいAWSリソースを登録してください。
  5. “Next”を押して次のステップに進みます。

AWS WAFのルールを追加する

Web ACLを作成したら、次はAWS WAFに検知ルールを追加します。AWS WAFのルールはステートメントとアクションの2つの部分で構成されています。AWS WAFルールの詳細については、こちらの記事をご参照ください。

AWS WAFのルールの追加方法は下記をご参照ください

  1. “Add rules and rule groups”のページで、“Add rules”、“Add my own rules and rule groups”、“Rule builder”、“Rule visual editor”の順に選択します。
  2. “Name”に検知ルールの名前を入力します。
  3. “Type”で“Regular rule”を選択します。DDoS攻撃を対策するレートベースルールを作成する場合は“Rate-based rule”を選択します。
  4. “If a request”で“matches the statement”を選択します。ほかのステートメントやステートメントの組み合わせを利用する場合もここで設定できます。
  5. “Statement”の“Inspect”でAWS WAFで検査する部分を選択します。通信の本文を検査した場合は“Body”にします。Body以外にも、“JSON body(JSON 本文)”、“Headers(ヘッダー)”、“Cookies”なども選択できます。
  6. “Match type”を選択します。完全一致のみを検知する場合は“Exactly matches string”を選びます。
  7. “String to match”にAWS WAFで検索したい文字列を入れます。
  8. “Action”でこのルールのアクションを選択します。通信を遮断したい場合“Block”にします。
  9. “Add rule”をクリックしてルールを追加します。

AWS WAFルールの優先順位を調整する

ルールの設定が完了したあと、それぞれのルールの優先順位を下記のように調整します

  1. ルールの設定が終わったあと、”Add rules and rule groups”ページで”Next”を選択します。
  2. “Set rule priority”ページでルールやルールグループを”Move up”か”Move down”で移動できます。上になればなるほど優先度が高くなり、ルールが優先的に処理されます。
  3. “Next”をクリックしCloudWatchのメトリクス名を決めます。ここはデフォルトのままで問題ありません。
  4. “Next”を押して”Review and create web ACL”ページで設定内容を改めて確認します。問題がなければ”Create Web ACL”を選択しWeb ACLとルール設定が完了となります。

Amazon CloudFront側で設定する

AWS WAF側の設定を完了したあと、Amazon CloudFront側の設定を行います。下記の手順に沿って設定を行いましょう!

  1. AWSコンソールからAmazon Cloudfrontへ移動し、”CloudFront Distributions”画面へ遷移します。
  2. “General”の”Edit”の順番でクリックします。
  3. “AWS WAF Web ACL”を最初のステップで作成したWeb ACLの”Name”に変更します。

設定が終わり次第、AWS WAFのWeb ACLに戻り、”Overview”からリクエストの結果(Allow/Count)のグラフを確認してください。前のステップで設定したルールが作動していることを確認できれば、設定は成功です。

AWS WAFの運用には注意が必要

AWS WAFを導入することで、Amazon CloudFrontを保護することができますが、AWS WAFを導入するだけで安心してはいけません。AWS WAFを運用する必要があります。

ここではAWS WAFを運用する上で注意すべきことを2つ紹介します。

誤検知発生の可能性がある

誤検知とは、正常な動作や通信を不正アクセスとして誤って判定することです。通常のWeb利用者(閲覧者)がWebサイトやWebサービスにアクセスできなくなるため、顧客の不信感を招いたりクレームにつながったりする可能性があります。さらに、売上機会の損失にもつながる恐れがあります。

誤検知を防ぐためには、AWS WAFのルールを細かく調整する必要があります。ルールを緩めすぎるとセキュリティの確保が難しくなるので、セキュリティと誤検知のリスクのバランスを取りながらルールの調整を行わなければなりません

ルールの定期メンテナンスが必要

最新の攻撃手法に対応するためにAWS WAFに設定したルールを定期的に更新する必要があります。ただし、ルールの更新作業にはセキュリティに関する専門知識が求められるため、自社ですべてを対処することが難しい場合もあります。

AWS WAFのマネージドルールを利用する場合、ルールのメンテナンス業務が楽になりますが、ルールのバージョン管理という作業が増えます。マネージドルールの更新時期や内容を自ら確認し、必要な場合は更新を行わなければなりません。

マネージドルールを自動更新に設定することも可能ですが、マネージドルールの更新によってもともとAWS WAFを通過できたアクセスが遮断される恐れがあるので、検知ログの確認や誤検知対応などの作業が増えてしまいます。

AWS WAFの運用を楽にする:AWS WAF自動運用サービス「WafCharm」

AWS WAFの運用に手が回らないと感じる場合は、AWS WAFの自動運用サービス「WafCharm」の利用がおすすめです。WafCharmは個々の環境に合わせて最適なルールを設定するので、ルール作成の手間を大きく削減することができます。

ルールの更新や運用はもちろんWafCharmが対応するので、セキュリティやAWS WAFに詳しい人材が社内に足りなくてもAWS WAFを楽に運用することができます。

さらに、誤検知対応をはじめカスタムルールの追加が必要な場合でも、WafCharmの日本語テクニカルサポートが代行するので、ユーザー側での調整が不要です。ルールが更新・追加されたあとに検知結果を確認すれば良いので、担当者の作業を大幅に軽減できます。

WafCharmの機能や詳細について資料にまとめたので、こちらよりダウンロードしてください。