如何使用 pam_tally 启用帐户锁定?

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 或登录文件?

the*_*eur 9

common-auth 背后的解释

如果您只是在寻找快速修复方法,请转到下面的如何配置 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.


一旦建立,就可以更好地理解配置模块以锁定用户。

如何配置 common-auth 以锁定

对于 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.sopam_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


应该这样做!