🔧

【AWS WAF】海外からの怪しいアクセスが多すぎたのでWAFのルール設定を見直した話

に公開

Social Databank Advent Calendar 2025 の11日目です。

こんにちは 😃 tatata-keshiです❗

以前、自分が保守運用を担当していたサービスでAWS WAFのルール設定を見直す機会がありました。今回はその時の話を紹介します。

WAF設定を見直すことになった背景

突然のToo many connections

ある日、本番のログにこのようなエラーログが流れてきました。

Illuminate\Database\QueryException: SQLSTATE[08004] [1040] Too many connections

このログはDB接続数の枯渇を示すLaravelのエラーログです。(このサービスはLaravelを使用しています)

このようなエラー発生しているということは相当数のアクセスがされている可能性が高いため、更なる原因を調べるためサービスをホストしているAWS側を調べてみることにしました。

その謎を解明すべく我々はアマゾン(ウェブサービス)の奥地へ向かった

アマゾンの奥地もといAWSコンソールを開いた私は、はじめにウェブACLのダッシュボードを確認しました。

ブラ...ジル...???

このサービスは一応海外からのアクセスは想定しておりますが、基本的に日本国内向けのサービスです。にもかかわらず、実際にアクセスしていた人たちの大半が地球の裏側からでした🇧🇷

また、問題の時間帯のアクセスをログエクスプローラーから確認しましたが、やはり大量のリクエストが海外から飛んできていました。
なお画像ではマスクされていますが、同一のIPからランダムにさまざまなページを開こうとしている形跡が見られました。

まあ色々言っていますが、結論としては地球の裏側からDDoS攻撃されていました
サービス側でエラーが出るなど明らかに影響が出ているため、対策のためにWAFルールを見直すことになりました。

WAFルールを見直してみた

とりあえず見るからに怪しいIPをブロックしてみよう

はじめに、短時間で大量に送っているなど見るからに怪しいIPをブロックするように設定しました。

IPによるWAFのルールセットは

  • 「WAFとShield」→「IPセット」からルールを適用するルールセットを作成
  • 「リソースと保護パック (ウェブ ACL)」から対象のウェブACLを選択し、「ルールを管理」→「ルールを追加」を選択
  • 「カスタムルール」→「IPベースのルール」からルールを作成

という手順でルールを追加できます。

海外からのアクセスはレート制限をかけてみる

IPリストを用いたブロック手法は、WAFログから手動で不審なIPを見つけリストに入れる必要があるため、メンテナンスの負担が大きいという問題がありました。
また、海外IPからの不審なアクセスは引き続き多く確認されていたためこのルールは十分に機能していないと言える状況でした。

しかし、大量の不審なアクセスが海外から送信されている状況ではあるものの、海外から正規のアクセスを行うケースは想定し慎重に検討する必要があります。

そのため、次に海外からアクセスに対してレート制限をかけるルールを追加してみました。

レート制限はカスタムルールから「レートベースのルール」を選択することで作成可能です。

しかし、このルールは期待した効果が得られませんでした。
レートベースのルールでは、大量の異なるIPからレート制限を超えない範囲でリクエストが送られ続けるケースに対応できなかったからです。

Challengeルールを適用してみた

これまで設定したルールでは不十分であったため、次に海外からのアクセスに対するChallengeルールを追加しました。

https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-captcha-and-challenge.html

上記の公式ドキュメントにもあるように、Challengeはクライアントセッションがbotではなくブラウザであることを検証する仕組みです。

併せて紹介されているCAPTCHAとは異なりクライアント側で追加の操作は求められずバックグラウンドで検証が行われるため、ユーザー体験を損なわずにセキュリティを強化できるメリットがあります。

もちろんChallengeルールは全ての攻撃を完全に防げるわけではありませんが、今回のケースでは非常に効果がありました。

実際にこのルールを適用した後からはbotリクエストがWAFで弾かれるようになり、冒頭のToo many connectionsのような大量のアクセスによるエラーは発生しなくなりました。

まとめ

今回の対応を通して、アクセス解析とWAFルールの正しい設定が、アプリケーションの安定運用に直結することを改めて実感しました。特に、単純なIPブロックやレート制限だけでは防ぎきれないタイプの攻撃も存在し、複数の防御手段を組み合わせる重要性を再認識しました。

また、AWS WAF の Challenge ルールはユーザー体験を損なわずに bot を排除できる点が非常に有効で、今回のケースでも大きな効果を発揮しました。

今回のように攻撃が顕在化してから初めて気づくケースも少なくありません。
サービスを運用している方は、ぜひ一度 WAF のルールやログを見直してみてください。
適切に設定することで、サービスをよりセキュアに、より安定して提供できるようになります。

ソーシャルデータバンク テックブログ

Discussion