如何更改输入错误密码后发生的延迟?


32

在登录提示符下输入错误的密码后,大约需要3秒钟的延迟。如何在带有PAM的Linux系统上进行更改?


1
我得到从安全角度来看,延迟的需求,但是默认的延迟相当恼人
迈克·潘宁顿

3
这很有趣。也许我会写一个模块,该模块允许无延迟的N次尝试,然后允许任何数量的具有较长延迟的尝试。
肖恩·高夫

1
我没有使用新的模块(在我先前的评论中建议),而是将pam_unix其与nodelayoption和pam_tally2with一起使用deny=5 unlock_time=15。这允许5次立即重试,但拒绝访问(即使输入了成功的密码)15秒钟。我仍然打算尝试编写描述的模型,但是现在这是一个后备项目,因为如果您对系统的主要访问是基于网络的,那么这将是不合适的,因为它会使DOS攻击变得微不足道。
肖恩·高夫

1
如果您担心网络DoS超时,请使用fail2ban ...实际上,即使您认为安全也可以使用它:-)。我使用两天禁令时间
Mike Pennington 2012年

Answers:


21

我假设您正在使用Linux和pam。延迟可能是由引起的pam_faildelay.so。检查您的PAM配置/etc/pam.d使用pam_faildelay,如:

# 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

要更改时间,请调整延迟参数。如果要消除延迟,可以删除/注释整行。

延迟的另一个来源可能是pam_unix.so。要禁用由pam_unix.so添加nodelay参数引起的延迟,并且可以选择添加一行调用pam_faildelay.so来添加(可变)延迟,例如:

auth       optional   pam_faildelay.so  delay=100000

2
在中没有任何地方提到延迟/etc/pam.d/*。我看到的最接近的东西是pam_tally.so允许经过多次尝试后锁定。但是我确实有n /etc/login.defs,这可能是我所需要的。
肖恩·高夫

pam_tally.so据我所知,@ ShawnJ.Goff 不会引起延迟。该协议的另一个来源可能是pam_unix.so-您可以使用该nodelay选项将其禁用- 有关更多详细信息,请参见linux.die.net/man/8/pam_unix
Ulrich Dangel 2012年

1
添加nodelay选项pam_unix.so并使用添加新条目pam_faildelay.so delay=$some_number使我可以设置所需的内容。谢谢!
肖恩·高夫

2
运行fedora 23,我必须禁用pam_unix.so延迟,然后pam_faildelay.so按照@ ShawnJ.Goff所说的开始使用它。但是,大多数pam.d配置都具有“ 该文件是自动生成的。下次运行authconfig时,用户更改将被破坏。 ”那么,在哪里可以永久配置延迟?
jozxyqk '16

11

您需要将nodelay参数传递给auth pam_unix.so

根据身份验证方式的不同,需要在何处设置参数。但是,大多数 linux发行版都/etc/pam.d/system-auth包含所有类似的文件。

因此,例如,在其中/etc/pam.d/system-auth您可能会有如下所示的一行:

auth            sufficient      pam_unix.so try_first_pass nullok

这应该更改为:

auth            sufficient      pam_unix.so try_first_pass nullok nodelay

pam_unix.so模块是针对/etc/passwd和执行身份验证的模块/etc/shadow。如果您使用LDAP或其他一些密码后端,则可能仍应在nodelay上进行设置,pam_unix.so因为那是控制提示的内容(当pam_unix.so身份验证失败时,通常只会将获取的密码传递给下一个模块)。

你可以阅读更多关于pam_unix.soman pam_unix


在我的系统system-auth上不存在;是/etc/common-auth。谢谢!
卢克(Luc)2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.