bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. AWS WAFでレートベースのURLアクセス制限はできるのか?

AWS WAFでレートベースのURLアクセス制限はできるのか?

Feb 11, 2026 AWS bucket-sort

アプリ開発チームから、WAF を使ったアクセス制限について相談を受けました。

質問内容

AWS WAF で以下のようなアクセス制限は可能でしょうか?

  1. 特定の「存在しない URL」へのアクセスを、アクセスレートに応じてブロックしたい (例:.env など非公開ファイルへの執拗なアクセス)

  2. 特定の「存在する URL」へのアクセスを、アクセスレートに応じてブロックしたい (例:管理者ログインページへのブルートフォース的なアクセス)

調べてみた結果

結論から言うと、(1)(2)ともに AWS WAF で制御可能でした。

ポイントは以下の 2 つの機能を組み合わせることです。

  • Rate-based rule(レートベースルール)
  • URI パスのパターンマッチ(正規表現など)

(1) 存在しない URL へのアクセスをレートに応じてブロック

例えば以下のような、本来アクセスされることがない URL:

  • /.env
  • /wp-admin

これらに対しては、

  1. 正規表現マッチ条件で対象パスを検出 例:

    ^/\.env$
    ^/wp-admin
    
  2. Rate-based rule を適用し、一定時間内のアクセス回数が閾値を超えた場合にブロック

といった構成にすることで、たとえサーバー側で 404 や 302 を返していたとしても、 一定以上のリクエストを送ってくるクライアントを WAF レベルで遮断できます。

(2) 存在する URL へのアクセスをレートに応じてブロック

例えば以下のような URL:

  • /admin/login
  • /wp-login.php

こちらもやり方は同様で、

  1. URI パスに対して正規表現マッチ条件を設定
  2. Rate-based rule を適用

することで、一定時間内のアクセス回数が閾値を超えた場合にブロック可能です。

補足メモ

AWS WAF のルール判定は、

  • URI パス
  • ヘッダ
  • クエリ文字列

といった「リクエスト内容」を元に行われます。

つまり、

「存在する URL」か「存在しない URL」か

という違いは WAF にとっては区別がありません。

WAF はレスポンス(200 / 404 / 302 など)を見ないため、 どちらの場合も「対象 URL パターンを指定した Rate-based rule」で 同じ方法で制御することになります。

運用上の違い(閾値設定)

設定方法は同じですが、運用上の考え方は変わります。

対象URL 運用方針
/.env など 本来アクセスされない → 閾値を低めに設定しても誤検知のリスクは低い
/admin/login など 正常利用がある → 閾値を高めに設定、IP許可リスト併用が望ましい

管理者ログインページのような URL に対しては、

  • 自社オフィス
  • VPN
  • 固定IP

などを IP許可リスト(Allow rule) として先に定義しておくのが安全です。

注意点

AWS WAF 単体では、

レスポンスコード(404 や 302)を条件に制御することはできません。

そのため、 「404 が一定回数続いたらブロック」といった制御を行いたい場合には、

  • ALB アクセスログ
  • CloudFront ログ
  • Lambda@Edge 等のカスタム処理

との組み合わせが必要になります。

AWS WAF の料金メモ(2026年2月時点)

東京リージョンの場合:

  • Web ACL:$5.00 / 月
  • カスタムルール:$1.00 / ルール / 月
  • リクエスト処理料金:$0.60 / 100万リクエスト

今回のように、

URI Path にマッチする Rate-based rule を追加する

というケースは、 単純に「カスタムルールが 1 つ増える」扱いになります。

つまり、

  • ルール追加分:+$1.00 / 月

のみが固定的に増加します。

リクエスト単価自体は変わらないため、 URI 条件を追加したことによって課金単価が上がることはありません (※総リクエスト数が増えればその分の課金は発生)。

まとめ(社内回答用)

  • (1)(2)ともに AWS WAF で対応可能
  • Rate-based rule + URI パターンマッチで実現
  • レスポンスコードではなくリクエスト内容で制御
  • ルール追加コストは $1 / 月 程度

調査結果としては以上です。

AWS WAF セキュリティ
← 開発終了したNginx Unitが気になったので調べてインストールしてみた MySQL vs Auroraベンチマーク比較 (sysbench / db.t3.medium) →

Related Posts

  • 監査ログをDynamoDBに保存するlaravel-dynamodb-auditingパッケージの概要まとめ Mar 3, 2026
  • RDBのつもりでlaravel-dynamodbを使うとハマりそうなポイントを整理する Mar 1, 2026
  • Dockerを使ってDynamoDB LocalをWSL上のUbuntuで動かす Feb 28, 2026
  • Amazon Linux 2023のOS更新まわりの挙動を整理しておく Feb 20, 2026

Table of Contents

    • 質問内容
  • 調べてみた結果
    • (1) 存在しない URL へのアクセスをレートに応じてブロック
    • (2) 存在する URL へのアクセスをレートに応じてブロック
  • 補足メモ
  • 運用上の違い(閾値設定)
  • 注意点
  • AWS WAF の料金メモ(2026年2月時点)
    • まとめ(社内回答用)

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.