LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログ

アラートは鳴ってないのに突如403が多発… AWS WAFマネージドルール更新の影響とその対応について

SRE兼バックエンドエンジニアの高良です。 今回はAWS WAFの運用で、AWSマネージドルールのアップデートにより発生した誤ブロックとその対応について書いていきます。

発生した問題

勤務中、サービスにアクセスすると403で弾かれてしまう報告が社員から届きました。 ただ、外形監視のアラートは鳴っておらず、全員の環境で再現する訳でもなかったため、原因特定までに少し時間を要してしまいました。

調査を進めたところ、以前構築されたWAFブロック数をカウントするダッシュボードのおかげで、WAFの特定ルールのブロック数が異常に増加していることを確認できました。 CloudWatch Metric Mathを利用してAWS WAFのマネージドルールのブロック数を可視化する方法を解説 - LCL Engineers' Blog

結果、弊社で利用しているアナリティクスツールの挙動がWAFのマネージドルールに引っかかり、一部ユーザーがブロックされる影響が出ていることが判明しました。

対応

AWSサポートにも問い合わせ、下記2つの対応を取ることに決定しました。

①マネージドルールによる大量ブロックが続いた場合はアラートを飛ばす

今回のように、AWSマネージドルールによる意図しないブロックが発生した場合は、アラートを飛ばしてオンコール担当者が確認できる体制を整えました。 一般ユーザーにも影響が出る変更の場合、攻撃のリクエストよりもかなり多い数のブロックになるため、その辺りを閾値として設定しています。

下記のような構成でアラートを飛ばしています。

CloudWatch Alarm → Mackerel チェック監視 → Pagerduty → 担当者

Mackerelのチェック監視APIを使うことで柔軟にアラートを制御することができました。

②マネージドルール更新通知のSNSトピックをサブスクライブする

AWSマネージドルールの更新については、AWS公式の専用SNSトピックをサブスクライブすることで、1週間前に通知が受け取れることをサポートから教えて頂きました。

マネージドルールグループに対する新しいバージョンと更新の通知を受け取る - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

こちらは直接の解決策にはなり得ませんが、同じ事象が発生した場合に気付けるスピードが上がります。

まとめ

AWSマネージドルールはWAF運用において強力なツールですが、今回の経験から、そのアップデートが意図しないブロックを引き起こす可能性があることを学びました。

AWS側で変更タイミングが管理され、かつ自社サイトに対して障害などの影響を及ぼしかねない設定については、リスクとリターンを理解してそれなりの対策をした上で運用していきたいと思います。