目次

AWS WAF 完全ガイド v2.0

初心者から実務者向けの包括的解説

AWS WAF(Web Application Firewall) は、Web アプリケーションへのアクセスを リクエストレベルで制御・監視 するマネージドセキュリティサービスです。CloudFront・ALB・API Gateway・AppSync・Cognito・App Runner・Amplify・Verified Access に統合でき、SQL インジェクション・クロスサイトスクリプティング・ボット・DDoS・アカウント乗っ取り攻撃を検出・ブロックします。本ドキュメントは、AWS WAF の仕組み・ルール体系・保護戦略・運用設定・ベストプラクティスを体系的に解説する完全ガイドです。

ドキュメントの目的

本ガイドは以下を対象としています:

  • セキュリティ初心者向け:Web アプリケーション脅威・なぜ WAF が必要か
  • Web アーキテクト向け:API Gateway・CloudFront・ALB 保護設計
  • DevSecOps 向け:WAF ルール・Firewall Manager による組織展開
  • セキュリティ管理者向け:ボット・詐欺・DDoS 検出・対応
  • 運用者向け:ログ分析・ルール チューニング・誤検知削減
  • 意思決定者向け:Cloudflare WAF・Akamai Kona との比較

2025-2026 年の AWS WAF エコシステム

  • Bot Control 地域拡張: 台北・バンコク・メキシコシティ
  • Web Bot Authentication(WBA): AI エージェント向け暗号化認証
  • Account Takeover Prevention(ATP): 認証情報スタッフィング検出強化
  • レート制限集約キー拡張: IP 以外の HTTP ヘッダ・Cookie・Query Arg
  • 簡素化コンソール体験: セキュリティ設定 80% 削減
  • Pre-configured Protection Packs: AWS 推奨ルール自動展開

目次

  1. 概要
  2. AWS WAF が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. Web ACL・Rules・Rule Groups
  6. マネージドルール
  7. Bot Control
  8. Fraud Control・ATP
  9. Rate-Based Rules
  10. CAPTCHA・Challenge
  11. カスタムルール設定
  12. ラベリング・ラベルマッチング
  13. Web ACL ロジック
  14. 主要ユースケース
  15. 設定・操作の具体例
  16. Firewall Manager
  17. CloudFront・ALB・API Gateway 統合
  18. ログ・可視化
  19. 容量単位
  20. 類似サービス比較
  21. ベストプラクティス
  22. トラブルシューティング
  23. 2025-2026 最新動向
  24. 学習リソース
  25. 実装例・ロードマップ
  26. 実装チェックリスト
  27. コスト・プライシング
  28. まとめ

概要

初心者向けメモ: AWS WAF は「Web アプリケーション前の賢い番兵」です。HTTP リクエストを分析し、悪意ある IP・SQL インジェクション・ボット・DDoS パターンを検出。マッチしたリクエストは ALLOW・BLOCK・RATE_LIMIT・CAPTCHA で制御します。

AWS WAF は、以下を実現する統合 Web アプリケーション保護プラットフォームです:

機能 説明
Layer 7 攻撃検出 SQL インジェクション・XSS・CSRF
ボット対策 スクレイパー・スキャナー・クローラー検出・ブロック
DDoS 対策 レート制限・リクエスト異常検出
詐欺対策 アカウント乗っ取り・不正アカウント作成検出
マネージドルール AWS・サードパーティによる継続更新ルール
カスタムルール ビジネス要件に応じた細粒度制御
リアルタイムログ CloudWatch Logs・S3・Kinesis へのログ転送

