如何在Linux中设置密码策略
尽管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