16.3. 暴力强制攻击
暴力强制通过尝试多次登录来猜测用户密码。红帽构建的 Keycloak 具有强行强制检测功能,如果登录失败超过指定阈值,则可以永久或临时禁用用户帐户。
当用户锁定并尝试登录时,Red Hat build of Keycloak 会显示默认的 Invalid username 或 password 错误消息。这个消息与为无效的用户名或无效密码显示的消息相同,以确保攻击者不知道帐户被禁用。
默认情况下禁用括号强制检测。启用此功能来防止暴力攻击。
启用这个保护:
- 在菜单中点 Realm Settings
- 点 Security Defenses 选项卡。
- 点 Brute Force Detection 选项卡。
选择最适合您的要求的品牌强制模式。
波形强制检测
16.3.1. 永久锁定 复制链接链接已复制到粘贴板!
Red Hat build of Keycloak 禁用用户帐户(阻止登录尝试),直到管理员重新启用它。
永久锁定
永久锁定参数
| Name | 描述 | 默认 |
|---|---|---|
| 最大登录失败 | 登录失败的最大数量。 | 30 失败 |
| 快速登录检查 Milliseconds | 登录尝试之间的最短时间。 | 1000 毫秒 |
| 最小快速登录等待 | 当登录尝试比 Quick Login Check Milliseconds 更快时,用户禁用的最短时间。 | 1 分钟 |
永久锁定流
成功登录后
-
重置
计数
-
重置
在失败的登录时
-
增加
计数 如果
计数大于或等于Max login failures- 锁定用户
如果这个失败的时间和最后一个故障小于 Quick Login Check Milliseconds,则其他情况
- 锁定用户在 最小快速登录等待时指定的时间
-
增加
启用用户帐户重置 计数。
16.3.2. 临时锁定 复制链接链接已复制到粘贴板!
红帽构建的 Keycloak 在特定时间段内禁用用户帐户。当攻击继续进行时,禁用帐户的时间周期会增加。
临时锁定
临时锁定参数
| Name | 描述 | 默认 |
|---|---|---|
| 最大登录失败 | 登录失败的最大数量。 | 30 失败 |
| 增加等待时间的策略 | 当用户登录尝试超过 Max Login失败时,可以增加用户临时禁用的时间 | Multiple |
| wait Increment | 当用户登录尝试超过 Max Login Failures 时,用户临时禁用到用户的时间。 | 1 分钟 |
| Max Wait | 临时禁用用户的最长时间。 | 15 分钟 |
| 故障重置时间 |
故障计数重置的时间。计时器从最后一次失败的登录中运行。请确保此数字始终大于 | 12 小时 |
| 快速登录检查 Milliseconds | 登录尝试之间的最短时间。 | 1000 毫秒 |
| 最小快速登录等待 | 当登录尝试比 Quick Login Check Milliseconds 更快时,用户禁用的最短时间。 | 1 分钟 |
临时锁定算法
成功登录后
-
重置
计数
-
重置
在失败的登录时
如果此故障和最后一个故障之间的时间大于 Failure Reset Time
-
重置
计数
-
重置
-
增加
计数 -
根据定义的波形强制策略计算
等待(请参阅以下策略来设置 Wait Time)。 如果
等待小于或等于 0,且这个失败之间的时间小于 Quick Login Check Milliseconds-
将
wait设置为 Minimum Quick Login Wait
-
将
如果
wait大于 0-
为
等待和 Max Wait 秒的最小值临时禁用用户
-
为
当临时禁用的帐户提交登录失败时,计数 不会递增。
设置等待时间的策略
红帽 Keycloak 的构建提供了两个用于计算等待时间的策略: By multiples 或 Linear。通过多个策略,是红帽构建的 Keycloak 所引入的第一个策略,因此是默认的策略。
根据多个策略,当故障的数量(或计数)是 Max Login Failure 的倍数时,等待时间会递增。例如,如果您将 Max Login Failures 设置为 5,而 Wait Increment 设为 30 秒,则帐户在多次验证尝试失败后将被禁用的有效时间:
|
|
|
|
|
| 1 | 30 | 5 | 0 |
| 2 | 30 | 5 | 0 |
| 3 | 30 | 5 | 0 |
| 4 | 30 | 5 | 0 |
| 5 | 30 | 5 | 30 |
| 6 | 30 | 5 | 30 |
| 7 | 30 | 5 | 30 |
| 8 | 30 | 5 | 30 |
| 9 | 30 | 5 | 30 |
| 10 | 30 | 5 | 60 |
在第五次失败尝试时,该帐户在 30 秒内被禁用。到达下一次 Max Login Failures 后,本例中为 10,时间从 30 秒增加到 60 秒。
By multiple 策略使用以下公式来计算等待时间:Seconds 中的 Wait Increment in Seconds (计数 / Max Login Failures)。划分是一个整数部门,舍入为一个整数。
对于线性策略,当失败的数量(或数字)大于或等于 Max Login Failure 时,等待时间会递增。例如,如果您将 Max Login Failures 设置为 5,而 Wait Increment 设为 '30' 秒,则帐户在多次验证尝试失败后将禁用的有效时间:
|
|
|
|
|
| 1 | 30 | 5 | 0 |
| 2 | 30 | 5 | 0 |
| 3 | 30 | 5 | 0 |
| 4 | 30 | 5 | 0 |
| 5 | 30 | 5 | 30 |
| 6 | 30 | 5 | 60 |
| 7 | 30 | 5 | 90 |
| 8 | 30 | 5 | 120 |
| 9 | 30 | 5 | 150 |
| 10 | 30 | 5 | 180 |
在第五次失败尝试时,该帐户在 30 秒内被禁用。每个新失败会根据在等待 递增 时指定的值增加等待时间。
线性策略使用以下公式来计算等待时间: Seconds * 中的 Wait Increment (1 + count - Max Login Failures)。
16.3.3. 临时锁定后永久锁定 复制链接链接已复制到粘贴板!
混合模式.临时锁定用户指定次数,然后永久锁定用户。
临时锁定后永久锁定
临时锁定参数后永久锁定
| Name | 描述 | 默认 |
|---|---|---|
| 最大登录失败 | 登录失败的最大数量。 | 30 失败 |
| 最大临时锁定 | 在发生永久锁定前允许的最大临时锁定数量。 | 1 |
| 增加等待时间的策略 | 当用户登录尝试超过 Max Login失败时,可以增加用户临时禁用的时间 | Multiple |
| wait Increment | 当用户登录尝试超过 Max Login Failures 时,用户临时禁用到用户的时间。 | 1 分钟 |
| Max Wait | 临时禁用用户的最长时间。 | 15 分钟 |
| 故障重置时间 |
故障计数重置的时间。计时器从最后一次失败的登录中运行。请确保此数字始终大于 | 12 小时 |
| 快速登录检查 Milliseconds | 登录尝试之间的最短时间。 | 1000 毫秒 |
| 最小快速登录等待 | 当登录尝试比 Quick Login Check Milliseconds 更快时,用户禁用的最短时间。 | 1 分钟 |
临时锁定算法后永久锁定
成功登录后
-
重置
计数 -
重置
临时锁定计数器
-
重置
在失败的登录时
如果此故障和最后一个故障之间的时间大于 Failure Reset Time
-
重置
计数 -
重置
临时锁定计数器
-
重置
-
增加
计数 -
根据定义的波形强制策略计算
等待(请参阅以下策略来设置 Wait Time)。 如果
等待小于或等于 0,且这个失败之间的时间小于 Quick Login Check Milliseconds-
将
wait设置为 Minimum Quick Login Wait -
将
快速登录失败设置为true'
-
将
如果
wait和Maximum temporary Lockouts大于 0-
将
wait设置为wait和 Max Wait 秒的最小值
-
将
如果
快速登录失败为false-
增加
临时锁定计数器
-
增加
如果
临时锁定计数器超过最大临时锁定- 永久锁定用户
其他
-
根据
等待值临时阻止用户
-
根据
当临时禁用的帐户提交登录失败时,计数 不会递增。
16.3.4. Red Hat build of Keycloak brute force detection 复制链接链接已复制到粘贴板!
红帽构建的 Keycloak 盘检测的缺点是服务器会受到拒绝服务攻击的影响。在实施拒绝服务攻击时,攻击者可以通过猜测其知道的帐户的密码来尝试登录,并最终导致红帽构建的 Keycloak 禁用帐户。
考虑使用入侵防止软件(IPS)。Red Hat build of Keycloak 会记录每个登录失败和客户端 IP 地址失败。您可以将 IPS 指向红帽构建的 Keycloak 服务器日志文件,IPS 可以修改防火墙以阻止来自这些 IP 地址的连接。