背景
2024/03現在の話。
2024に入って、botから急激なHTTPアクセスがあり、サービスが3分間程度死んでしまった。
ネットにあまり情報がなかったので残す。
サービスを設計する上での注意点をシェアすることが目的です。
細かいことを調べるのちょっとめんどくさくなったのでざっくり概算で記載します。
想定読者
AWS使っている
WAFを使っている
そこそこのリクエストがあるサービス
起こった事象
DDosAttackによる急激なアクセスがあり、サービスが3分間程度リクエストが5xx系になって、リクエストが捌けなくなった。
LBのログにはerror理由がWAFConnectionTimeoutとなっていた。
LBのログでロストしているものもある模様(WAFの処理ログとLBのアクセスログが一致しない)
対象のサービス特徴
どのようなサービスで事象が発生したかを共有したいので、サービスの主要なメトリクスを例示します。
当該の時刻の平均的なTotalReqCountは10M req/minくらいです。
事象が発生した時は、40M req/min くらいまでスパイクしました(10min程度)。
当該サービスのWAFにはAWSのマネージドルールも利用しており、
事象が発生した際の30M req ほどはマネージドルールによってBlockされたログがありました。
ベンダーからの回答
もちろん、AWSに事象を問い合わせ、何が起こったのか説明を求めました。
どうやら、WAFはELBのキャパシティに依存するものらしく、
1ノードで捌ける量には限界がある模様。
対策としては、事前にLBの暖気申請を行う必要があるらしい。
対策案
DDosを行ってくるエンドポイントには特徴がある気がします。(ちょっと分析した)
なので、DDosのLB対策案としては
- 当該のエンドポイントだけ分けてしまって、他のエンドポイントやサービスに影響が出にくいようにする
- 当該のエンドポイントだけ、 CDNでキャッシュして返せないか検討する
がアリかもなと思ってます。
雑な質疑応答にも真摯に対応してくださったAWSに感謝。