如何防止用户将自己的密码更改为最近 X 个密码之一?

如何防止用户将自己的密码更改为最近 X 个密码之一?

我有一个带有 GNOME 3.18 系统的 Ubuntu GNOME 15.10,我想设置它,以便使用它的用户不能将新密码设置为以前的 X 密码之一,如何实现?

当我更改密码时,如果它与我的上一个密码太相似,我的系统将不允许我将其更改为该密码,如果答案还可以显示如何扩展它以便新密码也不会与之前 X 个记录的密码太相似,那就太好了。

笔记:最后 X 个密码的历史记录不应以不安全的未加密方式存储,事实上,它们应该以与当前密码相同或类似的方式存储(作为加盐哈希)。

我使用X来表示密码的数量(这可以是任何值),因为我希望能够轻松更改无法使用的存储密码数量,同时也让其他人可以轻松地获取答案并按照他们希望的方式使用它,而不是得到一个围绕一个非常固定的值的答案X

信息更新:

根据要求,以下是我的文件内容(不包括顶部的注释)/etc/pam.d/common-password

# here are the per-package modules (the "Primary" block)
password        [success=1 default=ignore]      pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password        requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password        required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
password        optional        pam_gnome_keyring.so
# end of pam-auth-update config

答案1

您可以配置 PAM 来为您执行此操作。只需打开/etc/pam.d/common-password并附加到use_authtok第一password行(调用 pam_unix 模块的行),使其看起来有点像这样:

password    [success=1 default=ignore]  pam_unix.so obscure sha512 use_authtok

现在在之前修改的行上方添加此行:

password    required    pam_pwhistory.so  remember=X

其中X是要检查重复密码的先前密码的数量。

以前的X密码将以哈希形式存储在以下位置/etc/security/opasswd

所以你需要创建文件当且仅当它不存在并为其分配权限 600(-rw-------):

sudo touch /etc/security/opasswd
sudo chmod 600 /etc/security/opasswd

相关内容