0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS上のWordPressにCloudFront + WAFを適用した際のハマり事

0
Posted at

免責事項

  • 内容は記載時点のものです。
    • 将来的には、この方法は誤りになる可能性があります。
  • 大枠は実体験からくる事実ベースですが、下書きおよび細部はCopilot製なので、細部に誤りがあるかもしれません。
    • チェックはしていますが、見落としている可能性があります。

はじめに

AWS上で ALB + EC2 (WordPress) 構成で運用しているサイトに、CloudFront + WAF を適用しましたが、その際にいくつかハマったことがありました。

ここでは、ハマった内容と回避策を、備忘録として、 AWS公式情報や技術記事で裏付けた内容 と合わせて記録します。

CloudFront + WAFを適用することになった背景

当該サイトで、不定期に発生する DoS攻撃やBot対策 の必要性が高まったためです。
※背景についてはこれ以上は触れません。


ハマりポイントと対応策(+裏付け)

① 証明書の問題:CloudFrontとALBで同一証明書を使う罠

問題点

  • CloudFrontでカスタムドメインを使う場合、ACM証明書はus-east-1リージョンで発行必須
  • ALB側もHTTPSで利用する場合、ALBに証明書が必要
  • 同じ証明書を使うと、Route53の名前解決でCloudFrontにしか向かなくなる競合が発生。

対応策

  • 新しいALBを作成し、ワイルドカード証明書を割り当てることで回避。
  • CloudFrontには既存のルートドメイン証明書を設定し、名前解決の競合を防止。

裏付け


② WordPressトップページのキャッシュ問題

問題点

  • WordPressのトップURLは index.php が省略されているため、
    /」をキャッシュ対象にすると、ログイン状態やコメントフォームが正しく反映されず、表示崩れやリダイレクトループが発生。

対応策

  • TOPページはキャッシュ対象から除外。
  • 動的要素を含むページ(wp-admin/*, wp-login.php, wp-json/*)はキャッシュ禁止。

裏付け

  • AWS公式やQiita記事で「トップページや動的ページはキャッシュ対象外」が推奨3,4

③ WAFのマネージドルールとWordPressアップロードの衝突

問題点

  • AWS WAFのSizeRestrictions_BODYは、リクエストボディが8KB超でブロック(最近は最大64KBまで緩和可能)。
  • CrossSiteScripting_BODYは、ファイルメタデータやPOST本文に含まれるランダム文字列を誤検知することがある。
  • WordPressの画像・動画アップロードでこれらに抵触する確率が高い。

対応策

  • ルールの緩和とカスタムルールの追加で回避。

  • 以下のパスを除外:

    /wp-admin/async-upload.php
    /wp-admin/admin-ajax.php
    /wp-json/wp/v2/media
    /wp-admin/post.php
    

裏付け


補足

  • 各事象ごとに単独の情報はあるが、まとまっている情報は少ない模様
  • CloudFrontやWAF適用前に知っていれば、障害や手戻りを防げた。
  • 未来の自分のため、そして同じ課題に直面する方のために記録。

まとめ

  • 証明書の競合回避 → ALBにワイルドカード証明書を設定。
  • TOPページキャッシュ禁止/ はキャッシュしない。
  • WAFルール調整 → マネージドルールを緩和し、特定パスを除外。

AWSでWordPressを運用しつつ、CloudFront + WAFを適用する際は、
これらのポイントを事前に押さえておくとスムーズに移行できる(はず)


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?