这段 PAM(Pluggable Authentication Modules)配置行是用于增强系统安全性的,特别是针对登录失败尝试的限制。它使用了 pam_tally2.so 模块,该模块是 pam_tally.so 的一个增强版本,用于跟踪用户对服务的失败登录尝试次数。下面是这段配置行的详细解释:
auth required pam_tally2.so file=/var/log/tallylog onerr=fail deny=3 unlock_time=300 even_deny_root root_unlock_time=300
auth:这表示该规则适用于认证阶段。PAM 有几个阶段,包括认证(auth)、账户管理(account)、密码(password)和会话管理(session)。
required:这表示如果 pam_tally2.so 模块失败(即,如果它拒绝访问),则整个 PAM 认证过程不会立即失败,但会记录该模块的失败。然而,由于通常 pam_tally2.so 不会单独用于认证(它主要用于跟踪失败次数),这里的 required 实际上是确保该模块被调用。在一些情况下,可能会使用 optional 或 requisite,但具体取决于配置的其他部分和目的。
pam_tally2.so:这是要调用的 PAM 模块的名称。
file=/var/log/tallylog:指定了 pam_tally2.so 用于记录失败登录尝试的文件路径。默认情况下,它可能使用 /var/log/faillog,但这里被修改为 /var/log/tallylog。
onerr=fail:这通常不是 pam_tally2.so 的一个直接选项,但可能是某个 PAM 实现或封装脚本中的特定选项。理论上,它可能意味着如果模块遇到错误(如无法写入日志文件),则认证失败。然而,在标准的 pam_tally2.so 文档中,这个选项并不常见。
deny=3:这表示如果用户连续失败登录尝试达到 3 次,那么该用户将被锁定。
unlock_time=300:这指定了用户被锁定后的解锁时间(以秒为单位),这里是 300 秒(即 5 分钟)。
even_deny_root:这表示即使是 root 用户,如果连续失败登录尝试达到 deny 指定的次数,也会被锁定。
root_unlock_time=300:这通常是不必要的,因为 unlock_time 已经为所有用户(包括 root)设置了解锁时间。然而,有些 PAM 实现或封装脚本可能允许你分别为 root 用户设置不同的解锁时间。
总的来说,这段配置的作用是限制用户在 /etc/pam.d/ 目录下指定的服务(如 SSH、登录等)上的连续失败登录尝试次数。如果用户达到指定的失败次数(这里是 3 次),他们将被锁定一段时间(这里是 5 分钟),以防止暴力破解攻击。这个机制对于保护系统安全非常有用。