Amazon Web Services ブログ

新機能 – AWS WAF Bot Control でウェブサイトの不要なトラフィックを削減

AWS Shield の脅威調査チームが行った調査では、一般的なウェブアプリケーションに向けられたトラフィックの内の最大 51% は、マシン上で実行されるスクリプト (いわゆるボット) に由来することが判明しています。エンドポイントには、(望まいものや、そうではないものを含め) 多種多様なボット がヒットします。

適切なボットは、サイトをクロールしてインデックスを作成し、顧客から見つけやすくするためのものです。それ以外のボットは、サイトの可用性やパフォーマンスの監視を目的にしています。そして、こういったトラフィックの大部分は、不適切なボットによって生成されています。これらのスクリプトでは脆弱性を調査していたり、運営者の同意なしにコンテンツをコピーして別の場所に複製していたりします。これはセキュリティ上のリスクであるだけでなく、トラフィックを処理することでインフラストラクチャに対する不必要なプレッシャーとなり、コストも発生させます。

こういった望ましくないトラフィックからウェブサイトを保護することは、時間がかかる作業であり、エラーの原因ともなり得ます。保護のための一連のルールは管理が複雑です。そこには、良好なトラフィックをブロックしてしまったり、逆にブロックすべきトラフィックを承認してしまったりといったリスクが存在ます。

AWS WAF Bot Control の紹介
当社では今回、AWS WAF Bot Control をご紹介できるはこびとなりました。この機能では、一般的なボットトラフィックを特定し、そのための可視性を向上し、対策のためのアクションを実行できます。AWS WAF Bot Control は、AWS Web Application Firewall に統合されたサービスです。エンタープライズでの大規模なユースケース向けに、AWS Firewall Manager を使用して集中管理することができます。

Bot Control は、TLS ハンドシェイク、HTTP 属性、IP アドレスなどのリクエストメタデータを分析することで、ボットの発信元と目的を特定します。特定されるボットはスクレーパー、SEO、クローラ、サイトモニターなどのタイプにカテゴリー分けされます。

Bot Control が認識した望ましくないボットに対しては、そのトラフィックをブロックできます。ユーザーは、WAF 設定の中に定義されたデフォルトのアクションをシンプルに受け入れ、望ましくないボットトラフィックをブロックすることができます。また、その設定を独自にカスタマイズすることも可能です。例えば、レスポンス機能をカスタマイズして、ボットの識別結果に応じたレスポンスを返させたり、新しいヘッダーを挿入してそのリクエストにフラグを付けたりができます。AWS WAF との統合により、アプリケーションへのボットトラフィックの範囲を視覚化でき、WAF ルールを利用すればトラフィックの制御が可能です。

Bot Control では、AWS WAF のマネージドルールグループに今回追加した、 2 つの新しい機能 (ラベル付けとスコープダウン用のステートメント) を使用します。AWS WAF のラベルとは、ルールステートメントが一致した場合に、リクエストに追加されるメタデータのことです。これらのラベルは、将来追加されるルールステートメントでも使用できます。WAF ラベルは、ルールのアクションの結果を一時的に格納するための変数と考えることができます。これは、後続のルールで使用することが可能です。さらに、AWS WAF ラベルは CloudWatch メトリクスを出力し、これは AWS WAF ログに記述されます。AWS WAF ラベルは、Count アクションで複数のステートメントを評価し、ラベルに応じたアクションを実行する場合に便利です。また、複数のルールにわたってのロジックの再利用を含め用途は多様です。AWS WAF Bot Control では、ラベルを通じてボット関連の各種のシグナルを発生します。ユーザーはこれを使用して、必要に応じた動作をカスタマイズできます。

アプリケーションリソースの中には、ボットトラフィックの対象となりにくい、あるいは、そのトラフィックに対する保護を必要としないものもあります。当社では今回、スコープダウンステートメントというコンセプトも導入しました。スコープダウンステートメントを使用することで、マネージドルールグループが実行される条件を定義できます。これは、現在の AWS WAF で、レートベースのルールに提供されているスコープダウン機能 に似ています。ScopeDownStatement を導入することで、アプリケーションの特定の部分に評価を限定し、有料のマネージドルールグループのコストを削減できます。また、誤検出を回避したり、特定のパスに対するレイテンシーの影響を回避したりと、各種のユースケースに対応できます。

ボットから届いたリクエストの処理方法をカスタマイズするために、マネージドルールグループの設定とラベル、そしてスコープダウンステートメントを組み合わせて使用できます。

