記事検索

検索ワードを入力してください。
Sky Tech Blog
AWS WAFでの​Bot対策

AWS WAFでの​Bot対策

クラウドサービスにおける悪意のあるBot対策として、AWS WAF(Web Application Firewall)の機能を活用する方法を紹介します。具体的な対策方法として、レート制限、CAPTCHA、Challenge、マネージドルールの活用について詳述しています。AWS WAFを適切に設定することで、ウェブアプリケーションのセキュリティを強化し、安定したサービス提供を実現することができます。

はじめに

インターネット上にサイトを立ち上げる際、多くのユーザーにご利用いただくことを目指して公開されると思います。 より多くのユーザーにご利用いただくためにも、目的外のアクセスは制限する必要があります。 特に、大量アクセスによるパフォーマンス低下やシステムダウンを引き起こすようなBotへの対策は重要です。

私たちはそのような悪意を持ったBotへの対策としてAWS WAF(Web Application Firewall)の機能を活用しています。 今回は、AWS WAFでできるBot対策をご紹介します。

Botとは

Botとは、プログラムによって自動化された、インターネットに関わる処理を行うソフトウェアのことです。 例えば、検索エンジンのクローラーなどが挙げられます。

これはウェブサイトの情報を自動的に収集し、検索エンジンのインデックスを作成するために使用されており、このBotのおかげで快適にインターネットを検索することが可能となっております。

しかし、検索結果としてヒットして欲しくない場合など、クローラーからのアクセスを制限したいケースもあります。

このようなBotからのアクセスを制御する方法として、HTTPヘッダーやMetaタグ、robots.txtの配置があります。

HTTPヘッダー

HTTPヘッダーは、サーバーとクライアント間で送受信されるメッセージの一部であり、さまざまな制御情報を含むことができます。 Botに対して特定の指示を送るために使用される代表的なヘッダーの一つがX-Robots-Tagです。
X-Robots-Tagヘッダーという内容を指定することで、特定のページをインデックスしないように指示することができます。
例えば、アクセスに対して

X-Robots-Tag: none

を返すことで、ページを検索エンジンのインデックスから除外したい旨を示すことができます。

Metaタグ

Metaタグは、HTMLドキュメントのセクションに含まれるタグで、ページに関するメタデータを提供します。 Metaタグを追加することで、Botに対してページのインデックス方法を指示できます。 例えば、

<meta name="robots" content="noindex" />

のように記述することで、そのページを検索エンジンのインデックスに追加しないように指示できます。

robots.txt

ウェブサイトのルートディレクトリに配置するテキストファイルで、Botに対して、どのURLにアクセスを許可するか、どのページを禁止するかを指定することができます。 例えば、ルートディレクトリに配置したrobots.txtに対して、

User-agent: *
Disallow: /private.html

のように設定することで、private.htmlへのアクセスを禁止することができます。

上記のような方法を用いて制御することにより、Botはこれらの設定に従い適切に動作してくれます。
一方で、悪意を持ったBotも存在します。
悪意を持ったBotは上記のような制御を無視し、大量アクセスによるサービスの妨害や、データの不正取得を行うことがあります。
このようにBotには良い側面と悪い側面があり、適切に対策することが求められます。

AWS WAFとは

「AWS WAF」は、その名の通りAWSが提供するWAF(ウェブアプリケーションファイアウォール)です。
いわゆる「ファイアウォール」がネットワーク層(OSI参照モデルの第3層)においてIPやポート番号に対してアクセス制御を行うものだったのに対し、 WAFはウェブサイトやアプリケーションへのリクエスト(アプリケーション層:OSI参照モデルの第7層)を監視し、SQLインジェクションやクロスサイトスクリプティング(XSS)などの一般的なウェブ攻撃を、通信内容を解析することで防ぐことができます。

AWS WAFで​できる​Bot対策

AWS WAFでできる代表的なBot対策は以下の通りです。

レート制限

レート制限は、短期間に大量のリクエストをブロックすることができる機能です。
これは、DDoS攻撃対策として有効です。
一定時間内のリクエスト数をカウントし、その数が閾値を超えた場合にトリガーされるルールとなっております。
例えば、同一IPから5分間に50万件リクエストが行われるような場合、人による操作ではない可能性が高いことから、そのIPからのリクエストをブロックするというような動作を設定できます。 このようなルールを設定することで、異常な大量アクセスを防ぐことができます。
カウントする条件についても設定可能で、同一のIPによる制限や、同一IP内でもPCごとなど、さらに細かく指定することも可能です。

CAPTCHA

CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)は、ユーザーが人間であることを確認するためのテストです。 複数の中から指定した絵を選択したり、歪んだ文字画像から文字を読み解いて入力するなど、コンピューターが簡単に正解できない問題を出すことで、ユーザーが人間であることを確認します。

ユーザーに操作していただくひと手間はありますが、Botからのアクセスを遮断することができます。
CAPTCHA JavaScript APIを使用してカスタマイズすることも可能です。
以下はCAPTCHAの画面例です。
指示された絵を選択させることで、Botかどうかを確認しています。

引用元: Amazon Web Services, Inc./CAPTCHA パズルの例

Challenge

Challengeは、ウェブリクエストがBotではなく正当なブラウザからのものであることを検証するための機能です。 この機能はアクセスしてきたクライアントにJavaScriptで計算量の多いタスクを実行させることで、ユーザーによる操作なしにBotかどうかを確認する仕組みです。 誤検知によりブロックしてしまうことを避けるため、前述のCAPTCHAなどと組み合わせることで、より高精度にBot確認をすることが可能となります。

マネージドルール

その他の方法として、AWS WAFにはマネージドルールというルールセットも提供されています。 これらのルールはAWSのセキュリティ専門家によって管理されているため、細かな設定値を意識することなく簡単にウェブアプリケーションを保護することができます。 DDoS対策として利用できるルールセットやアカウント乗っ取り防止のためのルールセットなどもあり、必要に応じて追加することが可能です。 マネージドルールは、前述のレート制限やCAPTCHAなどのルールのように内容を細かく設定する必要はなく、基本的に追加したいルールを選択し、そのルールが適用される優先順位を設定するだけで利用可能となります。

どのように​対策すべきか

これまでの説明のように、AWS WAFにはさまざまな対策方法が用意されています。 その中でもよく取られる対策として、レート制限とCAPTCHAを組み合わせるような対応が挙げられます。 レート制限により、異常な量のアクセスを制限しつつ、CAPTCHAで厳密にBotによるアクセスを制限するような流れです。 CAPTCHAは試行ごとに料金が発生するため、レート制限と組み合わせることで、CAPTCHAの利用料が膨れ上がってしまうのを抑えることもできます。 公開するサイトの目的や特性により、適切なルールを検討することが大切です。

まとめ

今回必要であった大量アクセスの対策以外にも、AWS WAFにはさまざまなルールが用意されています。 ぜひAWS WAFの機能を活用して、Bot対策を行ってみてください。 AWS WAFを適切に設定することで、ウェブアプリケーションのセキュリティを強化し、安定したサービス提供を実現することができます。

本記事は以上となります。 最後までご覧いただきありがとうございました。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム