如何在Linux中设置密码策略

时间:2020-03-21 11:44:56  来源:igfitidea点击:

尽管Linux由设计安全,但安全漏洞有很多机会。
其中一个是弱密码。
作为系统管理员,我们必须为用户提供强密码。
因为,由于密码薄弱,大多数系统漏洞正在发生。
本教程介绍如何在Debian,Ubuntu,Linux Mint和RPM等基于Debian,Ubuntu,Linux Mint和RPM的系统中的基于Deb的系统中设置密码长度,密码复杂性,密码到期时间等等密码策略。

在Linux中设置密码策略

默认情况下,所有Linux操作系统都需要用户最少6个字符的密码长度。
我强烈建议你不要低于这个限制。
此外,不要使用真名,父母/配偶/儿童名称,或者出生日期作为密码。
即使是新手黑客也可以在几分钟内轻松打破这种密码。
良好的密码必须始终包含超过6个字符,包括数字,大写字母和特殊字符。

在基于DEB的系统中设置密码长度

通常,密码和身份验证相关的配置文件将存储在基于Deb的操作系统中的/etc/pam.d/位置。

设置最小密码长度,编辑/etc/pam.d/common-password文件;

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

找到以下行:

password [success=2 default=ignore] pam_unix.so obscure sha512

并添加一个另外的单词:最终minlen = 8.
这里我将最小密码长度设置为8.

password [success=2 default=ignore] pam_unix.so obscure sha512 minlen=8

保存并关闭文件。
现在,用户无法使用少于8个字符的密码。

基于RPM的系统中设置密码长度

在Rhel,CentOS 7.x系统中,将以下命令用作root用户来设置密码长度。

# authconfig --passminlen=8 --update

要查看最小密码长度,请运行:

# grep "^minlen" /etc/security/pwquality.conf

示例输出:

minlen = 8

在Rhel,CentOS 6.x Systems中,编辑/etc/pam.d/system-auth文件:

# nano /etc/pam.d/system-auth

找到以下行并在行结束时添加以下内容:

password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8

根据上述设置,最小密码长度为8个字符。

下载 - 免费电子书:"Ubuntu文档:Ubuntu Server Guide 2014"

在基于DEB的系统中设置密码复杂性

此设置执行了多少个类,例如:大写,小写和其他字符,应该是密码。

首先使用命令安装密码质量检查库:

$sudo apt-get install libpam-pwquality

然后,编辑/etc/pam.d/common-password文件:

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

要在密码中设置至少一个大写字母,请在下一行末尾添加一个"ucredit = -1"。

password        requisite                       pam_pwquality.so retry=3 ucredit=-1

在密码中设置至少一个小写字母,如下所示。

password        requisite                       pam_pwquality.so retry=3 dcredit=-1

在密码中设置至少其他字母,如下所示。

password        requisite                       pam_pwquality.so retry=3 ocredit=-1

如上所述,我们至少设置了一个大写,小写和密码中的特殊字符。
我们可以在密码中设置任何数量的最大数量的大写大写,小写和其他字母。

我们还可以在密码中设置允许的允许类的最小/最大数量。

以下示例显示了新密码所需的字符类的最小数量:

password        requisite                       pam_pwquality.so retry=3 minclass=2

在基于RPM的系统中设置密码复杂性

在RHEL 7.x/CentOS 7.x:

要在密码中设置至少一个小写字母,请运行:

# authconfig --enablereqlower --update

要查看设置,请运行:

# grep "^lcredit" /etc/security/pwquality.conf

示例输出:

lcredit = -1

同样,使用命令在密码中设置至少一个大写字母:

# authconfig --enablerequpper --update

要查看设置:

# grep "^ucredit" /etc/security/pwquality.conf

示例输出:

ucredit = -1

要在密码中设置至少一个数字,请运行:

# authconfig --enablereqdigit --update

要查看设置,请运行:

# grep "^dcredit" /etc/security/pwquality.conf

示例输出:

dcredit = -1

要在密码中设置至少一个其他字符,请运行:

# authconfig --enablereqother --update

要查看设置,请运行:

# grep "^ocredit" /etc/security/pwquality.conf

示例输出:

ocredit = -1

在RHEL 6.x/CentOS 6.x系统中,编辑/etc/pam.d/system-auth文件作为root用户:

# nano /etc/pam.d/system-auth

找到以下行并在行结束时添加以下内容:

password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

根据上述设置,密码必须具有至少8个字符。
此外,密码还应具有至少一个大写字母,一个小写字母,一个数字和其他字符。

在基于DEB的系统中设置密码过期期

我们将设定以下政策。

  • 可以使用密码的最大天数。
  • 密码之间允许的最小天数。
  • 密码到期前给出的天数。

要设置此策略,请编辑:

$sudo nano /etc/login.defs

根据要求设置值。

PASS_MAX_DAYS 100
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

正如我们在上面的示例中看到的,用户应该在每100天内更改一次密码,并且警告消息将在密码到期前7天出现。

注意这些设置将影响新创建的用户。

要在对现有用户设置密码更改之间的最大天数,我们必须运行以下命令:

$sudo chage -M <days> <username>

要在密码更改之间设置最小天数,请运行:

$sudo chage -m <days> <username>

要在密码到期前设置警告,请运行:

$sudo chage -W <days> <username>

要显示现有用户的密码,请运行:

$sudo chage -l sk

其中SK是我的用户名。

示例输出:

Last password change : Nov 24, 2016
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7

如上所述,密码永不过期。

要更改现有用户的密码到期时间,

$sudo chage -E 24/06/2016 -m 5 -M 90 -I 10 -W 10 sk

上面的命令将在24/06/2016设置用户'sk'的密码。
此外,密码更改之间的最小数日期设置为5天,密码变更之间的最大天数设置为90天。
用户帐户将在10天后自动锁定,并在密码到期前10天显示警告消息。

在基于RPM的系统中设置密码过期期

这与基于DEB的系统相同。

禁止以前使用的基于Deb系统中的密码

我们可以限制用户设置过去已使用的密码。
要将其放在Layman条款中,用户不能再次使用相同的密码。

为此,编辑/etc/pam.d/common-password文件:

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

找到以下行,并在末尾添加"记忆= 5":

password        [success=2 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5

上述策略将阻止用户使用最后5个使用的密码。

在基于RPM的系统中禁止以前使用过的密码

这对于RHEL 6.x和RHEL 7.x以及它的克隆系统,如CentOS,Scientific Linux。

编辑/etc/pam.d/system-auth文件作为root用户,

# vi /etc/pam.d/system-auth

找到以下行,最后添加remember= 5.

password     sufficient     pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5