AWS WAF Bot Control のメリット
AWS WAF Bot Control の使用には、次の 3 つの主な利点があります。

  1. Bot Control を使用すると、ボットのトラフィックアクティビティを自由に可視化できます。AWS WAF を使用している場合、ボットアクティビティのレベルが高いアプリケーションを、サンプルデータに基づいて表示するためのダッシュボードが、事前に作成されています。
  2. Bot Control によりスクレーパー、スキャナ、クローラによって生成されるトラフィックが削減できるようになり、運用面やインフラストラクチャ面でのコストが削減されます。Bot Control は、アプリケーションの処理コストが増加したり、アプリケーションのパフォーマンスに悪影響が出たりする前に、不要なボットトラフィックを水際でブロックします。
  3. Bot Control のデプロイは簡単です。Amazon CloudFrontApplication Load BalancerAmazon API Gateway、または AWS AppSync にボットからの保護を追加するためには、AWS マネージドルールグループをウェブアクセスコントロールリスト (ウェブ ACL) に追加するだけです。

AWS WAF Bot Control の仕組み
AWS WAF Bot Control の追加は、 AWS WAF のマネージドルールの追加と同様です。これは数回クリックするだけで開始できます。では例を参考に、AWS WAF コンソールに接続してみましょう。

AWS WAF コンソール

この画面の左側には、Bot Control メニューが新しく追加されています。また、ウェブ ACL に含まれるボット関連のトラフィックの概要と、ボットコントロールが有効になっているウェブ ACL の概要が表示されています。このボットアクティビティに関するメトリックス (ボットリクエストと非ボットリクエストの割合、ブロックされたボットリクエストの数、ボットのカテゴリなど) は、AWS のすべてのお客様に AWS WAF 無料利用枠の一部として提供されます。

Bot Control – 無料のダッシュボード

今回のチュートリアルでは、エンドポイントの 1 つを保護してみることにします。左側のメニューで [Web ACLs (ウェブ ACL) ] を選択し、[Create web ACL (ウェブ ACL を作成する)] をクリックします。

ウェブ ACL の詳細を入力し、ページの下部にある [Next (次へ)] をクリックします。

ウェブ ACL の詳細

[Add rules and rule groups (ルールとルールグループの追加)] で、[Add rules (ルールの追加)] を開き、[Add managed rule groups (マネージドルールグループの追加)] を選択します。

ウェブ ACL でのルールの追加

[Add managed rule groups (マネージドルールグループの追加)] 画面で、[AWS Managed rule groups (AWS マネージドルールグループ)] を展開し、Bot Control の Add to web ACL (ウェブ ACL に追加)をオンにします。 ページの下部 (以下には示されていません) で、[Add rules (ルールの追加)] をクリックします。

ウェブ ACL での Bot Control の追加

最後に、ルールに一致しないリクエストに対するデフォルトのアクションを選択し、[Next (次へ)] をクリックします。ウェブ ACL のデフォルトアクション後続の画面ではすべてのデフォルト値を維持し、[Next] を 3 回クリックた後で [Create Web ACL (ウェブ ACLを作成する)] をクリックします。

Bot Control は、これまでご使用になっていた ウェブ ACL に似ています。特定のルールセットを選択すると、ルールに一致するリクエストの数とサンプルのグループを確認できます。

ウェブ ACL ダッシュボード

上部の Bot Control タブを選択すると、ボット固有のデータにアクセスできます。

Bot Control の有料ダッシュボード

ご利用になれるリージョンと料金
AWS WAF Bot Control は、AWS WAF が提供されているすべての AWS リージョンで、今すぐご利用いただけます。他の AWS WAF ルールと同様に、AWS WAF Bot Control のフィルタリングも、Amazon CloudFront ディストリビューション、 Application Load BalancerAmazon API Gateway、および AWS AppSync にヒットするトラフィックに対し適用することができます。

Bot Control は、ウェブ ACL に有料で追加する AWS マネージドルールです。Bot Control がウェブ ACL に追加されるたびに、10 USD/月 (時間割りで清算) が課金されます。これに加え、Bot Control によって処理される 100 万リクエストごとに 1 USD が課金されます。Bot Control の料金は、AWS WAF料金に加算されます。

また、Bot Control には、1 か月にBot Control が処理するリクエスト 1,000 万件までをカバーする、無料利用枠もあります。

AWS WAF Bot Control詳細を確認した上で AWS WAF に今すぐ 追加してください