AWS WAF が解決する課題 {#課題}

1. Web 脆弱性の継続的脅威

課題:OWASP Top 10(SQLi・XSS 等)は毎年多数のインシデント WAF の解決:マネージドルールで既知パターン自動検出・ブロック

2. ボット攻撃による被害

課題:スクレイパー・ブルートフォース・在庫買い占め → 売上損失 WAF の解決:Bot Control で悪意ボット検出・リクエスト制限

3. Layer 7 DDoS 攻撃

課題:AWS Shield Standard は層 3-4 のみ、層 7 アプリケーション攻撃未対応 WAF の解決:レート制限・地理的フィルタリングで層 7 DDoS 緩和


主な特徴 {#特徴}

1. 複数保護リソース対応

✓ CloudFront(グローバルエッジ)
✓ ALB(Application Load Balancer)
✓ API Gateway(REST・HTTP API)
✓ AppSync(GraphQL)
✓ Cognito(ユーザープール)
✓ App Runner・Amplify・Verified Access

2. 3 層ルール体系

【Managed Rules】AWS 提供・継続更新
├── Core Rule Set(OWASP Top 10)
├── Bot Control(ボット検出)
├── ATP(Account Takeover Prevention)
└── IP Reputation Lists(既知悪性 IP)

【Custom Rules】ビジネス要件対応
├── IP フィルタリング
├── URI・Query マッチング
├── HTTP ヘッダ・Body 検査
└── Regex パターン

【Rate Limiting・Labels】リクエスト制限
├── IP・Header ごとのレート制限
└── ラベルベース複合制御

3. マネージドルール自動更新

AWS が継続的に更新(新規脆弱性・ボットパターン対応)。利用者は自動追従または特定版固定可能。


アーキテクチャ {#アーキテクチャ}

【図1】AWS WAF アーキテクチャ

graph LR
    subgraph "Client"
        User["ユーザー"]
        Bot["ボット"]
    end

    subgraph "AWS WAF"
        WebACL["Web ACL"]
        Managed["Managed Rules"]
        Custom["Custom Rules"]
        RateLimit["Rate-Based Rules"]
    end

    subgraph "Protected Resources"
        CF["CloudFront"]
        ALB["ALB"]
        APIGW["API Gateway"]
    end

    User --> WebACL
    Bot --> WebACL

    WebACL --> Managed
    WebACL --> Custom
    WebACL --> RateLimit

    Managed --> CF
    Custom --> ALB
    RateLimit --> APIGW

    CF --> User
    ALB --> User
    APIGW --> User

【図2】リクエスト評価パイプライン

sequenceDiagram
    participant Client
    participant WAF
    participant App

    Client->>WAF: HTTP Request
    WAF->>WAF: Evaluate Rules<br/>(Priority Order)
    WAF->>WAF: Add Labels<br/>Determine Action
    alt ALLOW
        WAF->>App: Forward Request
        App->>Client: Response 200
    else BLOCK
        WAF->>Client: Response 403
    else CHALLENGE
        WAF->>Client: CAPTCHA Page
    end

Web ACL・Rules・Rule Groups {#webacl}

1. Web ACL(Web Access Control List)

Web ACL は保護ポリシー。CloudFront・ALB・API Gateway に関連付け。

{
  "Name": "MyWebACL",
  "Scope": "REGIONAL",
  "DefaultAction": { "Allow": {} },
  "Rules": [
    {
      "Name": "RateLimitRule",
      "Priority": 0,
      "Action": { "Block": {} }
    }
  ]
}

2. Rules(ルール)

リクエストマッチング + アクションの組み合わせ。

Statement タイプ

  • IPSetReferenceStatement(IP リスト)
  • SqliMatchStatement(SQLi 検出)
  • XssMatchStatement(XSS 検出)
  • ByteMatchStatement(文字列マッチ)
  • RegexMatchStatement(正規表現)
  • RateBasedStatement(レート制限)

3. Rule Groups(ルールグループ)

複数ルールをグループ化。AWS Managed または Customer Managed。

【AWS Managed Rule Groups】
├── AWSManagedRulesCommonRuleSet
├── AWSManagedRulesBotControlRuleSet
├── AWSManagedRulesAmazonIpReputationList
└── AWSManagedRulesAtomicLeverageCustom...

マネージドルール(AWS Managed Rules) {#managedrulesaws}

Core Rule Set(CRS)

OWASP Top 10 対応。SQLi・XSS・CSRF・LFI・RFI 検出。

Amazon IP Reputation List

既知の悪質ボットネット・スキャナー・スパマー IP を自動ブロック。

Fraud Control

Account Takeover Prevention(ATP):認証情報スタッフィング・分散ログイン検出。


Bot Control {#botcontrol}

機能

スクレイパー・スキャナー・在庫買い占めボット・ステータスモニターを検出・制御。

Inspection Levels

Basic: 自己申告ボット・既知署名 Targeted: ブラウザフィンガープリント・JavaScript 確認・行動分析

2025 新機能:Web Bot Authentication(WBA)

AI エージェント向けの暗号化署名検証。正当な AI 迅速通過、悪意ボット検出。


Fraud Control・ATP {#fraudcontrol}

Account Takeover Prevention

検出パターン:
├── 既知漏洩認証情報使用
├── 大量ログイン試行
├── 複数 IP からのログイン
└── 異常地理・時間帯

CISA Known Exploited Vulnerabilities 統合。


Rate-Based Rules {#ratebasedrules}

基本的なレート制限

IP あたりの指定時間内リクエスト数制限。

{
  "RateBasedStatement": {
    "Limit": 2000,
    "AggregateKeyType": "IP"
  }
}

2025 拡張:複合集約キー

IP + Header + Cookie + Query Arg(最大 5 キー)の組み合わせでレート制限。

{
  "CustomKeys": [
    { "Header": { "Name": "X-Forwarded-For" } },
    { "Cookie": { "Name": "user_id" } },
    { "QueryArgument": { "Name": "api_key" } }
  ]
}

CAPTCHA・Challenge {#captchachallenge}

CAPTCHA アクション

ブロックの代わりに CAPTCHA 課題提示。

Challenge(v2)

軽量な JavaScript 実行確認。


カスタムルール設定 {#custom}

例1:特定 User-Agent ブロック

{
  "Name": "BlockBadBots",
  "Priority": 10,
  "Statement": {
    "ByteMatchStatement": {
      "SearchString": "BadBot/1.0",
      "FieldToMatch": { "SingleHeader": { "Name": "user-agent" } },
      "PositionalConstraint": "CONTAINS"
    }
  },
  "Action": { "Block": {} }
}

例2:地理的フィルタリング

{
  "Name": "AllowOnlyJapan",
  "Priority": 20,
  "Statement": {
    "GeoMatchStatement": { "CountryCodes": ["JP"] }
  },
  "Action": { "Allow": {} }
}

ラベリング・ラベルマッチング {#labels}

ラベル追加

前段ルールでマッチ時にラベル付与。後段ルールがそのラベル参照。

{
  "Labels": [{ "Name": "suspicious-eval-attempt" }]
}

ラベルマッチング(複合ルール)

{
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Key": "suspicious-eval-attempt"
          }
        },
        {
          "LabelMatchStatement": {
            "Key": "sql-injection-attempt"
          }
        }
      ]
    }
  }
}

Web ACL ロジック {#webacl-logic}

ルール評価順序

Priority 0 → 評価 → Match なら Action → 次へ

複数ルール Match 時:BLOCK が優先(セキュリティ First)


主要ユースケース {#usecases10}

  1. SQLi・XSS ブロック:Managed Rules で既知パターン自動検出・ブロック
  2. ボット対策:Bot Control で スクレイパー・スキャナー制御
  3. DDoS Layer 7 緩和:レート制限で 異常リクエスト数遮断
  4. Account Takeover Prevention:漏洩認証情報・ブルートフォース検出
  5. 地理的制限:国別アクセス制御
  6. API レート制限:API キー単位でのリクエスト数制限
  7. ファイルアップロード検査:.exe・.zip・.bat ファイルブロック
  8. Referer チェック(CSRF 対策):Referer ヘッダ不一致ブロック
  9. カスタムビジネスロジック:時間帯・ユーザー ID・特定 URI 制御
  10. ルール チューニング:誤検知削減・ホワイトリスト追加

設定・操作の具体例(CLI/SDK/IaC) {#cli}

1. Web ACL 作成(基本)

aws wafv2 create-web-acl \
  --scope REGIONAL \
  --region us-east-1 \
  --name MyWebACL \
  --default-action Allow={} \
  --rules '[...]'

2. ALB に Web ACL 関連付け

aws wafv2 associate-web-acl \
  --web-acl-arn arn:aws:wafv2:us-east-1:123456789012:regional/webacl/MyWebACL/a1b2c3d4 \
  --resource-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/...

3. ログ設定(CloudWatch Logs)

aws wafv2 put-logging-configuration \
  --logging-configuration '{
    "ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/MyWebACL/...",
    "LogDestinationConfigs": [
      "arn:aws:logs:us-east-1:123456789012:log-group:/aws/wafv2/MyWebACL"
    ]
  }'

4. Terraform IaC

resource "aws_wafv2_web_acl" "example" {
  name  = "example-web-acl"
  scope = "REGIONAL"

  default_action { allow {} }

  rule {
    name     = "RateLimitRule"
    priority = 0
    action   { block {} }

    statement {
      rate_based_statement {
        limit              = 2000
        aggregate_key_type = "IP"
      }
    }

    visibility_config {
      cloudwatch_metrics_enabled = true
      metric_name                = "RateLimitRule"
      sampled_requests_enabled   = true
    }
  }

  rule {
    name     = "AWSManagedRulesCommonRuleSet"
    priority = 1
    override_action { none {} }

    statement {
      managed_rule_group_statement {
        name        = "AWSManagedRulesCommonRuleSet"
        vendor_name = "AWS"
      }
    }

    visibility_config {
      cloudwatch_metrics_enabled = true
      metric_name                = "AWSManagedRulesCommonRuleSet"
      sampled_requests_enabled   = true
    }
  }

  visibility_config {
    cloudwatch_metrics_enabled = true
    metric_name                = "example-web-acl"
    sampled_requests_enabled   = true
  }
}

resource "aws_wafv2_web_acl_association" "alb" {
  resource_arn = aws_lb.example.arn
  web_acl_arn  = aws_wafv2_web_acl.example.arn
}

Firewall Manager による組織規模展開 {#firewall}

統制モデル

Organizations 管理アカウント
  └─ Firewall Manager Administrator Account
      ├─ WAF Policy 作成・定義
      ├─ 全メンバーアカウント自動展開
      └─ コンプライアンス監視

セットアップ

aws fms enable-org-admin-account \
  --admin-account 111111111111

CloudFront・ALB・API Gateway 統合 {#integration}

CloudFront(グローバル保護)

グローバルエッジで全世界から攻撃を検出・ブロック。オリジン負荷軽減。

ALB(リージョン保護)

リージョンレベルで Layer 7 攻撃検出。

API Gateway(API 保護)

REST API・HTTP API レベルのセキュリティ・レート制限。


ログ・可視化・監視 {#logging}

CloudWatch Logs 統合

リアルタイムログ転送。SQLi・ボット・レート制限トリガー可視化。

Athena クエリ例

SELECT COUNT(*) as block_count, clientip, terminatingruleid
FROM waf_logs
WHERE action = 'BLOCK'
  AND terminatingruleid LIKE '%SQLi%'
GROUP BY clientip, terminatingruleid
ORDER BY block_count DESC;

容量単位(WCU) {#capacity}

Web ACL の複雑さを数値化。1 Web ACL あたり 1,500 WCU が上限。

ルール種別 WCU
AWS Managed Rule Group 20-200
Custom Rule(Simple) 1-3
Custom Rule(Regex) 10-20
Rate-Based Rule 2

類似サービス比較 {#comparison}

特性 AWS WAF Cloudflare WAF Akamai Kona
形態 マネージド SaaS エンタープライズ
Bot 対策
マネージドルール
AWS 統合 ×
価格 従量課金 $200+/月 高い

ベストプラクティス {#bestpractices}

✅ 推奨

【初期段階】
✓ AWS Managed Rules(Core + Bot)最初に有効化
✓ Count モードでログ分析
✓ CloudWatch ダッシュボード作成

【2-4 週間】
✓ 誤検知分析・ホワイトリスト追加
✓ 本運用にシフト(Block モード)

【継続運用】
✓ CloudWatch ログ定期確認
✓ AWS Managed Rules 自動更新
✓ 四半期ごとにルール見直し

❌ アンチパターン

× すべてのリクエストを Allow
× ブロック前に Count モード長期化
× ルール優先度不適切
× ログを見ない
× Firewall Manager 非導入(複数アカウント)

トラブルシューティング {#troubleshooting}

症状 原因 解決策
正常ユーザーが頻繁にブロック ルール設定過度 Count モード検証・ホワイトリスト追加
ブロック実感なし ルール有効化 忘れ Web ACL リソース関連付け確認
CloudFront で WAF 非表示 スコープ指定エラー CLOUDFRONT スコープで作成
ログ出力なし ロギング設定漏れ CloudWatch Logs グループ指定確認

2025-2026 最新動向 {#latest}

  1. Bot Control 地域拡張(9 月):台北・バンコク・メキシコシティ追加
  2. Web Bot Authentication(WBA):AI エージェント向け暗号化署名認証
  3. レート制限集約キー拡張:IP 以外に Header・Cookie・Query Arg 対応
  4. 簡素化コンソール:セキュリティ設定 80% 削減、Pre-configured Packs
  5. ATP 強化:CISA KEV・Recorded Future 統合で漏洩認証情報検出精度向上

学習リソース・参考文献 {#resources}

公式ドキュメント

  1. AWS WAF Developer Guide
  2. AWS WAF API Reference
  3. AWS Managed Rules for AWS WAF
  4. AWS Firewall Manager
  5. AWS WAF Best Practices
  6. AWS WAF Pricing
  7. AWS Security Blog - WAF
  8. AWS WAF Fraud Control - Account Takeover Prevention

オープンソース・ベンダー資料

  1. OWASP Top 10 - Web 脅威標準
  2. ModSecurity - オープンソース WAF
  3. OWASP Core Rule Set - CRS ルール
  4. Cloudflare WAF - 競合製品
  5. Akamai Kona - エンタープライズ WAF

実装例・導入ロードマップ {#roadmap}

Week 1:基盤構築

Day 1: Web ACL 作成 → AWS Managed Rules(Core)有効化
Day 3: CloudFront・ALB 統合
Day 5: CloudWatch ログ設定
Day 7: ダッシュボード作成

Week 2-3:チューニング

  • Day 10: 誤検知分析
  • Day 15: ホワイトリスト追加
  • Day 21: カスタムルール追加
  • Day 28: 本運用移行(Block モード)

Week 4+:継続運用

  • 毎週:CloudWatch ログ確認・ブロック傾向分析
  • 毎月:AWS Managed Rules 更新確認・ルール調整
  • 四半期:セキュリティイベント振り返り

実装チェックリスト {#checklist}

【基本セットアップ】
☐ Web ACL 作成
☐ AWS Managed Rules(Core + Bot)有効化
☐ リソース関連付け(CloudFront/ALB/API Gateway)
☐ CloudWatch Logs ロギング設定

【ルール構成】
☐ Rate-Based Rules 設定
☐ 地理的フィルタリング(必要に応じて)
☐ カスタムルール作成

【運用準備】
☐ Count モード検証期間設定
☐ CloudWatch ダッシュボード作成
☐ アラート設定

【本運用】
☐ Block モード移行
☐ Firewall Manager 導入(複数アカウント)
☐ ログ分析パイプライン構築

【継続最適化】
☐ False Positive 削減
☐ ルール効率化(WCU 最適化)
☐ コスト監視

コスト・プライシング {#pricing}

料金構造

  • Web ACL: $5.00/月(リージョンあたり)
  • カスタムルール: $1.00/ルール/月
  • Managed Rule Group: $15.00/グループ/月
  • HTTP リクエスト: $0.60/百万リクエスト

月額概算例

【小規模】(10M リクエスト/月)
  Web ACL: $5
  Core Rule Set: $15
  Bot Control: $15
  Requests: $6
  ────────
  合計: $41/月

【中規模】(100M リクエスト/月)
  $200-250/月

まとめ {#summary}

AWS WAF は Web アプリケーション Layer 7 攻撃の最初の防御線 です。SQL インジェクション・XSS・ボット・DDoS・アカウント乗っ取りを検出・ブロックし、CloudFront・ALB・API Gateway に統合でき、マネージドルール・カスタムルール・レート制限を柔軟に組み合わせることで、ビジネス要件に応じた段階的な保護が実現できます。

核心ポイント

  1. 即時有効化: マネージドルール適用で既知脅威 90% をカバー
  2. 段階的展開: Count モード → チューニング → 本運用
  3. 継続更新: AWS が自動更新ルールで新脅威に対応
  4. 複合条件制御: ラベル・複合ステートメントで複雑な制御実現
  5. 組織規模展開: Firewall Manager で複数アカウント・リージョン統制

最終更新:2026-04-26
バージョン:v2.0