nit*_*ins 0 authentication password login pam
我正在尝试使用 pam_tally 在 ubuntu 中实现帐户锁定。我尝试在/etc/pam.d/common-auth 中添加以下行
auth required pam_tally.so deny=3
account required pam_tally.so
Run Code Online (Sandbox Code Playgroud)
失败正在被记录,但即使达到最大失败次数,帐户也不会被锁定。我正在通过直接登录(GNOME 登录屏幕)来尝试此操作。
有什么建议吗?我是否还需要添加 pam.d/gdm 或登录文件?
如果您只是在寻找快速修复方法,请转到下面的如何配置 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
Run Code Online (Sandbox Code Playgroud)
让我们来看看这个文件的每一行以及它是如何使用的。
auth [success=1 default=ignore] pam_unix.so nullok_secure
Run Code Online (Sandbox Code Playgroud)
读取密码输入。如果密码正确,则跳过文件的下一行(带有 的那一行pam_deny.so)。您可以通过在 中设置值来更改跳过的行数success=1。
auth requisite pam_deny.so
Run Code Online (Sandbox Code Playgroud)
立即失败登录尝试。requisite这里的单词告诉身份验证在失败时立即退出。其他行required改为使用,它会等到模块结束时才发出故障信号。
auth required pam_permit.so
Run Code Online (Sandbox Code Playgroud)
允许登录尝试。这是使用pam_permit.so.
一旦建立,就可以更好地理解配置模块以锁定用户。
对于 Ubuntu:
在 pam_deny.so 之后和 pam_permit.so 之前添加以下行:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800
Run Code Online (Sandbox Code Playgroud)
将 pam_deny.so 行更改为以下内容:
auth required pam_deny.so
Run Code Online (Sandbox Code Playgroud)
整个文件看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
您可以配置以下选项以满足您的需求:
deny=3 - 在您被锁定之前允许的尝试次数。unlock_time=1800- 允许您再次尝试登录之前的秒数。(附加说明:如果系统在一系列失败后解锁,而您再次验证失败,则您将无法再进行 2 次验证。系统会让您 再次等待unlock-time 。)大多数资源建议在文件顶部添加这一行,强调顺序的重要性;但是,在 Ubuntu 桌面系统上,此配置可以将您锁定在 GUI 登录屏幕之外。
为什么会发生这种情况?似乎当您在 Ubuntu 的登录屏幕上选择一个用户时,PAM 模块会立即启动,并pam_unix.so在继续之前等待该行(密码输入行)。如果将pam_tally2.so线放置在此“停止点”之前,锁定会立即变为活动状态,如果您通过按箭头键离开用户,模块会发出登录失败信号并pam_tally2递增。甚至无需输入密码,您很快就会陷入与以下类似的情况:
带有错误配置的 common-auth 文件的典型 Ubuntu 登录屏幕。
将pam_tally2.so行放在文件底部可以解决此问题。在此配置中保持正确的顺序;第一行跳转到pam_deny.so或pam_permit.so基于密码有效性,到时pam_tally2.so,任何不正确的密码输入都已经被指出。
即使pam_permit.so无论输入的密码如何pam_deny.so都已到达,如果也已到达,模块也将始终失败。这是因为该pam_deny.so行包含required; 它将允许其余的行运行,但模块本身最终会失败。
有关 PAM 工作原理的更多信息,您可以谷歌“PAM 工作原理”或直接到这里:http : //www.tuxradar.com/content/how-pam-works
应该这样做!
| 归档时间: |
|
| 查看次数: |
18558 次 |
| 最近记录: |