我目前正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10,尽管我曾经(很久以前)运行过 Windows 7,虽然 Ubuntu 在大多数方面都更好,但仍然缺少一个功能或至少是一个我还没有发现的功能......
有什么方法可以使在锁定/登录屏幕上,在输入错误密码达到一定次数(由我定义)后,不允许用户在一定时间内(由我定义)输入密码,并将其记录到日志中?
举例来说,如果用户 3 次输入错误密码,则 5 分钟内不允许他们再试一次,并且这也会记录到我定义的日志中。
如果我还可以选择这样做,那么这也很有用,比如说,当用户尝试输入密码并输错 2 次时,如果他们在接下来的 5 分钟内再次尝试,则会将他们锁定 5 分钟,但是,如果他们在 5 分钟后再次尝试,则错误密码尝试次数的计数器将重置为 0。
已经有这样的功能了吗?或者也许有办法用脚本或其他东西手动实现它?
答案1
一些背景信息:
用户登录由PAM
系统(可插入式身份验证模块),在本例中由pam_tally
子系统(相符用户账户)。
作为pam_tally
其本身将被弃用,您应该使用pam_tally2
,它由两部分组成:
pam_tally2.so
作为执行身份验证本身的模块,您需要将其添加到系统PAM
中pam_tally2
作为一个独立程序,你需要显示、更改和清除单个计数
pam_tally2
您感兴趣的参数是:
deny=n
Deny access if tally for this user exceeds n.
lock_time=n
Always deny for n seconds after failed attempt.
unlock_time=n
Allow access after n seconds after failed attempt. If this
option is used the user will be locked out for the specified
amount of time after he exceeded his maximum allowed attempts.
Otherwise the account is locked until the lock is removed by a
manual intervention of the system administrator.
magic_root
If the module is invoked by a user with uid=0 the counter is
not incremented.
even_deny_root
Root account can become unavailable.
配置:
添加以下行,/etc/pam.d/login
在 3 次登录失败后锁定帐户(也针对帐户root
),并在 50 分钟后自动解锁。
auth required pam_securetty.so
auth required pam_tally2.so deny=3 even_deny_root lock_time=60 unlock_time=3000
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
添加上述配置后,测试并注销和尝试使用虚假密码登录 3 次:第一次和第二次尝试后需等待 60 秒,第三次尝试后需等待 50 分钟。