SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

CloudFront + WAF + Shield — エッジでのセキュリティ多層防御

CloudFrontにWAFを適用してSQLインジェクション・XSSをブロックし、AWS ShieldでDDoSを防御する多層エッジセキュリティの設計、WAFルールグループの組み合わせ、Shield Advancedの自動DDoS軽減を解説。

一言結論

CloudFrontにWAFとShieldを組み合わせたエッジ多層防御では、WAF WebACLをus-east-1で作成する制約が落とし穴になりやすく、マネージドルールグループの優先度設計がブロック精度を左右する。

エッジセキュリティの構成

インターネット

AWS Shield(DDoS保護)← 自動でCloudFrontに適用(Standard)

Amazon CloudFront(CDN + エッジロケーション)

AWS WAF(L7フィルタリング)← CloudFrontに直接アタッチ

オリジン(ALB / S3 / API Gateway)

オリジン側WAF(オプション)

AWS WAF のCloudFront 統合

CloudFrontに関連付けるWAF WebACLは us-east-1(バージニア) で作成する必要がある。

# us-east-1 で WAF WebACL を作成
aws wafv2 create-web-acl \
  --region us-east-1 \
  --name "cloudfront-waf" \
  --scope CLOUDFRONT \
  --default-action Allow={} \
  --rules '[
    {
      "Name": "AWSManagedRulesCommonRuleSet",
      "Priority": 1,
      "OverrideAction": {"None": {}},
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesCommonRuleSet"
        }
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "CommonRuleSetMetric"
      }
    }
  ]' \
  --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=cloudfront-waf

WAF マネージドルールグループの組み合わせ

基本構成(推奨):
  AWSManagedRulesCommonRuleSet:
    → OWASP Top 10 の一般的な脅威
    → SQLインジェクション、XSS、ディレクトリトラバーサル等

  AWSManagedRulesKnownBadInputsRuleSet:
    → 既知の悪意のある入力パターン
    → Log4Shell等の脆弱性エクスプロイト試行

  AWSManagedRulesAmazonIpReputationList:
    → AWSが収集した悪意のあるIPリスト
    → ボット、スキャナー、TorノードのIPをブロック

  AWSManagedRulesBotControlRuleSet:
    → ボットトラフィックの検出・制御
    → スクレイパー、クローラー等をブロック

追加検討(ユースケースにより):
  AWSManagedRulesSQLiRuleSet: SQLインジェクション特化
  AWSManagedRulesLinuxRuleSet: Linuxシステムへの攻撃パターン
  AWS-AWSManagedRulesAnonymousIpList: Proxy/VPN/Torからのアクセス制御

カスタムルール設定例

# レートベースルール(IPごとの分あたりリクエスト制限)
aws wafv2 create-web-acl \
  --region us-east-1 \
  --name "rate-limit-waf" \
  --scope CLOUDFRONT \
  --rules '[
    {
      "Name": "RateLimitRule",
      "Priority": 1,
      "Action": {"Block": {}},
      "Statement": {
        "RateBasedStatement": {
          "Limit": 1000,
          "AggregateKeyType": "IP"
        }
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RateLimitMetric"
      }
    }
  ]'
# 地理的制限ルール(特定国からのアクセスをブロック)
{
  "Name": "GeoBlockRule",
  "Priority": 2,
  "Action": {"Block": {}},
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": ["CN", "RU", "KP"]
    }
  }
}

AWS Shield Standard vs Advanced

Shield Standard(無料・自動適用):
  → CloudFront, Route53 に自動適用
  → L3/L4 DDoS攻撃を軽減(SYN/UDPフラッド等)
  → 24/7の自動防御

Shield Advanced(月$3,000):
  → ALB, ELB, EC2, Global Acceleratorにも対応
  → L7 DDoS攻撃の軽減(WAFと統合)
  → AWS DDoS Response Team(SRT)への24/7アクセス
  → DDoS攻撃によるAWS料金の増加分を補償(コスト保護)
  → リアルタイムの攻撃可視性
  → 自動アプリケーション層(L7)DDoS軽減

CloudFront の追加セキュリティ設定

# HTTPS強制(HTTP → HTTPS リダイレクト)
aws cloudfront create-distribution \
  --distribution-config '{
    "DefaultCacheBehavior": {
      "ViewerProtocolPolicy": "redirect-to-https",
      "MinTTL": 0
    }
  }'

# セキュリティヘッダーの追加(Response Headers Policy)
aws cloudfront create-response-headers-policy \
  --response-headers-policy-config '{
    "Name": "security-headers-policy",
    "SecurityHeadersConfig": {
      "StrictTransportSecurity": {
        "Override": true,
        "IncludeSubdomains": true,
        "Preload": true,
        "AccessControlMaxAgeSec": 31536000
      },
      "ContentTypeOptions": {"Override": true},
      "XSSProtection": {
        "Override": true,
        "Protection": true,
        "ModeBlock": true
      },
      "FrameOptions": {
        "Override": true,
        "FrameOption": "DENY"
      }
    }
  }'

WAF ログの分析

# WAF ログをS3に保存
aws wafv2 put-logging-configuration \
  --logging-configuration '{
    "ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:global/webacl/cloudfront-waf/xxx",
    "LogDestinationConfigs": ["arn:aws:s3:::my-waf-logs-bucket"],
    "RedactedFields": [
      {"SingleHeader": {"Name": "Authorization"}},
      {"SingleHeader": {"Name": "Cookie"}}
    ]
  }'

試験頻出ポイント

シナリオ回答
CloudFront用WAF WebACLのリージョンus-east-1(バージニア)必須
DDoS攻撃のコスト保護Shield Advanced
SQLインジェクション・XSSを自動ブロックAWSManagedRulesCommonRuleSet
特定IPの大量リクエストをブロックWAFレートベースルール
L3/L4 DDoS保護(無料)Shield Standard(自動適用)

まとめ

CloudFront + WAF + ShieldのエッジセキュリティはL3〜L7の脅威を多層で防御する。WAFのマネージドルールグループを活用してSQLi/XSS等の一般的な攻撃を、ShieldでDDoSを防ぐ。CloudFront用WAFはus-east-1で作成することを忘れずに。