15.3. 総当たり攻撃
総当たり攻撃は、複数回ログインを試みることで、ユーザーのパスワードを推測しようとします。Red Hat build of Keycloak には、ブルートフォース検出機能があり、ログインの失敗数が指定のしきい値を超えた場合にユーザーアカウントを一時的に無効にできます。
Red Hat build of Keycloak は、デフォルトでブルートフォース検出を無効にします。この機能を有効にして、総当たり攻撃から保護します。
手順
この保護を有効にするには、以下を実行します。
- メニューで Realm Settings をクリックします。
- Security Defenses タブをクリックします。
Brute Force Detection タブをクリックします。
総当たり攻撃の検出
Red Hat build of Keycloak は、攻撃の検出時に永続的なロックアウトおよび一時ロックアウトアクションをデプロイできます。永続的なロックアウトは、管理者が有効にするまでユーザーアカウントを無効にします。一時的なロックアウトは、特定の期間、ユーザーアカウントを無効にします。攻撃が続くと、アカウントが無効になる期間が長くなります。
ユーザーが一時的にロックされ、ログインを試みると、Red Hat build of Keycloak にデフォルトの Invalid username or password
エラーメッセージが表示されます。このメッセージは、アカウントが無効になっていることに攻撃者が気付かないようにするために、無効なユーザー名または無効なパスワードに対して表示されるメッセージと同じエラーメッセージです。
一般的なパラメーター
Name | 説明 | デフォルト |
---|---|---|
Max Login Failures | ログイン失敗の最大数。 | 30 回失敗 |
Quick Login Check Milliseconds | ログイン試行の最小時間。 | 1000 ミリ秒 |
Minimum Quick Login Wait | ログイン試行が Quick Login Check Milliseconds よりも短い場合にユーザーが無効になる最小時間。 | 1 分 |
永続的なロックアウトフロー
正常なログイン時
-
count
のリセット
-
ログインの失敗
-
count
のインクリメント count
が Max Login Failures を超える数の場合- ユーザーを完全に無効にする
それ以外の場合、この障害から最後の障害までの時間がQuick Login Check Milliseconds 未満の場合
- 最小クイックログイン待機のユーザーを一時的に無効にする
-
Red Hat build of Keycloak がユーザーを無効にすると、管理者がユーザーを有効にするまでユーザーはログインできません。アカウントを有効にすると、カウント
がリセットされます。
一時的なロックアウトパラメーター
Name | 説明 | デフォルト |
---|---|---|
Wait Increment | ユーザーのログイン試行が Max Login Failures を超えると、ユーザーが一時的に無効になる時間に追加された時間。 | 1 分 |
Max Wait | ユーザーが一時的に無効になっている最大時間。 | 15 分 |
Failure Reset Time | 失敗数がリセットされる時間。最後にログインに失敗したタイミングからタイマーが実行されます。 | 12 時間 |
一時的なロックアウトアルゴリズム
正常なログイン時
-
count
のリセット
-
ログインの失敗
この障害から最後の障害までの時間がFailure Reset Time よりも長い場合
-
count
のリセット
-
-
count
のインクリメント -
Wait Increment * (
count
/ Max Login Failures) を使用してwait
を計算します。除算は、整数に丸められる整数除算です。 wait
時間が 0 で、この失敗から最後の失敗までの時間が Quick Login Check Milli Seconds よりも小さい場合は、代わりにwait
を Minimum Quick Login Wait に設定してください。-
wait
秒および Max Wait 秒の短い方のユーザーを一時的に無効にします。
-
一時的に無効にされたアカウントがログインに失敗した場合、count
は増加しません。
Red Hat build of Keycloak のブルートフォース検出の欠点として、サーバーが DoS 攻撃に対して脆弱になることが挙げられます。攻撃者は、DoS 攻撃を実行する際に知っているアカウントのパスワードを推測してログインを試み、最終的にそのアカウントが Red Hat build of Keycloak によって無効にされる可能性があります。
侵入防止ソフトウェア (IPS) の使用を検討してください。Red Hat build of Keycloak は、ログインの失敗とクライアント IP アドレスの失敗をすべてログに記録します。IPS を、Red Hat build of Keycloak サーバーのログファイルを指すように設定できます。IPS は、ファイアウォールを変更して IP アドレスからの接続をブロックできます。
15.3.1. パスワードポリシー リンクのコピーリンクがクリップボードにコピーされました!
複雑なパスワードポリシーで、ユーザーが強制的に複雑なパスワードを選択するようにします。詳細については、パスワードポリシー の章を参照してください。Red Hat build of Keycloak でワンタイムパスワードを使用するように設定することで、パスワードの推測を防ぎます。