如何执行密码复杂度策略?


14

我需要配置Ubuntu服务器以遵循严格的公司密码策略,该策略指定以下内容:

  • 至少一个大写
  • 至少一个小写
  • 至少一位数字
  • 至少一个特殊字符

我有一个环顾四周,所有我发现是指令指定的密码长度; 但是,我还没有找到与指定上述几点有关的密码内容有关的内容。

任何帮助,将不胜感激。

Answers:


19

密码复杂度由pam_cracklib模块强制执行。

为了修改本地计算机的密码策略,您将需要修改/etc/pam.d/common-password文件。

在终端窗口(Ctrl+ Alt+ T)中,输入以下命令:

sudo -i gedit /etc/pam.d/common-password

pam_unix.so将以下行添加到文件中(在主要用于身份验证的PAM模块之前或之前,如在联机帮助页中的示例所示),然后保存文件:

password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1  ocredit=-1

该语句实现了以下密码要求:

  • dcredit ==位
  • ucredit ==大写字符
  • lcredit ==小写字符
  • ocredit==其他字符(特殊字符,包括! , @ # $ %

这应该满足您的要求。

您还可以使用变量minlengthretries进一步限制密码要求。

这是以这种方式修改密码策略的另一个很好的示例,它将在/etc/pam.d/common-password文件中放置以下行:

password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1  ocredit=-1

该条目将最多设置三个尝试,以获取一个可接受的密码,密码的最小长度为10个字符。

这就要求用户与上一个密码至少要有三个字符不同。

这也将满足使密码至少包含数字,小写字符和大写字符中的每个字符的要求。

另请参阅有关在linux中设置更强的密码策略规则的本文


3
很好的答案!关于重试,我要补充一点,在考虑防止用户登录失败次数过多的策略时,请务必谨慎。这可能导致对帐户执行最简单,最容易执行的拒绝服务攻击之一的可行性(尝试尝试并失败登录X次,直到帐户被“锁定”,然后合法用户才能进入) 。
伊利亚·卡根

很棒的答案,谢谢:)尽管有一个问题,但似乎root用户可以忽略密码要求...是否也可以为root用户强制执行此操作?
斯蒂芬RC

@Valorin root用户不遵守密码要求的哪一部分?
凯文·鲍文

@maggotbrain任何一种,它都会发出警告,但仍会保存,这是密码“ snare”:paste.ubuntu.com/1543154
Stephen RC

@Valorin因此,您已经启用了名为“ root”的帐户,可以将此帐户与此密码一起使用,对吗?您收到什么警告?不幸的是,我没有一台启用了root帐户的机器来测试自己。听起来像个错误,但需要更多信息。
凯文·鲍文

0

Tomas Mraz 有一个pam_cracklib的分支:pam_pwquality有稍微更好的选择。

apt install libpam-pwquality 或passwd 添加它会抱怨:

模块未知

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.