linux-pam / 1.1.2 / reference / sag-pam_tally2.html

6.33. pam_tally2-登录计数器(统计)模块

pam_tally2.so [file = * +2+ *] [onerr = [* +3+ * | * +4+ *]] [magic_root] [even_deny_root] [deny = * +5+ *] [lock_time = * +6+ *] [unlock_time = * +7+ *] [root_unlock_time = * +8+ *] [序列化] [审核] [沉默] [no_log_info] [调试]

pam_tally2 [--file * +10+ *] [--user * +11+ *] [--reset [= * +12+ *]] [--quiet]

6.33.1. DESCRIPTION

此模块维护尝试访问的次数,可以重置成功访问次数,如果太多尝试失败则可以拒绝访问。

pam_tally2 分为两部分:* pam_tally2.so *和 pam_tally2 。前者是 PAM 模块,后者是一个独立程序。 pam_tally2 是一个(可选)应用程序,可用于查询和操作计数器文件。它可以显示用户计数,设置单个计数或清除所有计数。人为地设置高计数可能对阻止用户而不更改其密码很有用。例如,可能会发现在每个午夜从 Cron 作业中清除所有计数很有用。

通常,失败的尝试访问* root 不会不会*导致 root 帐户被阻止,以防止拒绝服务:如果未为您的用户提供 shell 帐户,并且 root 只能通过 su 或在机器控制台(不是 telnet/rsh 等)上,这是安全的。

6.33.2. OPTIONS

  • GLOBAL OPTIONS

    • 可以用于* auth account *模块类型。
  • onerr=[fail|succeed]

    • 如果发生奇怪的事情(例如无法打开文件),请返回 PAM_SUCCESS(如果给出了onerr=succeed),否则返回相应的 PAM 错误代码。

    • file=/path/to/counter

      • 归档保留计数的位置。默认值为/var/log/tallylog
    • audit

      • 如果找不到用户,将用户名登录到系统日志中。
    • silent

      • 不要打印信息性消息。没有使用* silent *选项打印的消息会泄漏系统上的帐户,因为它们不为不存在的帐户打印。
    • no_log_info

      • 不要通过 syslog(3)记录信息性消息。
    • debug

      • 当将计数计数作为调试级别消息增加到系统日志时,请始终记录该计数。
  • AUTH OPTIONS

    • 身份验证阶段首先增加尝试登录的次数,并检查是否应拒绝用户访问。如果用户通过了身份验证,并且登录过程 continue 调用 pam_setcred(3),它将重置尝试计数器。
  • deny=n

    • 如果该用户的计数超过* n *,则拒绝访问。

    • lock_time=n

      • 尝试失败后,请始终拒绝* n *秒。
    • unlock_time=n

      • 尝试失败后* n *秒后允许访问。如果使用此选项,则超过最大允许尝试次数后,用户将被锁定指定的时间。否则,帐户将被锁定,直到系统 Management 员手动干预解除锁定为止。
    • magic_root

      • 如果模块由 uid = 0 的用户调用,则计数器不会递增。 sysadmin 应该将此用于用户启动的服务,例如 su ,否则应忽略此参数。
    • even_deny_root

      • 根帐户可能不可用。
    • root_unlock_time=n

      • 此选项暗含even_deny_root选项。尝试失败后,请在n *秒后允许访问 root 帐户。如果使用此选项,则超级用户在超出其最大允许尝试次数后将被锁定指定的时间。
    • serialize

      • 使用锁序列化对理货文件的访问。此选项可能仅用于非多线程服务,因为它取决于提示文件的 fcntl 锁定。另外,最好仅在身份验证阶段与帐户或 setcred 阶段之间的时间不依赖于身份验证 Client 端的这种配置中使用此选项。否则,通过简单地人为地延长文件记录锁定的保存时间,身份验证 Client 端将能够防止同一用户进行同时身份验证。
  • ACCOUNT OPTIONS

    • 如果用户不是“魔根”,则帐户阶段将重置尝试计数器。此阶段可以选择用于无法正确调用 pam_setcred(3)的服务,或者无论其他模块的帐户阶段是否失败,都应执行重置操作。
  • magic_root

    • 如果模块由 uid = 0 的用户调用,则计数器不会更改。 sysadmin 应该将此用于用户启动的服务,例如 su ,否则应忽略此参数。

6.33.3. 提供的模块类型

提供了authaccount模块类型。

6.33.4. 返回值

  • PAM_AUTH_ERR

    • 提供的选项无效,模块无法检索用户名,找不到有效的计数器文件或登录失败太多。
  • PAM_SUCCESS

    • 一切都成功了。
  • PAM_USER_UNKNOWN

    • 用户未知。

6.33.5. NOTES

pam_tally2 与旧的 pam_tally 故障日志文件格式不兼容。这是由于在多体系结构系统上 32 位和 64 位体系结构之间的 tallylog 文件格式的兼容性要求所致。

没有 setuid 包装器可以访问数据文件,例如从 xscreensaver 调用* pam_tally2.so *模块时。因为这将使得无法与此类服务共享 PAM 配置,所以使用以下解决方法:如果由于权限不足(EACCES)而无法打开数据文件,则模块返回 PAM_IGNORE。

6.33.6. EXAMPLES

在 4 次登录失败后,将以下行添加到/etc/pam.d/login以锁定帐户。根帐户也将被锁定。帐户将在 20 分钟后自动解锁。在帐户阶段不必调用该模块,因为 login 可以正确调用 pam_setcred(3)。

auth     required       pam_securetty.so
auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200
auth     required       pam_env.so
auth     required       pam_unix.so
auth     required       pam_nologin.so
account  required       pam_unix.so
password required       pam_unix.so
session  required       pam_limits.so
session  required       pam_unix.so
session  required       pam_lastlog.so nowtmp
session  optional       pam_mail.so standard

6.33.7. FILES

  • /var/log/tallylog

    • 故障计数日志文件

6.33.8. AUTHOR

pam_tally2 由 Tim Baverstock 和 Tomas Mraz 编写。