AWS WAFCaptchaが東京リージョンに対応したので試してみた

こんにちは、クラウドソリューション事業部の本田です。気づけば梅雨も明けてしまいました。夏が嫌いな私にとっては、非常に辛いシーズンになります。体調を崩さず頑張りたいと思います。

今回は、6/21に東京リージョンでも利用可能となったAWS WAFCaptcha機能を試してみました。元々米国東部(北バージニア)、米国西部(オレゴン)などの限られたリージョンで利用可能だったのですが、東京リージョンで利用ができるようになったので、ALBを東京リージョンで使っている場合にAWS WAFでサクッとcaptcha機能を利用できるようになりました。

CAPTCHAとは

本題に入る前にCAPTCHAについて説明します。CAPTCHAとは、Completely Automated Public Turing test to tell Computers and Humans Apartの略で、人間とマシンを判別するチューリングテストです。利用シーンとしては、botなどからのフォームへの大量アクセスから防御策として、フォームへの投稿者が人間であることを区別するために利用されております。とあるショッピングサイトの会員登録フォーム、お問い合わせフォームなどで遭遇されたことがよくあるのではないでしょうか?こちらの機能がAWS WAFではアプリ側の実装が必要なく設定を行えることができます。では早速ですが、AWS上で設定してみましょう。

AWS上で設定を行う

構成

今回以下のような構成でテストを行います。

ALBにAWS WAFを設定しまして、特定のパス(/login)にアクセスした場合にをCAPTCHAを表示させ、そちらをクリアできないとページを表示できないようにします。ALB、EC2の作成方法については割愛しますが、EC2については今回apacheを利用しています、nginxでも何でも構いません。

AWS WAFの設定

ALBに設定するWeb ACLsを作成します。

次にAdd Rulesから、Add my own rules and groupsでCAPTCHAを使用するルールを作成します。

URI Pathが/loginとマッチした際に、CAPTCHAを使うというルールです。
こちらのルールを設定したら、早速ブラウザから対象のページにアクセスしてみましょう。

アクセスしてみる

対象のページ(ドメイン/login/)にアクセスしてみると以下のようなページが表示されました。

Beginをクリックすると、図形を合わせるテストや車が通る道順を選択するテストが表示されました。

読み上げられた英語のテキストを入力するページもあるそうなのですが、検証では遭遇しませんでした。パズルもそうですが、書かれている英文を理解して行わないと正解にはならないので、日本語圏で利用するのはちょっと難しいかなという印象はあります。正解できると以下のような画面が表示され、アクセスしたいページに遷移されます。

不正解だと以下のような表示になります。

最後に

簡易的なフォームを作って、アプリ側での実装不要でCAPTCHAも入れておきたいなどの場合に有効な機能かと思います。ただデザイン面が固定であったり、英語だったりするので、使われる場面は限定的なのかなとも思います。AWS WAFでここまでできるということを知っていただけたら幸いです。