上一篇 下一篇 分享链接 返回 返回顶部

如何为Linux服务器中创建密码策略

发布人:Minchunlin 发布时间:2021-03-09 09:41 阅读量:1710

在过去的教程中,我们展示了如何在 Red Hat 6 或 CentOS 6 服务器系统中使用 pam_cracklib 强制检查密码的复杂性。在 Red Hat 7 系统服务器中,pam_pwquality 取代了 cracklib,成为密码检查的默认 pam 模块。pam_pwquality模块在Ubuntu和CentOS中也得到了支持,而且很可能在其他系统中也得到了支持。这个模块简化了密码策略的创建,以确保用户符合你的密码复杂性标准。

长期以来,对于密码的传统思维是强制在密码中使用大写和小写字母、数字和符号。这些基本的密码复杂度规则在过去十年中被大力推行。但是,对于这是否是一种好的做法,已经有了很多讨论。反对这种做法的基本论点是,强迫用户创建这种任意的密码会导致他们将密码写下来或以其他不安全的方式存储。

另一个最近受到质疑的政策是强迫用户每隔x天更换密码。有一些研究表明,这对良好的安全是不利的。

有许多论文和文章为争论的双方写了很多。这不是我们在这里要讨论的问题。本文旨在演示如何设置密码复杂度,而不是指导你制定政策。

密码策略选项

下面是密码策略选项的列表,并对每个选项进行了简要说明。其中很多选项与 cracklib 模块中使用的相同。这使得您可以很容易地从旧系统中移植您的策略。

difok - 这是新密码中不能出现在旧密码中的字符数。默认值= 5

minlen - 新密码的最小长度,默认为9。

ucredit - 拥有大写字母的最大学分数(如果>0),或要求的最小大写字母数(如果<0)。

lcredit - 有小写字母的最大数量(如果>0),或要求的最小小写字母数量(如果<0)。

dcredit - 拥有数字的最大数量(如果>0),或要求的最小数字数量(如果<0)。

ocredit - 拥有其他字符的最大数量(如果>0),或其他字符的最小数量要求(如果<0),默认=1。

minclass - 设置所需类的数量。类包括上述内容(大写字母、小写字母、数字和非α),默认=0

maxrepeat - 允许重复的最大字符数,默认为0。

maxclassrepeat - 同一类中连续字符的最大数量,默认为0。

gecoscheck - 检查密码是否与用户GECOS字符串中的任何字词相匹配(用户信息如真实姓名、位置等),默认=0(关闭)。

dictpath - cracklib字典的路径。

badwords - 以空格分隔的密码禁忌词列表(公司名称或部门、"password "一词等)。

配置密码策略

在您开始编辑配置文件之前,最好先写下一个基准密码策略。在我们的例子中,我们将使用以下密码复杂度规则。

密码的长度必须为15个字符。

密码不得重复同一个字符两次以上。

密码不得重复任何类别的字符四次。

密码必须包含每个类别的字符。

与旧密码相比,新密码必须有5个新字符。

启用GECOS检查。

禁止使用 "password、pass、word、putorius "等词语。

现在我们已经制定了我们的策略,我们可以编辑/etc/security/pwquality.conf文件来执行我们新的密码复杂度要求。这里是一个示例文件,为了清晰起见,我们对它进行了注释。

您可能已经注意到,我们文件中的某些选项是多余的。例如,minclass设置是多余的,因为我们已经需要使用[u,l,d,o] credit字段每个类中的2个。同样,我们的badwords是多余的,因为我们不允许任何类重复4次(我们所有的坏词都是小写字母)。我包括这些只是为了演示如何使用它们来设置密码策略。

创建策略后,您可以考虑强制用户在下次登录时更改其密码。

您可能已经注意到的另一件奇怪的事情是[u,l,d,o] credit字段为负数。这是因为,如果数字大于或等于0,则将密码(字符信用)记入密码中将得到信用。如果设置为负数,则表示该数字为必填项。

什么是credit?

我喜欢把它们叫做字符点数,因为我认为这能让它们的目的更加明确。如果设置大于零,你就会得到x量的 "字符点数",用于计算密码长度。例如,如果所有的信用额度(u,l,d,o)都设置为1,而密码长度要求设置为6,你需要6个字符才能满足长度要求,因为每一个大写、小写、数字和符号都会给你一个信用额度。

如果你把dcredit设置为2,理论上你可以使用9个字符的密码,并为等于10的数字获得2个"字符点数"。

如你所见,我的第一次检查失败了,因为密码少于13个字符。第二次我把字母 "I "改成了数字 "1",获得了2个点数,相当于所需的13个字符。

测试你的密码

libpwquality软件包提供了本文所概述的功能。它还提供了一个名为pwscore的程序,提供了一个检查密码复杂度的方法。你可以看到我们上面用它来测试学分。

pwscore实用程序从stdin中读取,简单地运行该实用程序,然后在它处输入你的密码,它将会给你一个错误或一个从0到100的分数值。

与直接编辑pam文件来使用cracklib的尴尬相比,配置pwquality是一件轻而易举的事情。在本教程中,我们涵盖了在Red Hat 7、CentOS 7甚至Ubuntu系统中设置密码策略所需要的所有东西。

目录结构
全文