Anti-Bot Service 🕷をさわってみました❗️ - Protection 基本編

こんにちは。
ソリューションアーキテクトの松田(@MatYoshr)です。

本記事は Alibaba Cloud Advent Calendar 2019 12日目の記事になります。
本記事は Alibaba Cloud 国際サイトの内容をベースに説明しています。

Alibaba Cloud には意外と多くのセキュリティ関連のプロダクトがある事をご存知でしょうか?
以下の図はザックリ2019年12月時点での一覧になります。

f:id:sbc_y_matsuda:20191210001924p:plain

Security Center などは特に使いやすく良いプロダクトですね。 以下の記事でも簡単に紹介されていますが、出来る事が多いのでどこかで改めてご紹介したいです。

www.sbcloud.co.jp

今回は「名前だけで何が出来るかわからないシリーズ」の中から偶々検証する機会のあった Anti-Bot Service を簡単にご紹介させて頂きたいと思います。

f:id:sbc_y_matsuda:20191212114956p:plain

Anti-Bot Service とは?

名前の通りBot に対抗するサービスです。
ではBot って何だ?という事になりますが大まかには下記の様な定義になるのかなと思います。

Webボットあるいは単にボットとも呼ぶ。一般に単純な繰り返しのタスクをこなし、そのようなタスクに関しては人間が手でやるよりも高速である。ボットは主にクローラとして使われることが多く、人間の何倍もの速さでWebページを自動的に集め、その内容(情報)を分析して分類する。

インターネットボット - Wikipedia

Anti-Bot Service はアリババグループの各種サービス(淘宝(タオバオ)、 天猫(Tmall)、支付宝(Alipay)など)での経験をベースに作られているとのことなので、実際に中国でクローラー悪意のあるボットプログラムからユーザーのサイトやアプリを守るために蓄積されたナレッジや仕組みを利用できるサービスという事になります。

www.alibabacloud.com

Anti-Bot Service の機能

Anti-Bot Service はAlibaba Cloud あるあるで Mainland China(中国本土向け)International(中国本土以外向け) で設定画面や価格が異なっています。
今回はInternational(中国本土以外向け) の検証を行いましたのでソチラの内容での記事となります。

f:id:sbc_y_matsuda:20191210171934p:plain

以下購入画面のサンプル

f:id:sbc_y_matsuda:20191210172854p:plain

サービス購入後に一番最初に行うことはドメインの紐付けです。

⚠️ デフォルトの Anti-Bot Service で保護できるのは1つのTLDと最大9つのサブドメインまたはワイルドカードドメインです。
それ以上の保護には追加オプションが必要になります。

ちなみに Anti-Bot Service でSSLのオフロードをすることも可能ですし、HTTPで待ち受けることも可能です。
※SSL証明書は別途用意する必要があります。 f:id:sbc_y_matsuda:20191211225653p:plain

CNAME が払い出されますのでドメインを管理する DNS にてCNAME の設定を行います。
これは特に Alibaba Cloud の DNS サービスである必要はありません。 問題がなければ DNS Resolution StatusNormal となっているはずです。

f:id:sbc_y_matsuda:20191211224839p:plain

Anti-Bot Service は機能として大きく分けて ProtectionReport の2種類の機能を提供します。
今回の記事では Protection の基本機能の部分をご紹介いたします。

Protection

Protection の機能としては以下の様になっています。
オプション機能に関してはそれぞれ追加費用が必要になります、詳しくは後ほど説明します。
App ProtectionIntelligent Algorithm は今回未検証の機能です、どこかで改めて紹介できればと思います。

基本機能

  • Blacklist and Whitelist
  • Access Control List
  • Rate Limiting

オプション機能(本記事では対象外)

  • Bot Intelligence ( Allowed Crawlers / Threat Intelligence )
  • App Protection
  • Intelligent Algorithm

f:id:sbc_y_matsuda:20191210174029p:plain

Anti-Bot は基本的にWebサイトやサービスを守るサービスです、ではどの様に守っているのかと言うとWAFやCDNなどの様にWebサイトやサービスの前に Anti-Bot Service を配置する様なイメージになります。

f:id:sbc_y_matsuda:20191210154829p:plain

この様な構成なので保護対象となるWebサイトやサービスは Alibaba Cloud 上で公開されている必要性はありません。
他のクラウドでもオンプレでもオリジンサイトがパブリックに公開されていれば Anti-Bot Service での保護の対象とすることが可能です。

また、Anti-Bot Service と CDN を同時に使用すると言う構成も可能です。

www.alibabacloud.com

基本機能

基本機能の3つはWAFの様な設定をしていく機能になります。

Blacklist and Whitelist

