当我使用正确的密码登录我的 Ubuntu 8.10 机器时,系统几乎立即就知道密码正确并让我登录。但是,如果我提供了错误的密码,则需要更长的时间才能知道密码不正确并显示登录屏幕。
这是为什么?两种情况下不应该花费相同的时间吗?
- 谢谢
答案1
这是一项安全功能,可以减缓那些试图猜测您密码的人的速度。Ubuntu 需要相同的时间来判断密码是否正确,但随后会等待几秒钟,然后让您重试。
答案2
正如 Dentrasi 所解释的那样 - 这是为了让攻击者更难对密码存储进行暴力攻击。在几乎所有情况下,您都不需要更改此行为。
如果你有充分的理由(我想不出来),你可以通过以下方式修改它/etc/login.defs
- 参见登录.defs(5)请参阅手册页。
FAIL_DELAY (number)
Delay in seconds before being allowed another attempt after a login failure.
嗯...在手册页的末尾......
Much of the functionality that used to be provided by the shadow password suite
is now handled by PAM. Thus, /etc/login.defs is no longer used by passwd(1), or
less used by login(1), and su(1). Please refer to the corresponding PAM
configuration files instead.
改为适当的 PAM 条目...
# Enforce a minimal delay in case of failure (in microseconds).
# (Replaces the `FAIL_DELAY' setting from login.defs)
# Note that other modules may require another minimal delay. (for example,
# to disable any delay, you should add the nodelay option to pam_unix)
auth optional pam_faildelay.so delay=3000000
答案3
pam.d 目前负责处理 FAIL_DELAY。将其添加到 /etc/pam.d/common-auth(适用于 Debian / Ubuntu):
身份验证需要 pam_unix.so nodelay
Fedora / Redhat:将其添加到 /etc/pam.d/system-auth:
身份验证需要 /lib/security/$ISA/pam_unix.so nodelay
$ISA 仅用于在 32 位和 64 位模块之间进行选择,并且已经定义。
答案4
说到 PAM,如果计算机设置了 LDAP 或 Kerberos 或类似的网络身份验证,则当本地登录失败时,它将尝试使用提供的凭据进行远程登录。 (但与这个问题无关。)