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 レベルを適用する設計でコストを管理します。

まとめ

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