Anti-Bot Serviceの紹介
本記事では、Alibaba Cloud セキュリティプロダクトサービスである Anti-Bot Service についてをご紹介します。
Alibaba Cloud には意外と多くのセキュリティ関連のプロダクトがある事をご存知でしょうか?
以下の図はザックリ2019年12月時点での一覧になります。
今回は「名前だけで何が出来るかわからないシリーズ」の中から偶々検証する機会のあった Anti-Bot Service を簡単にご紹介させて頂きたいと思います。
Anti-Bot Service とは?
名前の通りBot
に対抗するサービスです。
ではBot
って何だ?という事になりますが大まかには下記の様な定義になるのかなと思います。
Webボットあるいは単にボットとも呼ぶ。一般に単純な繰り返しのタスクをこなし、そのようなタスクに関しては人間が手でやるよりも高速である。ボットは主にクローラとして使われることが多く、人間の何倍もの速さでWebページを自動的に集め、その内容(情報)を分析して分類する。
Anti-Bot Service はアリババグループの各種サービス(淘宝(タオバオ)、 天猫(Tmall)、支付宝(Alipay)など)での経験をベースに作られているとのことなので、実際に中国でクローラー
や悪意のあるボットプログラム
からユーザーのサイトやアプリを守るために蓄積されたナレッジや仕組みを利用できるサービスという事になります。
Anti-Bot Service の機能
Anti-Bot Service はAlibaba Cloud あるあるで Mainland China(中国本土向け)
と International(中国本土以外向け)
で設定画面や価格が異なっています。
今回はInternational(中国本土以外向け)
の検証を行いましたのでソチラの内容での記事となります。
以下購入画面のサンプル
サービス購入後に一番最初に行うことはドメインの紐付けです。
⚠️ デフォルトの Anti-Bot Service で保護できるのは1つのTLDと最大9つのサブドメインまたはワイルドカードドメインです。 それ以上の保護には追加オプションが必要になります。ちなみに Anti-Bot Service でSSLのオフロードをすることも可能ですし、HTTPで待ち受けることも可能です。
※SSL証明書は別途用意する必要があります。CNAME が払い出されますのでドメインを管理する DNS にてCNAME の設定を行います。
これは特に Alibaba Cloud の DNS サービスである必要はありません。
問題がなければ DNS Resolution Status
が Normal
となっているはずです。
Anti-Bot Service は機能として大きく分けて Protection
と Report
の2種類の機能を提供します。
今回の記事では Protection
の基本機能の部分をご紹介いたします。
Protection
Protection の機能としては以下の様になっています。
オプション機能に関してはそれぞれ追加費用が必要になります、詳しくは後ほど説明します。
- Blacklist and Whitelist
- Access Control List
- Rate Limiting
- Bot Intelligence ( Allowed Crawlers / Threat Intelligence )
- App Protection
- Intelligent Algorithm
Anti-Bot は基本的にWebサイトやサービスを守るサービスです、ではどの様に守っているのかと言うとWAFやCDNなどの様にWebサイトやサービスの前に Anti-Bot Service を配置する様なイメージになります。
この様な構成なので保護対象となるWebサイトやサービスは Alibaba Cloud 上で公開されている必要性はありません。
他のクラウドでもオンプレでもオリジンサイトがパブリックに公開されていれば Anti-Bot Service での保護の対象とすることが可能です。
また、Anti-Bot Service と CDN を同時に使用すると言う構成も可能です。
基本機能
基本機能の3つはWAFの様な設定をしていく機能になります。
Blacklist and Whitelist
下記の様な画面で設定します。
Blacklist と Whitelist それぞれ最大で200個のIPアドレス又はIPセグメントを指定できます。
複数指定する場合は1.2.3.4 , 5.6.7.8/24
の様にカンマ区切りで入力します。
Access Control List
Access Control List はルールとマッチしたリクエストの内容に対するアクションを定義します。
ルールの作り方はシンプルで Filter Field
と Filter Pattern
が Operator
の条件と一致した場合に Rule Action
を実行します。
Filter Fieldの項目は以下になります。
- URL
- IP
- Referer
- User-Agent
- Params
- Cookie
- Content-Type
- Content-Length
- X-Forwarded-For
- Post-Body
- Http-Method
- Header
重要な Rule Action
は以下の4つになります。
- Block
- Allow
- Monitor
- Slider Captcha
今回は実際に防御系の動作をする Block
と Slider Captcha
の動作を少し説明します。
以下の図は Rule ID 68032
の /xxxxxxx/index.php/settings
というルールに該当したので Slider Captcha
が表示されています。
実際に人が操作する場合はブラウザ上で表示されるスライダーを操作して先に進むことが出来ますが、単純なBotやクローラーの場合は先に進むことが出来ずここでブロックされることになります。
以下の図は Rule ID 68078
の /xxxxxxx//index.php/apps/calendar
というルールに該当したので Block
が表示されています。
今回の場合特定のURLに対してブロック動作を定義したのでブラウザでもブロック画面が表示されていますが、User-Agent
やHeader
などを上手く使ってブラウザではない場合にブロックするのが実際の利用シーンかと思います。
Rate Limiting
Rate Limiting は特定のURLへの単位時間あたりのアクセス数などから悪意のあるBotを検出するために使用します。
Botやクローラーは実際の人間がWebを見る動きとは異なり、高速で何度もアクセスを行うので Rate Limiting を使って人間と異なる動きをするbotを検出するために使用します。
Access Control List との相違点としては Rule Action
から Allow
がなくなり JavaScript Validation
が追加されています。
Rule ID 1276
のBlockルールに該当した場合、
5秒間に2回、同一のIPからrate-test
というURLへアクセスした場合にBlock
が適用されます。
Access Control List の時の405
とは異なり一時的にアクセス自体が遮断される様な動きになります。
JavaScript Validation はルールに該当した場合、Redirect と認証処理を行うJavaScriptファイルがブラウザ、又はbotに渡されます。
ブラウザであれば一瞬遷移したなと言うレベルで上記が実施され気づかずに通過できますが、一般的なBotやクローラーは渡されたJavaScriptファイルを処理できずにブロックされると言う仕組みになります。
試しに Chrome のデベロッパーツールなどを起動した状態でJavaScript Validation
のルールに該当したアクセスを行うと以下の様に謎のJavaScriptが間に差し込まれていることがわかります。
Curl などでアクセスすると謎の結果が返ってきます。
botやクローラーの場合はこの様な結果が返ってきて、正常な画面へのアクセスを防ぐ仕組みになっています。
おわりに
今回はProtection 基本編ということでココまでの内容になります。
なかなか判りにくい Anti-Bot Service の理解の一助になれば幸いです。
スライドキャプチャやブロック機能をWebサイトの改修なしに 差し込むことが出来るのが Anti-Bot Service のポイントですね😃