如何在 Redhat 中强制执行密码复杂性?

如何在 Redhat 中强制执行密码复杂性?

我通过 Google 搜索,找到了一些相关链接,例如: 在 Red Hat 中强制密码复杂性
如何在 Linux 上强制密码复杂性

它说我们需要在文件中进行更改/etc/pam.d/system-auth。我已经设置了强制密码复杂性的参数,然后尝试创建一个新用户,但我设置的规则(例如所需的最小字符数、最小大写字母数和最小数字数)并没有禁止我创建不遵循这些规则的密码。

请帮助我并告诉我如何实现这一目标。

答案1

minlen=8 ucredit=1 dcredit=1 ocredit=0 lcredit=0

我猜您希望密码至少有 8 个字符,包含至少 1 个大写字母和 1 个数字。如果是这样,那不是您所配置的。

为此您应该使用:minlen=8 ucredit=-1 dcredit=-1

解释:minlen 算法使用“信用”来确定长度值。假设您的密码为 6 个字符。minlength 将不小于 6。然后,在不使用任何信用值的情况下,使用小写字符将获得 1 个“信用”,使用大写字符将获得 1 个信用,依此类推。因此,密码为Hello!6 个字符,使用大写字母将获得 +1 个信用,使用小写字母将获得 +1 个信用,使用特殊字符将获得 +1 个信用,总 minlen 值为 9。

指定ucredit=1 dcredit=1 ocredit=0 lcredit=0,使用相同的密码时长度为 6,使用大写字母时长度为 +1,使用小写字母时长度为 0,使用特殊字符时长度为 0。它不会强制您使用大写字符。

如果您使用负数作为信用值,则要求您至少拥有那么多的信用值,并且不使用信用值。

因此minlength=8 ucredit=-1 dcredit=-1 ocredit=0 lcredit=0将要求密码长度至少为 8 个字符,至少包含 1 个大写字母和 1 个数字。因此,密码长度为helloboy8 个字符,但会失败。Hellob0y会通过。He$$ob0y也会通过。

答案2

当您通过 ssh 登录时,/etc.pam.d/sshd将使用策略文件。此文件包括/etc/pam.d/system-auth,您必须考虑这两个文件的内容。

如果您通过 登录/bin/login,则该文件/etc/pam.d/login将被使用,因此对它的任何更改都只会影响/bin/login

/etc/pam.d/system-auth因此,您可能需要在两个文件中(即和)进行更改/etc/pam.d/login。或者更改您想要强制密码复杂性的文件。

相关内容