下記の様な画面で設定します。
Blacklist と Whitelist それぞれ最大で200個のIPアドレス又はIPセグメントを指定できます。
複数指定する場合は1.2.3.4 , 5.6.7.8/24の様にカンマ区切りで入力します。
ドメインでの指定はNGです。

f:id:sbc_y_matsuda:20191211220645p:plain

Access Control List

Access Control List はルールとマッチしたリクエストの内容に対するアクションを定義します。

ルールの作り方はシンプルで Filter FieldFilter PatternOperator の条件と一致した場合に Rule Action を実行します。

Filter Fieldの項目は以下になります。

  • URL
  • IP
  • Referer
  • User-Agent
  • Params
  • Cookie
  • Content-Type
  • Content-Length
  • X-Forwarded-For
  • Post-Body
  • Http-Method
  • Header

f:id:sbc_y_matsuda:20191211224256p:plain

重要な Rule Action は以下の4つになります。

  • Block
  • Allow
  • Monitor
  • Slider Captcha

f:id:sbc_y_matsuda:20191211231631p:plain

今回は実際に防御系の動作をする BlockSlider Captcha の動作を少し説明します。

以下の図は Rule ID 68032/xxxxxxx/index.php/settings というルールに該当したので Slider Captcha が表示されています。
実際に人が操作する場合はブラウザ上で表示されるスライダーを操作して先に進むことが出来ますが、単純なBotやクローラーの場合は先に進むことが出来ずここでブロックされることになります。

f:id:sbc_y_matsuda:20191211223740p:plain

以下の図は Rule ID 68078/xxxxxxx//index.php/apps/calendar というルールに該当したので Block が表示されています。
今回の場合特定のURLに対してブロック動作を定義したのでブラウザでもブロック画面が表示されていますが、User-AgentHeaderなどを上手く使ってブラウザではない場合にブロックするのが実際の利用シーンかと思います。

f:id:sbc_y_matsuda:20191211232745p:plain

Rate Limiting

Rate Limiting は特定のURLへの単位時間あたりのアクセス数などから悪意のあるBotを検出するために使用します。

Botやクローラーは実際の人間がWebを見る動きとは異なり、高速で何度もアクセスを行うので Rate Limiting を使って人間と異なる動きをするbotを検出するために使用します。

Access Control List との相違点としては Rule Action から Allow がなくなり JavaScript Validation が追加されています。

f:id:sbc_y_matsuda:20191211234358p:plain

f:id:sbc_y_matsuda:20191212105543p:plain

Rule ID 1276 のBlockルールに該当した場合、 5秒間に2回、同一のIPからrate-testというURLへアクセスした場合にBlockが適用されます。
Access Control List の時の405とは異なり一時的にアクセス自体が遮断される様な動きになります。

f:id:sbc_y_matsuda:20191212000800p:plain

JavaScript Validation はルールに該当した場合、Redirect と認証処理を行うJavaScriptファイルがブラウザ、又はbotに渡されます。
ブラウザであれば一瞬遷移したなと言うレベルで上記が実施され気づかずに通過できますが、一般的なBotやクローラーは渡されたJavaScriptファイルを処理できずにブロックされると言う仕組みになります。

試しに Chrome のデベロッパーツールなどを起動した状態でJavaScript Validationのルールに該当したアクセスを行うと以下の様に謎のJavaScriptが間に差し込まれていることがわかります。
※ちゃんとデベロッパーツールを閉じると正常にページにアクセスできます。

f:id:sbc_y_matsuda:20191212110036p:plain

Curl などでアクセスすると謎の結果が返ってきます。
botやクローラーの場合はこの様な結果が返ってきて、正常な画面へのアクセスを防ぐ仕組みになっています。

f:id:sbc_y_matsuda:20191212110735p:plain

おわりに

今回はProtection 基本編ということでココまでの内容になります。
なかなか判りにくい Anti-Bot Service の理解の一助になれば幸いです。

スライドキャプチャやブロック機能をWebサイトの改修なしに 差し込むことが出来るのが Anti-Bot Service のポイントですね😃

・・・と言いつつWAFでも近いこと出来ると思った方もいるかもしれません。

www.alibabacloud.com

実は Anti-Bot Service の真の強みはオプション機能部分にあります。
次回の記事ではその辺りをご紹介したいと思います。

Author Profile

https://secure.gravatar.com/avatar/b00b5531fbdbc674e9f7c685a1ed32c1?s=800&d=identicon

松田悦洋(@MatYoshr)
SBクラウド株式会社 Alibaba Cloud Solution Architect

Alibaba以外にもAWS、Azure、GCPなどクラウド全般が好きです
  GitHub   Qiita