Answers:
这是安全的事情,实际上并不需要花费很长时间。解决的2个漏洞:
这会限制登录尝试,这意味着有人无法像尝试破解它一样快地砸系统(每秒1M次尝试?我不知道)。
如果它在验证您的凭据不正确后立即执行此操作,则可以使用它花费的时间使凭据无效,以帮助您猜测部分凭据是否正确,从而大大减少了猜测时间。
为了防止这两件事,系统只需要花费一定的时间就可以了,我想您可以使用PAM配置等待时间(请参阅Michaels answer)。
这是有意的,试图限制暴力破解。通常,您可以通过在其中查找FAIL_DELAY
配置项/etc/login.defs
并更改其值来修改它(3
默认情况下,我的默认值为秒),尽管该文件中的注释听起来像PAM至少会强制执行2
第二次延迟。
/etc/pam.d/login
。寻找pam_faildelay.so delay=
在现代linux系统上,原因是pam_unix.so施加了这样的延迟。如先前所报道,通过更改FAIL_DELAY
,可以将其配置为两秒钟/etc/login.defs
。如果要进一步减少延迟,则必须给pam_unix.so提供“ nodelay”选项。例如,在我的系统上,如果您从跟踪包含/etc/pam.d/sudo
,您将发现必须编辑以下行/etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
并将其更改为:
auth required pam_unix.so try_first_pass nullok nodelay
不幸的是,我的Linux发行版(arch)配置事物的方式是,sshd使用了system-auth
包含相同文件的文件system-remote-login
。
尽管可以安全地消除sudo上的延迟,因为它是已记录的,仅由本地用户使用,并且无论如何都可以被本地攻击者绕过,但您可能不想消除远程登录的这种延迟。您当然可以通过编写一个自定义sudo来解决此问题,该自定义sudo不仅包含共享的系统身份验证文件。
我个人认为sudo的延迟(忽略SIGINT)是一个很大的错误。这意味着知道自己输入错误密码的用户将无法终止进程并感到沮丧。当然,您仍然可以使用Ctrl-Z停止sudo,因为sudo不能捕获SIGTSTP,并且在停止后,可以使用kill -9(SIGKILL)将其杀死。这很烦人。因此,这意味着自动攻击可能会以超高速率触发伪终端上的警报。但是这种延迟使合法用户感到沮丧,并鼓励他们暂停其根shell而不是退出它们,以避免再次使用sudo。
nodelay
将会将等待时间设置为0,然后FAIL_DELAY被忽略。