如何强迫用户在Debian,Ubuntu中使用强密码

时间:2020-03-21 11:47:54  来源:igfitidea点击:

强密码必须包含至少14个字符,包括至少一个特殊字符,一个数字字符,一个大写和小写字母。
更重要的是,密码不应容易预测,不应该基于字典单词。

强制用户在Debian,Ubuntu,Linux Mint中使用强密码

默认情况下在基于Deb的系统中安装PAM。
但是,我们需要安装一个名为libpam-cracklib的添加模块。
为此,请从终端运行以下命令:

$sudo apt-get install libpam-cracklib

在基于DEB的系统中,密码策略在/etc/pam.d/common-password文件中定义。
在进行任何更改之前,备份此文件。

$sudo cp /etc/pam.d/common-password /home/sk/

现在,编辑/etc/pam.d/common-password文件:

$sudo nano /etc/pam.d/common-password

找到以下行并编辑或者更改它,如下所示。

password required pam_cracklib.so try_first_pass retry=3 minlen=12 lcredit=1 ucredit=1 dcredit=2 ocredit=1 difok=2 reject_username

让我们分解这一行,看看每个选项是否做了什么。

  • retry= n - 更改密码的最大重试次数。 n表示数字。此参数的默认值为1.
  • minlen = n - 新密码的最小可接受大小(加一个如果禁用rectidit,则默认值)。除了新密码中的字符数外,每个不同类型的字符(其他,上部,较低和数字)给出信用(长度为+1)。默认值为9.
  • lcredit = n - 定义密码中包含小写字母的最大历证。默认值为1.
  • Ucredit = n - 定义密码中包含大写字母的最大数量。默认值为1.
  • dcredit = n - 定义密码中包含数字的最大频繁贷记。默认值为1.
  • ocredit = n - 定义密码中包含其他字符的最大荣誉。默认值为1.
  • difok = n - 定义必须与上一个密码不同的字符数。
  • Reject_Username - 限制用户将其名称用作密码。

希望我们对上述参数进行了基本思路。

如上面的文件中所定义,用户现在可以使用密码复杂性分数12. 1'信用'将给出1个小写字母,1个信用1个大写字母,1个信用,至少2位数,1信用1其他性格。

但是,我们可以通过分配负值来禁用信用,并强制用户使用具有最小长度的不同字符的组合。

检查以下示例。

password required pam_cracklib.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1 difok=2 reject_username

如上所述,用户必须使用8个字符的密码复杂性分数,包括1个小写字母,1个大写字母,2位数和1个其他字符。

请注意,这些限制仅适用于普通用户,但不适用于root用户。
root用户可以自由地使用任何类型的密码。

检查或者验证密码复杂性

定义密码策略后,检查它是否有效。

让我们分配一个不符合密码策略的简单密码,并查看会发生什么。

要更改或者分配passwd,请运行:

$passwd

示例输出:

Changing password for sk.
(current) UNIX password: 
New password: 
BAD PASSWORD: it is WAY too short
New password: 
BAD PASSWORD: it does not contain enough DIFFERENT characters
New password: 
BAD PASSWORD: it is based on a dictionary word
passwd: Have exhausted maximum number of retries for service
passwd: password unchanged

如上所述,如果密码不符合要求,则用户无法设置密码。

让我们尝试符合实际密码策略的密码(包括至少1个小写,1个大写,2位数,另外1个字符)。

如上所述,已为用户"SK"设置了安全密码。