- 公開日
- 最終更新日
【AWS WAF】User-Agent情報から特定BOTをブロック
この記事を共有する
目次
はじめに
今回は、特定のクローラーからのアクセスを遮断するため、
AWS WAFにて Web ACLへブロックルールを追加する手順をご紹介します。
Webサービスを公開していると、海外クローラーや不要なBotからのアクセスが増加し、
- 不要なトラフィック増加
- サーバー負荷の上昇
- ログ肥大化
- セキュリティリスクの増大
といった課題が発生することがあります。
その対策の一つとして、WAFによるUser-Agentベースのアクセス制御を実施します。
背景・課題
YandexBotはロシア系検索エンジンのクローラーですが、
環境によってはインデックス登録を必要としないケースもあります。
その場合、
- 不要なクローリングを停止したい
- 特定Botのみ遮断したい
- 正常ユーザーへの影響は出したくない
という要件が発生します。
今回は、Web ACLへカスタムルールを追加し、
User-Agentに「YandexBot」を含むリクエストをブロックする構成を採用します。
前提条件・構成
システム構成
- 対象Web ACL:
example-prd-alb-acl - 対象URL: https://www.example.co.jp/index.html
前提条件
- AWSマネジメントコンソールへログイン可能であること
- 対象Web ACLがALBへ関連付け済みであること
手順1:事前確認
まず、現在のWeb ACL構成を確認します。
- AWSコンソールへログイン
- WAF & Shield を開く
- 「ウェブ ACL」から対象を選択
例:example-prd-alb-acl
手順2:YandexBotブロックルールの追加
1. ルール作成開始
- 「ルール」タブを選択
- 「ルールを追加」
- 「カスタムルール」→「カスタムルールを作成」
2. ルール設定内容
| 項目 | 設定値 |
|---|---|
| ルール名 | Block_YandexBot |
| ヘッダー名 | user-agent |
| アクション | Block |
3. 条件詳細
- 条件の追加
- 「単一ヘッダー」を選択
- ヘッダー名:
user-agent - マッチタイプ:
文字列を含む - 値:
yandexbot - Text Transformations:
Lowercase
設定後、「ルールの追加を保存」をクリックします。
※補足:
Lowercaseを設定することで、WAFがUser-Agentを一度全部小文字に読み替えてからチェックしてくれるようになり、綴りが異なる場合でも検知できるようになります。
例)YandexBOT、yandexbot、YANDEXBOT 等
手順3:ルール追加確認
追加後、以下を確認します。
- 対象Web ACL:
example-prd-alb-acl - ルール名:
Block_YandexBot - アクション:Block
- 優先順位が意図通りであること
手順4:動作確認
1. 通常アクセス確認
以下のURLへ通常ブラウザでアクセスします。
https://www.example.co.jp/index.html
正常に表示されることを確認します。
2. YandexBotアクセスの確認
curlコマンドでUser-Agentを変更し確認します。
curl -A "YandexBot" https://www.example.co.jp/index.html -I
curl -A "yandexbot" https://www.example.co.jp/index.html -I
■ 期待結果
HTTP/1.1 403 Forbidden
403が返却されれば、ブロック成功です。
手順5:ログ確認
必要に応じて、WAFログやALBアクセスログを確認します。
- Blockアクションが記録されていること
- 通常アクセスはAllowされていること
設定削除手順
万が一影響が発生した場合は、追加ルールを削除します。
- AWS WAFコンソールを開く
- 対象Web ACLを選択
- 「Block_YandexBot」ルールを削除
- 保存・反映
削除後、再度アクセス確認を実施します。
まとめ
今回は、AWS WAFにて特定BOTを遮断する手順を解説しました。 実務においてWAFブロックを行う際は、カウントモードから設定を開始して一定期間検知状況を確認し、 慎重にチューニングを行うことを推奨いたします。
■ 実施内容
- User-Agentベースのカスタムルール作成
- ブロックアクション設定
- 動作確認
- 切り戻し方法整理
なお、User-Agentは偽装可能であるため、
高度なBot対策が必要な場合は、IP制限やBot Control機能の併用も検討してください。
この記事は私が書きました
橋本 歩
記事一覧AWSと犬が好きです。