Auth0のBrute-force Protectionを検知した際に送信されるメールのメッセージをカスタマイズする #Auth0JP #Auth0アドカレ
Auth0のBrute-force Protection
Brute-force Attack とは、ログインに必要な情報(ユーザー名やパスワード)をログインが成功するまで総当たり的にリクエストし、パスワードを不正に取得する攻撃手法です。このような攻撃を保護する機能を Brute-force Protection と言い、一般的には同一IPアドレスからの一定回数以上のリクエストを弾くような仕組みを用意します。
Auth0では Anomaly Detection 機能の一つとしてBrute-force Protectionが提供されており、以下のような機能が提供されています。いずれもIPアドレスをベースにするものです。
デフォルトで有効になっており、次のようなルールで動作します。
- 同一のユーザーに対し、同一のIPアドレスから、10回連続してログインが失敗した場合
- 24時間以内に、同一のIPアドレスからログインに100回失敗した場合
- 同一のIPアドレスから1分間に50回以上のサインアップが行われた場合
例としては、次のような形で機能します。
- IPアドレス①からユーザーAに対して10回連続でログインに失敗した場合
- IPアドレス①からユーザーAでログインしようとした場合は弾かれる
- IPアドレス①からユーザーBでログインしようとした場合は弾かれない
検知時のメールのメッセージ
Brute-force Protectionは「何度もログインしようとしている行為を検知すること」がポイントですが、何度もログインしようとしている人物が攻撃者だけとは限りません。もしかしたらパスワードを忘れてしまったアカウント所持者が「あーでもないこーでもない」と言った具合でログインを試行している可能性もあります。
Auth0のBrute-force Protectionでは、検知した際にメールが送られてきます。そのメールでは上述している「なぜBrute-force Protectionが発動したのか」といったコンテキストを正しく伝えなければ、ユーザーにとっていまどのような状態にあるのか把握できなくなってしまいます。
そこで、Brute-force Protectionを検知した際に送信されるメールのメッセージを分かりやすくカスタマイズする必要が出てくるというわけです。
デフォルトのメッセージを確認する
まずはBrute-force Protectionを発動させ、検知したことを知らせるメールのメッセージを確認してみましょう。同じメールアドレスに対し10回ログインに失敗すると、それ以降はブロックされます。
該当のアカウントには以下のようなメールが届きます。英文で届くので、国内のユーザーにとっては分かりづらいです。日本のサービスを使っているのに、単に英語というだけで不審がる場合もあります。
メールのメッセージをカスタマイズする
メールのメッセージは、左メニューの Email のメニュー内の Templates から行えます。表示されるドロップダウンメニューから Blocked Account Email を選択し、メッセージテンプレートを編集します。
メッセージ本文を載せると長くなってしまうので、特に重要な部分だけ掲載します。下記のように変更しました。
<h1>ログインをブロックしました</h1> <p> いつもご利用いただきありがとうございます。お客様のアカウントへの不正なログインを検知したため、次のアクセスをロックしました。 <p/> <ul style="text-align: left;"> <li>IPアドレス : <strong>{{ user.source_ip }}</strong></li> <li>地域 : <strong>{{ user.city }}</strong></li> <li>国 :<strong>{{ user.country }}</strong></li> </ul> <p> もし心当たりがある場合は <a href="{{ url }}">こちら</a> をクリックし、ロックを解除してください。 </p> <p> 不正なアクセスからのみブロックされているため、<strong>お客様のアカウント自体はロックされておりません。</strong> </p>
テンプレート内で使える変数およびシンタックスは下記のドキュメントを参考にしてください。
下図のようなメールが届くようになります。TRY ボタンを押すと気軽に試せるので、実際に届くメールを確認しながら調整すると良いかと思います。
細やかな部分をローカライズすることにより、国内向けの体験を良くしよう
Auth0は非常に便利な機能が備わっていますが、基本的には英文のテンプレートで用意されているところはカスタマイズが必要です。
今回ご紹介したBrute-force Protectionはデフォルトで有効になっているため、運用フェーズでこの機能の存在に気づく場合もあります。本記事を参考に、ぜひローカライズを行なってみてください。