#1 楼
根据另一个Stack Exchange社区的解释,这是一项安全功能。这是该功能解决的两个漏洞:此(原文如此)可以限制登录尝试,这意味着有人无法尽快尝试破坏系统破解它(1M尝试几秒钟?idk)。
如果它在确认您的凭据不正确后立即执行,则可以使用它花费的时间使它失效您的凭据,以帮助您猜测部分凭据是否正确,从而大大减少了猜测时间。
关于是否可以消除延迟,不可以,但是可以修改根据此答案,至少需要2秒。打开文件
/etc/login.defs
并将值设置为FAIL_DELAY
。#2 楼
简短答案:减少登录尝试的次数
防止快速强行使用密码。
这会使密码的猜测时间更长。
大大提高安全性
综合:
实际上是为了防止暴力攻击每秒尝试数百万个密码。这样做的目的是限制如何快速检查密码,并应遵循许多规则。
成功的用户名/密码对应立即成功。
在“无效的用户和密码”和“有效的用户但无效的密码”失败原因之间的响应甚至没有时间差异。
/>
每个故障都应该传递完全相同的信息,无论是文字还是其他形式。
某些系统将其推向更远,增加每次故障的延迟,或者只允许三个故障,然后再进行大量故障允许重试之前的延迟。
此行为的通用术语是tarpitting。 (维基百科非常关注网络)。
摘自《 Linux-PAM应用程序开发人员指南》:
计划延迟
extern int pam_fail_delay(pam_handle_t *pamh, unsigned int micro_sec);
Linux-PAM提供此功能
,以方便在控制返回到
后对pam_authenticate()和
的失败调用后的时间延迟。应用。使用此功能
时,应用程序程序员应
检查其是否可用,
#ifdef PAM_FAIL_DELAY
....
#endif /* PAM_FAIL_DELAY */
通常,应用程序要求
用户通过调用
pam_authenticate()或pam_chauthtok()由Linux-PAM进行身份验证。
这些函数调用列出的每个
堆叠式身份验证模块
在相关的Linux-PAM
配置文件中。按照该文件的指示,
是其中一个或多个模块之一。可能会导致对
的pam _...()调用失败,并返回错误。希望
在继续应用程序之前也要暂停一下。造成这种延迟的主要原因是安全性:
延迟主要是防止暴力破解
,但是
有助于阻止定时(隐蔽通道)
攻击。
本文还提供了更全面的信息。
要消除/调整延迟,请执行以下操作:
延迟可能是由于
pam_faildelay.so
使用
/etc/pam.d/login
检查pam_faildelay
中的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
< br另一个造成延迟的原因可能是
pam_unix.so
编辑
/etc/pam.d/common-auth
并添加节点布局,例如,auth [success=1 default=ignore] pam_unix.so nullok_secure
已更改为
auth [success=1 default=ignore] pam_unix.so nullok_secure nodelay
注:对于CentOS,RHEL和Fedora:您必须寻找
/etc/pam.d/system-auth
参考文献:
为什么拒绝无效的密码要比接受有效的密码花费更长的时间?
为什么检查错误的密码要比检查正确的密码花费的时间更长?
Linux- PAM系统管理员指南
为什么输入错误密码后会有很大的延迟?
评论
感谢你的回答!通常,不鼓励在StackExchange上仅进行链接。您可以编辑帖子以包含相关信息吗? :)
–丹尼尔·佛雷(DanielForé)
15年7月20日在1:57
哦,糟糕!很抱歉,您是新手,在加入之前没有阅读文档中的更多内容。更新的答案现在好吗?
– Maliktunga
15年7月20日在2:09
辉煌的答案!谢谢!我在问自己同样的问题!
– r3bl
15年7月20日在8:31
没问题!感谢David Mulder改进了格式。
– Maliktunga
2015年7月21日,下午3:14