AWS WAF の Bot Control と不正防止 - ボット対策とアカウント乗っ取り防止の実装

Bot Control でスクレイパーや自動化ツールを検出し、ATP でクレデンシャルスタッフィングを防止する。チャレンジと CAPTCHA のユーザー体験設計も紹介します。

Bot Control の概要

AWS WAF の Bot Control は Web アプリケーションへのボットトラフィックを検出・管理するマネージドルールグループです。Common レベルは一般的なボット (HTTP ライブラリ、スクレイパー、セキュリティスキャナー) を検出し、Targeted レベルは高度なボット (ブラウザを模倣するボット、分散型ボット) を検出します。検出されたリクエストにはラベル (awswaf:managed:aws:bot-control:bot:category:scraping_framework など) が付与され、ラベルに基づいてカスタムアクションを設定できます。検索エンジンのクローラー (Googlebot など) は自動的に許可リストに含まれ、SEO への影響はありません。

Account Takeover Prevention と Fraud Control

Account Takeover Prevention (ATP) はログインページを監視し、クレデンシャルスタッフィング (漏洩した認証情報リストを使った総当たり攻撃) を検出します。ATP は盗まれた認証情報のデータベースとリクエストを照合し、一致する場合にブロックまたは CAPTCHA を表示します。ログインの成功・失敗パターンも分析し、異常な失敗率の IP アドレスを自動的にレート制限します。Account Creation Fraud Prevention (ACFP) はアカウント作成ページを監視し、偽アカウントの大量作成を検出します。使い捨てメールアドレスの検出、作成パターンの異常検知、JavaScript チャレンジによるブラウザ検証を組み合わせて、不正なアカウント作成を防止します。

チャレンジと CAPTCHA の設計

JavaScript チャレンジはクライアントのブラウザに JavaScript を実行させ、ブラウザの正当性を検証する仕組みです。自動化ツール (Selenium 、 Puppeteer の一部) はチャレンジに失敗し、リクエストがブロックされます。 CAPTCHA はユーザーに視覚的なパズルを提示し、人間であることを確認します。チャレンジと CAPTCHA はユーザー体験に影響するため、適用するページを慎重に選択します。ログインページ、アカウント作成ページ、決済ページなど、不正のリスクが高いページに限定し、一般的なコンテンツページには適用しない設計が推奨されます。チャレンジのイミュニティ時間 (一度検証に成功した後の免除期間) を設定し、正当なユーザーの負担を軽減します。 ボット対策に関する詳しい解説はAmazon の関連書籍でも確認できます。

WAF Bot Control の料金

WAF の基本料金は Web ACL あたり月額約 5.00 ドル、ルールあたり月額約 1.00 ドル、100 万リクエストあたり約 0.60 ドルです。Bot Control の Common レベルは 100 万リクエストあたり約 1.00 ドル、Targeted レベルは約 10.00 ドルが追加されます。ATP (Account Takeover Prevention) は 1,000 回のログイン試行あたり約 1.00 ドル、ACFP は 1,000 回のアカウント作成試行あたり約 2.00 ドルです。Bot Control の Targeted レベルは高額なため、ログインページや決済ページなど不正リスクの高いページに限定して適用し、一般的なコンテンツページには Common レベルを適用する設計でコストを管理します。

ラベルベースのルール設計

Bot Control は、検出したリクエストにラベルを付与します。このラベルを手がかりに、後続のルールで柔軟な対応を設計できるのが特徴です。たとえば、スクレイパーと判定された通信はブロックし、判定が曖昧なものはチャレンジを表示する、といった段階的な制御が可能です。導入直後は、いきなりブロックせず、まず検出だけを行うカウントモードで様子を見るのが安全です。どのような通信がどう分類されるかを観察し、正当な利用者を誤ってブロックしていないか確認してから、本格的な遮断に切り替えます。

レート制限と IP 評価

ボット対策は、Bot Control だけでなく複数の手法を重ねると効果的です。一定時間内のリクエスト数が閾値を超える送信元を制限するレート制限ルールは、総当たりや過剰なアクセスを抑えます。評判の悪い IP アドレスをまとめた評価リストを使えば、既知の不正な送信元を入口で遮断できます。国や地域による制御を組み合わせ、アクセスが想定されない地域からの通信を絞ることもできます。これらをラベルベースのルールと併用することで、多角的にボットや不正アクセスを抑止する防御網を構築できます。

導入手順とチューニング

WAF のルールは、いきなり遮断モードで投入すると、正当な利用者まで巻き込む恐れがあります。まずカウントモードで一定期間運用し、どのルールがどれだけ反応するかを観察します。ログを分析し、誤検知が含まれていないかを確認したうえで、問題のないルールから順にブロックへ切り替えます。誤って弾かれる正当な通信が見つかれば、例外ルールで許可します。チャレンジや CAPTCHA は利用者の負担になるため、ログインや決済など不正リスクの高いページに限定します。段階的なチューニングが、安全性と使い勝手の両立につながります。

他の防御層との組み合わせ

WAF は防御の一層であり、他のサービスと組み合わせることで効果が高まります。CloudFront の背後に配置すれば、エッジで脅威を遮断し、オリジンへの到達を防げます。大規模な DDoS への備えには、専用の保護サービスを併用します。アプリケーション側でも、認証の強化や異常検知を行い、WAF をすり抜けた脅威に備えます。入口での遮断、アプリケーションでの検証、監視による検知を多層で構成することで、単一の対策に依存しない堅牢な守りになります。WAF をその一翼として位置づけ、全体像の中で設計します。

まとめ

AWS WAF の Bot Control、ATP、ACFP は Web アプリケーションをボットと不正行為から保護するマネージドルールです。ラベルベースの柔軟なルール評価で検出精度を調整し、チャレンジと CAPTCHA でユーザー体験とセキュリティのバランスを取ります。CloudFrontAPI Gateway と統合して、アプリケーションの前段で脅威を遮断できます。