有没有办法设置最低密码要求,例如最小长度、密码中混合大小写字母数字和至少 1 个符号的要求,并在密码更改时强制执行?
答案1
Ubuntu 中的密码复杂性由 PAM 控制。不幸的是,PAM 的方法“典型地像 Unix”。这意味着它通过大量非常混乱的文件来传播其配置。
控制密码复杂度的文件是:
/etc/pam.d/common-password
有一行:
password [success=1 default=ignore] pam_unix.so obscure sha512
它定义了密码复杂性的基本规则。您可以通过将其更改为添加最小长度覆盖:
password [success=1 default=ignore] pam_unix.so obscure sha512 minlen=12
或任何你想要的最小值。如你所见,默认已经定义了一些基本的模糊规则。这些基本规则可以在以下位置看到:
man pam_unix
搜索“模糊”。
有大量的 pam 模块可以安装。
apt-cache search libpam-
应该向你展示一下。
恐怕你需要自己去找相关文档。不过“cracklib”是常见的附加内容。
更新:我应该指出,默认的“模糊”参数包括基于先前密码的复杂性测试和简单性测试(长度、不同类型字符的数量)。手册页中的示例显示了 cracklib 的运行情况。安装 libpam_cracklib 以使其正常运行。
此外,一旦您确定了要更改的内容,其他文件中的更改也是相同的,以便您可以对 SSH 和其他应用程序强制执行相同(或不同)的密码检查。
答案2
预安装的 PAM 模块允许您根据复杂性设置基本要求。有一个不错的模块,它是 pam_cracklib 模块的后继者 - pam_pwquality。要安装它,请输入以下内容
apt-get install libpam-pwquality
然后熟悉这个
man pam_pwquality
尤其是“选项”部分。
现在您可以在 /etc/pam.d/ 中编辑通用密码
vi /etc/pam.d/common-password
找到包含以下“password requisite pam_pwquality.so”语句的行,并在 pam_pwquality.so 后附加您的选项,如下所示
password requisite pam_pwquality.so minlen=16 ucredit=-4 retry=3
其含义为“密码长度至少为 16 个字符,其中至少 4 个是大写字母。提示用户输入密码 3 次。
pam_pwquality 允许您与其他模块(如 pam_pwhistory)结合使用,以创建更复杂的密码要求。祝您好运