我使用pam_tally2来locking每个策略3次login失败后的帐户,但是,连接用户没有收到指示pam_tally2操作的错误。 (通过SSH。)
我期望看到第四次尝试:
Account locked due to 3 failed logins
没有必要或必要的组合或在文件中的顺序似乎有所帮助。 这是在Red Hat 6下 ,我正在使用/etc/pam.d/password-auth 。 locking按预期工作,但用户不会收到上述错误。 这导致了很多困惑和挫折,因为他们没有办法知道为什么authentication失败,当他们确定他们正在使用正确的密码。
实施遵循NSA的红帽企业Linux 5安全组合指南 。 (第45页)我的理解是, PAM中唯一改变的是/etc/pam.d/sshd现在包含/etc/pam.d/password-auth而不是system-auth 。
如果您的安全策略需要多次错误的login尝试后locking帐户,请实施pam_tally2.so。
要强制密码locking,请将以下内容添加到/etc/pam.d/system-auth。 首先,添加到auth行的顶部:
auth required pam_tally2.so deny=5 onerr=fail unlock_time=900其次,添加到帐户行的顶部:
account required pam_tally2.so
编辑:
在其中一次login尝试期间,通过重置pam_tally2来获取错误消息。
user@localhost's password: (bad password) Permission denied, please try again. user@localhost's password: (bad password) Permission denied, please try again.
(从另一个shell重置pam_tally2)
user@localhost's password: (good password) Account locked due to ... Account locked due to ... Last login: ... [user@localhost ~]$
您还需要/etc/ssh/sshd_config ChallengeResponseAuthentication yes 。
要显示错误, pam需要一个对话function。
这个选项告诉ssh提供一个更完整的PAM对话function,其中包括提供输出和询问任意input(而不是仅仅通过sshd传递密码)。
编辑:您需要PasswordAuthentication no确保密码input始终通过此PAM对话。
不幸的是,你所追求的是不可用的。 OpenSSH将只允许或拒绝authentication。 这不会让攻击者或笨拙的用户知道任何进一步的信息,这是标准的行为。 PAM没有关于OpenSSH或者其他任何应用程序特定行为的networking通信知识 。 这只是一堆用于身份validation的模块。
除此之外,pam_tally2不提供任何types的用户定义的错误消息指令,所以只能依赖系统日志中的内容。
你可以考虑的一个方法是修改OpenSSH代码库(不是太困难),但这不在这个问题的范围之内。