AWS WAF + CloudFront とは
AWS WAFの役割
CloudFrontとの連携メリット
CloudFrontは、AWSが提供するコンテンツデリバリーネットワーク(CDN)です。
CDNとは、Webサイトやアプリなどのコンテンツを世界中の配信拠点(エッジサーバ)にキャッシュすることで、ユーザーに最も近い拠点からコンテンツを配信することができるサービスです。
ですので、WAFとCloudFrontはWebサイト、アプリを導入するうえでセキュリティとパフォーマンスの両面で欠かせない重要なサービスとなります。
WAFとCloudFrontを組み合わせることで、以下のような相乗効果が得られます。
- エッジでの保護:世界中のエッジロケーションで攻撃をブロック
- レイテンシの削減:ユーザーに近い場所での処理により応答速度向上
- DDoS耐性の向上:分散された攻撃に対する強固な防御
- コスト効率:オリジンサーバーへの負荷軽減によるコスト削減
この組み合わせにより、安全で快適なユーザ体験を実現することができます。
環境の構築と基本設定
環境準備
ここから実際にAWSコンソールで実装した場合にはどのようになるのかについて説明します。
今回は、シンプルなWebサイトを例に進めていきます。webコンテンツは既に作成しております。

1. CloudFrontディストリビューションの作成
AWSコンソールでCloudFrontサービスにアクセスし、新しいディストリビューションを作成します。

オリジンには、保護したいウェブサイトやアプリなどのコンテンツが存在する場所を指定します。
今回はS3に静的なWebサイトをホスティングしましたので、そちらを指定して設定しております。
その他にもビヘイビアやエラーページ等の設定も行っております。

設定後はオリジン タブで確認できます。

今回の私が構築したwebサイトにアクセス

2. WAF Web ACLの作成
次に、AWS WAFでWeb ACL(Web Access Control List)を作成します。Web ACLは、トラフィックを許可またはブロックするルールの集合体です。
Web ACLは、AWSコンソールでWAFサービスにアクセス後、左メニューからWeb ACLsを選択し、”Create web ACL” から作成します。

■ ステップ1
web ACLの名前や紐づけるリソースを設定します。保護できるリソースは下記です。
- Application Load Balancer
- API Gateway
- AppSync
- CloudFront Distribution
- CloudFront Distribution Tenant
- Amplify Application
今回はCloudFrontですので、Global resourcesを選択し、先ほど作成したCloudFrontを紐づけております。

■ ステップ2
WAFに適用するルールを追加することができます。
今回は、カスタムルールでレート制限のルールを作成致しました。

● マネージドルール設定
今回はカスタムルールで作成しましたが、AWS WAFにはAWS側で既に用意されているルールもございます。
マネージドルールを活用することで、簡単に基本的な保護を実装できます。
AWS側で既に用意されているルールには、下記のようなものがございます。
- Core Rule Set
ウェブアプリケーションに一般的に適用されるルールが含まれています。これにより、OWASPの出版物に記載されている脆弱性を含む、幅広い脆弱性の悪用から保護がされます。 - Known Bad Inputs
既知の悪意のあるリクエストパターンからブロック - IP Reputation List
Amazonの脅威インテリジェンスに基づいたルールが含まれています。ボットやその他の脅威に関連するソースを自動ブロック上記の他にも多数のマネージドルールが用意されています。
これらのマネージドルールを適用するだけで、多くの一般的な攻撃から保護できます。
■ ステップ3
設定したルールの優先順位を設定することができます。ルールは上から順に評価します。今回はルールが1つのみなのでこの設定は行いません。

■ ステップ4
Amazon CloudWatch メトリクスを使用してWAFの動作状況を監視できるようにします。これにより、ブロックされた攻撃の詳細や、誤検知の有無を確認できます。

■ ステップ5
最後は設定値の確認と作成になります。
適切に設定がされていることを確認後、下部にある “Create web ACL” ボタンからweb ACLを作成します。
これでCloudFrontとWAFの関連付けの設定ができましたので、webコンテンツの保護をすることができました。
ブルートフォース攻撃検証
最後に設定したWAFが適切に動作するのかを検証します。
上記でレート制限ルールを適応したため、今回はブルートフォース攻撃の検証を致します。
ブルートフォース攻撃とは
検証方法
レート制限ルールでは、2分間で10以上のアクセスが来た際にブロックするというルールを適用したため、それ以上のリクエストを投げた際に特定のIPアドレスからの過度なリクエストが制限されることを確認します。
検証
まず下記スクリプトを実行し、curlコマンドを5秒の間隔で10回実行しました。
# 連続リクエストのテスト
@echo off
setlocal
set "total_requests=10"
set "interval_seconds=5"
set "url=https://your domain name"
echo Starting test: 2 minutes / 10 requests = 1 request every %interval_seconds% seconds
for /L %%i in (1,1,%total_requests%) do (
echo [%%i] Sending request to %url%
curl -s -o NUL -w "Status: %%{http_code}\n" %url%
if not %%i==%total_requests% (
timeout /t %interval_seconds% /nobreak >nul
)
)
echo.
echo Test complete.
pause
その後ブラウザでアクセスを試してみると、
下記のようにブロックがされることを確認できました。

また、ブルートフォース攻撃には地理的制限(ジオブロッキング)も効果的です。特定の国からのアクセスが不要な場合は、CloudFrontの地理的制限機能と組み合わせて使用することもお勧めします。
まとめ
いかがでしたでしょうか?AWS WAFとCloudFrontの組み合わせにより、比較的簡単にwebサイト・アプリの強固なセキュリティ対策を実装できることがお分かりいただけたと思います。
特に、AWS Managed Rulesを活用することで、専門的な知識がなくても基本的な攻撃から保護できる点は大きなメリットです。また、CloudFrontとの連携により、セキュリティ向上と同時にパフォーマンスの改善も実現できます。
重要なのは、一度設定して終わりではなく、継続的な監視と改善を行うことです。攻撃手法は日々進化しているため、定期的な見直しと最新の脅威情報への対応が欠かせません。
AWS WAF + CloudFrontは、運用負荷を抑えながらも高いセキュリティレベルを維持したい企業にとって、非常に有効な選択肢と言えるでしょう。まずは小さな環境から始めて、徐々に本格的な運用に移行することをお勧めします。
お役立ち資料をダウンロード
「AWS セキュリティ対策ガイド」のダウンロードをご希望のお客様は、
以下必要事項をご入力ください。


