16.3. 暴力强制攻击


暴力强制通过尝试多次登录来猜测用户密码。红帽构建的 Keycloak 具有强行强制检测功能,如果登录失败超过指定阈值,可以临时禁用用户帐户。

注意

默认情况下,Red Hat build of Keycloak 禁用括号强度检测。启用此功能来防止暴力攻击。

流程

启用这个保护:

  1. 在菜单中点 Realm Settings
  2. Security Defenses 选项卡。
  3. Brute Force Detection 选项卡。

    波形强制检测

    brute force

红帽 Keycloak 的构建可以在检测到攻击时部署永久锁定和临时锁定操作。永久锁定会禁用用户帐户,直到管理员重新启用它。临时锁定在指定时间段内禁用用户帐户。当攻击继续进行并后续的失败达到 Max Login Failures 时,禁用帐户的时间周期会增加。

注意

当用户被临时锁定并尝试登录时,Red Hat build of Keycloak 会显示默认的 Invalid username 或 password 错误消息。这个消息与为无效的用户名或无效密码显示的消息相同,以确保攻击者不知道帐户被禁用。

常用参数

Expand
Name描述默认

最大登录失败

登录失败的最大数量。

30 个故障。

快速登录检查 Milliseconds

登录尝试之间的最短时间。

1000 毫秒。

最小快速登录等待

当登录尝试比 Quick Login Check Milliseconds 更快时,用户禁用的最短时间。

1 分钟.

临时锁定参数

Expand
Name描述默认

wait Increment

当用户登录尝试超过 Max Login Failures 时,用户临时禁用到用户的时间。

1 分钟.

Max Wait

临时禁用用户的最长时间。

15 分钟.

故障重置时间

故障计数重置的时间。计时器从最后一次失败的登录中运行。请确保此数字始终大于 Max wait ;否则,有效等待时间永远不会到达您设置为 Max wait 的值。

12 小时.

临时锁定算法

  1. 成功登录后

    1. 重置 计数
  2. 在失败的登录时

    1. 如果此故障和最后一个故障之间的时间大于 Failure Reset Time

      1. 重置 计数
    2. 增加 计数
    3. 根据定义的波形强制策略计算 等待 (请参阅以下策略来设置 Wait Time)。
    4. 如果 等待 等于小于 0,且此失败与最后一个故障之间的时间小于 Quick Login Check Milliseconds,请将 wait 设置为 Minimum Quick Login Wait

      1. 等待Max Wait 秒的最小值临时禁用用户
      2. 增加临时锁定计数器

当临时禁用的帐户提交登录失败时,计数 不会递增。

设置等待时间的策略

红帽 Keycloak 的构建提供了两个用于计算等待时间的策略: By multiples 或 Linear。通过多个策略,是红帽构建的 Keycloak 所引入的第一个策略,因此是默认的策略。

根据多个策略,当故障的数量(或计数)是 Max Login Failure 的倍数时,等待时间会递增。例如,如果您将 Max Login Failures 设置为 5,而 Wait Increment 设为 30 秒,则帐户在多次验证尝试失败后将被禁用的有效时间:

Expand

失败数

wait Increment

最大登录失败

有效等待时间

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

在第五次尝试 Effective Wait Time 时,帐户在 30 秒内被禁用。到达下一次 Max Login Failures 后,本例中为 10,时间从 30 秒增加到 60 秒。

By multiple 策略使用以下公式来计算等待时间: Wait Increment * (计数 / Max Login Failures)。划分是一个整数部门,舍入为一个整数。

对于线性策略,当失败的数量(或计数)等于或大于 Max Login Failure 时,等待时间会递增。例如,如果您将 Max Login Failures 设置为 5,而 Wait Increment 设为 '30' 秒,则帐户在多次验证尝试失败后将禁用的有效时间:

Expand

失败数

wait Increment

最大登录失败

有效等待时间

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

在第五次尝试执行 Effective Wait Time 时,帐户在 30 秒内被禁用。每次新失败尝试都会增加等待时间。

线性策略使用以下公式来计算等待时间: Wait Increment *(1 + count - Max Login Failures)。

永久锁定参数

Expand
Name描述default

最大临时锁定

在发生永久锁定前允许的最大临时锁定数量。

0

永久锁定流

  1. 遵循临时锁定流
  2. 如果临时锁定计数器超过 Max temporary lockouts

    1. 永久禁用用户

当 Red Hat build of Keycloak 禁用用户时,用户无法登录,直到管理员启用了该用户。启用帐户重置 计数

红帽构建的 Keycloak 盘检测的缺点是服务器会受到拒绝服务攻击的影响。在实施拒绝服务攻击时,攻击者可以通过猜测其知道的帐户的密码来尝试登录,并最终导致红帽构建的 Keycloak 禁用帐户。

考虑使用入侵防止软件(IPS)。Red Hat build of Keycloak 会记录每个登录失败和客户端 IP 地址失败。您可以将 IPS 指向红帽构建的 Keycloak 服务器日志文件,IPS 可以修改防火墙以阻止来自这些 IP 地址的连接。

16.3.1. 密码策略

确保您有一个复杂的密码策略,以强制用户选择复杂的密码。如需更多信息,请参阅 密码策略 章节。???通过将红帽构建的 Keycloak 服务器设置为使用一次性密码来防止密码猜测。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat