输入错误密码后 passwd 暂停

neu*_*ert 1 linux bash passwd ubuntu

假设您输入了 passwd 并输入了错误的密码。在它告诉您密码错误和您输入密码之间存在明显的延迟。关于为什么的任何想法?好像有点奇怪...

这是我输入错误密码时收到的消息如下:

passwd: Authentication token manipulation error
passwd: password unchanged
Run Code Online (Sandbox Code Playgroud)

也许它试图通过降低尝试新密码的速度来防止暴力尝试?

无论哪种方式,是否有关于这种行为的讨论?我在手册页中没有看到任何注释..

Den*_*nis 6

是的,这是为了防止蛮力攻击。

一个由字母数字组成的 6 个字符的密码最多可以有 36 位熵(每个字符 6 位)。如果一台计算机每秒可以检查 10 亿个密码,那么它只需2 ^ 36 / 1 billion = 69几秒钟就可以尝试所有可能的密码。一秒的延迟意味着每秒只能尝试一个密码。尝试所有可能的密码现在需要 2179 年......

延迟不是由 passwd 本身处理,而是由Pluggable Authentication Modules 处理

可以通过nodelay在行中添加选项来禁用 passwd 的延迟

password        [success=2 default=ignore]      pam_unix.so obscure sha512
Run Code Online (Sandbox Code Playgroud)

/etc/pam.d/common-password。由于这也会影响使用该配置文件的所有其他程序,因此您可以将其复制/etc/pam.d/passwd并仅在那里禁用延迟。

另见:man pam_unix


Pau*_*aul 5

是的,延迟是为了防止蛮力,大约是 3 秒。

之所以没有出现在 passwd man 中,是因为它是由身份验证后端控制的——通常是pam.

man pam_unix
Run Code Online (Sandbox Code Playgroud)

显示您可以设置一个nodelay来消除延迟。您还可以设置应用程序特定的延迟pam_faildelay

man pam_faildelay
Run Code Online (Sandbox Code Playgroud)

这些设置都在

/etc/pam.d/*
Run Code Online (Sandbox Code Playgroud)