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

如何使用 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 或登录文件?

答案1

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

让我们看看这个文件的每一行以及它的用法。


auth    [success=1 default=ignore]      pam_unix.so nullok_secure

读取密码输入。如果密码正确,则跳过文件的下一行(带有 的行pam_deny.so)。您可以通过设置 中的值来更改跳过的行数success=1

auth    requisite                       pam_deny.so

立即使登录尝试失败。此处的单词requisite指示身份验证在失败时立即退出。其他行则使用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- 您被允许再次尝试登录之前的秒数。(补充说明:如果系统在一系列失败后解锁,并且您再次验证失败,则您没有 2 次验证机会。系统会让您等待 unlock-time 再次。)

大多数资源建议将此行添加到文件顶部,强调顺序的重要性;但是,在 Ubuntu 桌面系统上,此配置可能会将您锁定在 GUI 登录屏幕之外。

为什么会发生这种情况?似乎当您在 Ubuntu 的登录屏幕上选择一个用户时,PAM 模块会立即启动,并在该pam_unix.so行(密码输入行)处等待,然后再继续。如果您将该pam_tally2.so行放在这个“停止点”之前,锁定会立即生效,如果您通过按箭头键离开该用户,模块会发出登录失败的信号并pam_tally2递增。甚至没有输入密码,您很快就会陷入类似以下情况:

典型的 Ubuntu 登录屏幕,其中的 common-auth 文件配置不正确。

将该行放在pam_tally2.so文件底部可以修复此问题。此配置可保持正确的顺序;第一行跳转到pam_deny.sopam_permit.so基于密码有效性,到达时pam_tally2.so,任何不正确的密码输入都已显示。

尽管无论输入什么密码都达到了 ,但如果也达到了 ,pam_permit.so模块将始终失败。这是因为该行包含;它将允许其余行运行,但模块本身最终将失败。pam_deny.sopam_deny.sorequired

有关 PAM 如何工作的更多信息,您可以 Google 搜索“PAM 如何工作”或者直接访问此处:http://www.tuxradar.com/content/how-pam-works


那就可以了!

答案2

我已经有一段时间没看过这个了,但是

我认为你需要编辑/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

答案3

您还可以尝试使用 faillock 在 n 次登录尝试失败后锁定用户帐户。

我可以按照下面链接中的说明使其工作,该链接使用 pam_faillock.so,我猜它在 Ubuntu 和 CentOS 上都有效。

在 CentOS 和类似衍生版本上:

/etc/pam.d/system-auth

/etc/pam.d/password-auth

在 Ubuntu/Debian 和类似衍生版本上:

/etc/pam.d/common-auth

/etc/pam.d/common-account

多次登录尝试失败后锁定 Linux 用户帐户

希望这也能帮助其他人。

相关内容