这是困扰我多年的事情,我很好奇你们中的一位超级管理员是否可以向我解释。
如果我通过 ssh 进入我的一个 linux 机器并提供正确的凭据,我的身份验证几乎是即时的。在同一个框中,如果我提供了错误的密码,则需要几秒钟才能显示失败的登录消息并重新提示。使用错误密码这么长时间才失败的服务器上发生了什么?
谢谢sf!
SR
fre*_*eit 13
这是由检查密码的 PAM 模块实现的安全功能。
如果您阅读 pam_unix(8) 的联机帮助页,您将看到一个“nodelay”选项。ssh 使用 pam_unix 来检查密码、登录以及任何其他检查密码的操作。“默认操作是模块请求延迟两秒的故障延迟。”
所有 pam 模块都可以调用一个函数来请求主 pam 内容延迟。pam_fail_delay。此函数占用任何调用的模块的最长延迟,并随机更改最多 25%,并在返回应用程序(sshd、登录等)之前等待很长时间。
这是许多系统上的常见安全措施,失败(例如尝试检查不存在的用户的密码)将插入一个小的睡眠。这可以防止计时攻击,否则与尝试登录不存在的帐户相比,不成功登录到有效帐户可能需要稍长的时间(加密密码、主目录中的统计信息等)。其他术语是隐蔽信道、定时信道或旁道攻击。它还阻止了蛮力攻击(但不是很好,只是打开更多连接)。随机化睡眠也有一点帮助。
尽管我对 OpenSSH 的工作原理并不十分熟悉,但这是一项安全功能,这是有道理的。没有延迟,(自动)攻击者很容易在很短的时间内尝试多次密码。任何类型的“污泥因素”都会使这种类型的攻击不太可行。