如何使用pam_tally启用帐户锁定?
我正在尝试使用pam_tally在ubuntu中实现帐户锁定。 我尝试在/etc/pam.d/common-auth中添加以下行
auth required pam_tally.so deny=3 account required pam_tally.so
故障被记录,但即使达到最大故障,帐户也不会被锁定。 我通过直接登录(GNOME登录屏幕)来尝试这个。
有什么建议吗? 我是否还需要添加pam.d / gdm或登录文件?
我看了这个已经有一段时间,但是
我想你需要编辑/etc/pam.d/common-auth
将其添加到文件的顶部 (规则的顺序很重要)。
auth required pam_tally.so per_user magic_root onerr=fail
然后,您可以设置允许的尝试次数
sudo faillog -m 3
解锁帐户
faillog -u login_name -r
有关其他详情,请参阅
我的博客http://blog.bodhizazen.com/linux/ubuntu-how-to-faillog/
或者男人pam_tally
普通认证背后的解释
如果您只是想快速解决问题,请转到如何配置common-auth以锁定 。
希望这有助于了解/etc/pam.d/common-auth
如何配置锁定。
如果您删除/etc/pam.d/common-auth
所有注释,则会留下以下内容:
auth [success=1 default=ignore] pam_unix.so nullok_secure auth requisite pam_deny.so auth required pam_permit.so
我们来看看这个文件的每一行以及它是如何使用的。
auth [success=1 default=ignore] pam_unix.so nullok_secure
读取密码输入。 如果密码正确,则跳过文件的下一行(带有pam_deny.so
)。 您可以通过设置success=1
的值来更改跳过的行数。
auth requisite pam_deny.so
立即失败登录尝试。 这里requisite
的单词告诉身份validation在失败时立即退出。 其他行使用required
,它等到模块结束以发出故障信号。
auth required pam_permit.so
允许登录尝试。 这是使用pam_permit.so
完成的。
一旦建立,可以更好地理解配置模块以锁定用户。
如何配置common-auth以锁定
对于Ubuntu:
在pam_deny.so之后和pam_permit.so之前添加以下行:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800
将pam_deny.so行更改为以下内容:
auth required pam_deny.so
整个文件看起来像这样:
auth [success=1 default=ignore] pam_unix.so nullok_secure auth required pam_deny.so auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800 auth required pam_permit.so
您可以配置以下选项以满足您的需求:
-
deny=3
– 锁定前允许的尝试次数。 -
unlock_time=1800
– 允许您再次尝试登录之前的秒数。 (附加说明:如果系统在一系列故障后解锁,并且您再次无法进行身份validation,则您再没有2次尝试进行身份validation。系统会让您 再次 等待unlock-time
。)
大多数资源建议将此行添加到文件的顶部,强调订单的重要性; 但是,在Ubuntu桌面系统上,此配置可能会阻止您退出GUI登录屏幕。
为什么会这样? 看来,当您在Ubuntu的登录屏幕上选择用户时,PAM模块会立即开始,并在继续之前等待pam_unix.so
行(密码输入行)。 如果将pam_tally2.so
行放在此“停止点”之前,则锁定立即变为活动状态,如果您通过按箭头键导航离开用户,则模块会发出登录失败和pam_tally2
递增的信号。 即使没有输入密码,您很快就会遇到类似下面的情况:
典型的Ubuntu登录屏幕,其中包含错误配置的common-auth文件。
将pam_tally2.so
行放在文件的底部可以解决此问题。 在此配置中保持适当的顺序; 第一行根据密码有效性跳转到pam_deny.so
或pam_permit.so
,到达pam_tally2.so
时,已经指示了任何不正确的密码条目。
即使无论输入了密码,都达到了pam_deny.so
如果pam_deny.so
达到pam_deny.so
,模块也将始终失败。 这是因为pam_deny.so
行包含required
; 它将允许其余的线路运行,但模块本身最终会失败。
有关PAM如何工作的更多信息,您可以谷歌“PAM如何工作”或只是去这里: http : //www.tuxradar.com/content/how-pam-works
应该这样做!