15.3. brute 强制攻击
静默强制通过尝试多次登录来尝试猜测用户的密码。Red Hat build of Keycloak 具有 brute 强制检测功能,如果登录失败次数超过指定的阈值,可以临时禁用用户帐户。
红帽构建的 Keycloak 默认禁用 brute 强制检测。启用此功能可防止防止暴力攻击。
流程
启用此保护:
- 在菜单中点 Realm Settings
- 点 Security Defenses 选项卡。
点 Brute Force Detection 选项卡。
brute 强制检测
红帽构建的 Keycloak 可以在检测到攻击时部署永久锁定和临时锁定操作。永久锁定会禁用用户帐户,直到管理员重新启用它。临时锁定会禁用特定时间段内的用户帐户。当攻击持续增加时,帐户被禁用的时间周期会增加,后续的故障到达 Max Login Failures
的倍数。
当用户被临时锁定并尝试登录时,红帽构建的 Keycloak 会显示默认的 Invalid username 或 password
错误消息。这个消息与为无效用户名或无效密码显示的消息相同,以确保攻击者不知道帐户已被禁用。
常见参数
Name | 描述 | 默认 |
---|---|---|
最大登录失败 | 登录失败的最大数量。 | 30 个故障。 |
快速登录检查 Milliseconds | 登录尝试之间的最短时间。 | 1000 毫秒。 |
最小快速登录等待 | 当登录尝试速度快于 Quick Login Check Milliseconds 时,用户会被禁用的最短时间。 | 1 分钟. |
临时锁定参数
Name | 描述 | 默认 |
---|---|---|
wait Increment | 当用户登录尝试超过 Max Login Failure 时,添加到用户的时间会被临时禁用。 | 1 分钟. |
Max Wait | 用户暂时禁用的最长时间。 | 15 分钟. |
失败重置时间 |
失败计数重置的时间。计时器从上次失败的登录运行。确保这个数字始终大于 | 12 小时. |
临时锁定算法
成功登录
-
重置
计数
-
重置
登录失败时
如果此失败和最后一次失败之间的时间大于 Failure Reset Time
-
重置
计数
-
重置
-
增加
计数
-
使用
Wait Increment
* 计算等待 (计数
/ Max Login Failures)。该部门是一个整数部门,舍入为一个整数 如果
等待
等于 0,且最后一次失败的时间小于 Quick Login Check Milliseconds,请将wait
to Minimum Quick Login Wait。-
临时禁用用户
等待
和 Max Wait 秒的最小时间 - 增加临时锁定计数器
-
临时禁用用户
当临时禁用的帐户提交登录失败时,计数
不会递增。
例如,如果您将 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 |
请注意,Effective Wait Time
at the 5th failed trying 将禁用帐户 30
秒。只有达到下一个 Max Login
Failure (本例中为 10
)后,将时间从 30
增加到 60
。只有在达到 Max Login Failures
的倍数时,才会禁用该帐户的时间。
永久锁定参数
Name | 描述 | default |
---|---|---|
最大临时锁定 | 在发生永久锁定前允许的最大临时锁定数。 | 0 |
永久锁定流
- 遵循临时锁定流
如果临时锁定计数器超过 Max temporary lockouts
- 永久禁用用户
当红帽构建的 Keycloak 禁用用户时,用户无法登录,直到管理员启用了用户。启用帐户会重置 计数
。
红帽构建的 Keycloak brute 检测是服务器易受拒绝服务攻击的影响。当实施拒绝服务攻击时,攻击者可以尝试通过猜测其知道的任何帐户的密码登录,并最终导致红帽构建的 Keycloak 禁用帐户。
考虑使用入侵防止软件(IPS)。红帽构建的 Keycloak 都会记录每个登录失败和客户端 IP 地址失败。您可以将 IPS 指向红帽构建的 Keycloak 服务器日志文件,IPS 可以修改防火墙来阻止这些 IP 地址的连接。
15.3.1. 密码策略 复制链接链接已复制到粘贴板!
确保您有一个复杂的密码策略来强制用户选择复杂的密码。如需更多信息,请参阅 密码策略 章节。???通过将红帽构建的 Keycloak 服务器设置为使用一次性密码,防止密码猜测。