✨ はじめに
Webサービスを公開していると、正規ユーザーのふりをした悪質なBotに悩まされることがあります。
アクセス数が増えるほど、WAFの効果的なボット対策は重要性を増します。
本記事では、AWS WAF の Managed Rules と Bot Control を活用し、
CloudFront配下での実戦的なBot対策を解説します。
✅ 対象読者
- Botアクセスの急増に悩まされている方
- AWS WAFをすでに導入済みの方
- Bot Controlの仕組みや費用感がよく分からない方
- CloudFront + S3 など静的配信環境でBot対策をしたい方
📊 全体構成図
[Client]
↓
[AWS WAF (Managed Rule + Bot Control)]
↓
[CloudFront]
↓
[S3 or ALB/API Gateway]
🔍 Bot Controlとは?
AWS Bot Controlは、WAFの追加機能として提供される マネージドルールセット です。
項目 | 内容 |
---|---|
提供形式 | AWS Managed Rule |
費用 | WAFルール数+BotControl特別料金($10/WCUあたり) |
前提条件 | CloudFront専用(ALB/Regionalでは不可) |
判定方法 | ユーザーエージェント、IP、リクエストパターンなど |
種類:
- Known Bot(Good Bot含む)
- Common Bot(SEOツールやクローラー等)
- Malicious Bot(明らかに悪質なアクセス)
⚙️ Bot Control の設定手順
1. WAF WebACL作成(CloudFront用)
aws wafv2 create-web-acl \
--name "my-cloudfront-waf" \
--scope CLOUDFRONT \
--default-action Block={} \
...
2. Bot Controlルールの追加
AWSマネージドルールから以下を選択:
-
AWS-AWSBotControlRuleSet
(Bot Control for Targeted Bots
)
おすすめ設定:
- Known Bot → Allow
- Malicious Bot → Block
- Common Bot → CAPTCHA or Count
3. Rule Action の工夫
- 初期は
Count
モードで影響を確認 - 問題なければ
Block
へ切り替え
🛡️ Bot Controlだけでは防げないBotもいる
実務では、以下のようなBotがすり抜けるケースがあります:
- 最新のUser-Agentに偽装
- 正規IPレンジからのアクセス
- Refererを設定し擬似的に正規流入
⚡️ 対応策
- UA/Refererによる除外設定
- URIパターンに対するRate-basedルール
- JA3フィンガープリント分析
📊 WAFログ活用
Bot Controlの導入後は WAFログ (JSON)をAthenaで解析することで、以下のような分析が可能です:
- BlockされたBotの種類、頻度
- 特定パスへの異常アクセス
- Challenge経由の通過数、傾向
Athenaクエリ例
SELECT terminatingRuleId, COUNT(*) as cnt
FROM waf_logs
WHERE action = 'BLOCK'
GROUP BY terminatingRuleId
ORDER BY cnt DESC
💰 Bot Controlの費用と削減テクニック
項目 | 価格の概要 |
---|---|
Bot Controlの利用料 | WebACLごとに約310/mo + WCU |
WAFルール料金 | $1/Rule + $0.6/100万リクエスト |
削減ポイント
- Countモードで不要なルールを判定
- WAFのルール数を最小限に
- CloudFrontのキャッシュ強化でパストを矩折
📝 まとめ
- Bot ControlはCloudFront前接で効果的
- すべてのBotを防げるわけではないのでCustom Ruleの使い切りが重要
- WAFログとAthenaを連携し、効果を可視化
- 費用を意識しつつ、ルールを精選して運用すること