1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS WAF】なぜか本番環境だけ403エラーが発生

Last updated at Posted at 2023-09-02

実務で扱っているプロダクトが、添付ファイル付きのマスタデータの保存時に403エラーを返すようになっていました。
ローカルや検証環境では再現せず・・・長期戦を覚悟しかけていたところ、本番環境でのみ導入しているAWS WAFのマネージドルールが原因であることが分かりました。

今回の教訓

  • AWS WAFのマネージドルールによって正常なリクエストが意図せずにブロックされてしまう場合がある。
  • マネージドルールのSizeRestrictions_BODYが有効な場合、リクエストボディが8KBを超えるリクエストは全てブロックされるため要注意。

原因特定までの経緯

ファイル添付機能があるデータの保存時には毎回403が発生していたため、S3の認証周りの不備か?と探っていましたが、ファイル添付なしでもPOSTするデータのサイズが比較的大きい場合には403が発生することに気づきました。
そして同様の事例がないか調べていたところ、よくある事例だそうで・・・

AWS WAFのマネージドルールSizeRestrictions_BODYが原因と判明しました。

AWS WAFのマネージドルール

AWS WAFでは、いちいち利用者側でアクセスの許可/ブロックのルールを定義せずとも、AWSがデフォルトで用意してくれているルールセット、マネージドルールを適用することができます。その一つがAWSManagedRulesCommonRuleSetです。

このAWSManagedRulesCommonRuleSetには一般的によくある不正アクセスから守ってくれるルールが多数定義されており、その中の一つにSizeRestrictions_BODYというものがあります。これによりリクエストボディが8KBを超えるリクエストは全てブロックされてしまっていました。

対策

リクエストボディが8KBを超えうるURIが非常に多く存在するため、今回はこのSizeRestrictions_BODYというルールを無効にする対応を取りました。8KBを超えうるURIが少数の場合はスコープダウンステートメントを使用してWAFの検査対象外とすることもできるそうです。

補足

調べたところ、WAFによって意図せずに正常なリクエストをブロックしてしまう事例はSizeRestrictions_BODY以外にもあるみたいです。(特にファイルアップロード系で引っかかることが多いそう)
適用しているルールセットは把握しておくようにします。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?