当前位置: 首页 > 科技观察

如何为Linux系统设置密码策略

时间:2023-03-21 13:06:45 科技观察

虽然Linux在设计上是安全的,但仍然存在许多安全漏洞的风险,弱密码就是其中之一。作为系统管理员,您必须为用户提供一个强密码。因为大多数系统漏洞都是由弱密码引起的。本教程介绍在基于DEB的Linux系统,如Debian、Ubuntu、LinuxMint等,以及基于RPM的Linux系统,如RHEL、CentOS等下,如何设置密码长度、密码复杂度、密码有效期等密码,ScientificLinux等策略。在基于DEB的系统中设置密码长度默认情况下,所有Linux操作系统都要求用户密码长度至少为6个字符。我强烈建议不要低于此限制。并且不要使用您的真实姓名、您父母、配偶、孩子的姓名或您的生日作为密码。即使是新手黑客也可以很快破解此类密码。一个好的密码必须至少有6个字符,并且包含数字、大写字母和特殊符号。通常,在基于DEB的操作系统中,密码和身份验证相关的配置文件存储在/etc/pam.d/目录中。要设置最小密码长度,请编辑/etc/pam.d/common-password文件;$sudonano/etc/pam.d/common-password找到以下行:password[success=2default=ignore]pam_unix.soobscuresha512在末尾添加额外的文本:minlen=8。这里我设置最小密码长度为8。password[success=2default=ignore]pam_unix.soobscuresha512minlen=8保存并关闭文件。因此,用户现在无法设置短于8个字符的密码。在基于RPM的系统中设置密码长度在RHEL、CentOS、ScientificLinux7.x系统中,以root身份执行以下命令来设置密码长度。#authconfig--passminlen=8--update要查看最小密码长度,执行:#grep"^minlen"/etc/security/pwquality.conf输出示例:minlen=8inRHEL,CentOS,ScientificLinux6.x系统,编辑/etc/pam.d/system-auth文件:#nano/etc/pam.d/system-auth找到下面这一行,在行尾添加:passwordrequisitepam_cracklib.sotry_first_passretry=3type=minlen=8在上面的设置中,最小密码长度是8个字符。在基于DEB的系统上设置密码复杂性此设置强制密码中应包含多少类型,例如大写字母、小写字母和其他字符。首先,使用以下命令安装密码质量检测库:$sudoapt-getinstalllibpam-pwquality然后,编辑/etc/pam.d/common-password文件:$sudonano/etc/pam.d/common-设置密码如果密码至少有一个大写字母,请在下面一行的末尾添加文本ucredit=-1。passwordrequisitepam_pwquality.soretry=3ucredit=-1设置密码至少有一个小写字母,如下图。passwordrequisitepam_pwquality.soretry=3lcredit=-1设置密码至少包含其他字符,如下所示。passwordrequisitepam_pwquality.soretry=3ocredit=-1在上面的例子中可以看到,我们设置密码至少包含一个大写字母、一个小写字母和一个特殊字符。您可以设置任意数量的大写字母、小写字母和允许的特殊字符。您还可以设置密码中允许的最大或最小字符类别数。以下示例显示设置新密码中所需的最少字符类别数:passwordrequisitepam_pwquality.soretry=3minclass=2在RHEL7.x/CentOS7.x/InScientificLinux7上的基于RPM的系统上设置密码复杂性.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查看e设置,执行:#grep"^ocredit"/etc/security/pwquality.conf输出样例:ocredit=-1在RHEL6.x/CentOS6.x/ScientificLinux6.x系统中,编辑/etc/pam.d/system-authfileasroot:#nano/etc/pam.d/system-auth找到以下行并在行尾添加:passwordrequisitepam_cracklib.sotry_first_passretry=3type=minlen=8dcredit=-1ucredit=-1lcredit=-1ocredit=-1在上面的设置中,密码必须至少包含8个字符。此外,密码必须至少包含一个大写字母、一个小写字母、一个数字和一个其他字符。在基于DEB的系统中设置密码过期现在,我们将设置以下策略。使用密码的最大天数。密码更改之间允许的最小天数。密码到期前发出警告的天数。要设置这些策略,请编辑:$sudonano/etc/login.defs在您需要设置每个值之后。PASS_MAX_DAYS100PASS_MIN_DAYS0PASS_WARN_AGE7如上例所示,用户应每100天更改一次密码,并在密码过期前7天开始显示警告消息。请注意,这些设置将对新创建的用户生效。要为现有用户设置密码更改之间的最大天数,您必须运行以下命令:$sudochage-M要设置密码更改之间的最小天数,请执行:$sudochage-m设置密码过期前警告,执行:$sudochage-W显示已有用户的密码,执行:$sudochage-lsk这里sk是我的用户名.示例输出:上次密码更改:2017年2月24日密码过期:neverPasswordinactive:neverAccountexpires:never密码更改之间的最小天数:0密码更改之间的最大天数:99999密码前警告的天数如输出所示,密码是不确定的。要修改现有用户的密码到期日期,$sudochage-E24/06/2018-m5-M90-I10-W10sk上面的命令会将用户sk的密码到期日期设置为24/06/2018.并且密码更改的最小间隔为5天,最大间隔为90天。用户账户将在10天后自动锁定,并在到期前10天显示警告信息。在基于RPM的系统上设置密码过期与在基于DEB的系统上相同。禁止在基于DEB的系统上使用最近使用的密码您可以限制用户设置已经使用过的密码。通俗地说,就是用户不能再次使用同一个密码。要进行设置,请编辑/etc/pam.d/common-password文件:$sudonano/etc/pam.d/common-password找到以下行并在末尾添加文本remember=5:password[success=2default=ignore]pam_unix.soobscureuse_authtoktry_first_passsha512remember=5上面的策略将阻止用户使用最后5个密码。基于RPM的系统禁止最近使用的密码对于RHEL6.x和RHEL7.x以及它们的衍生产品CentOS、ScientificLinux是一样的。以root身份编辑/etc/pam.d/system-auth文件,#vi/etc/pam.d/system-auth找到以下行并在末尾添加文本remember=5。passwordsufficientpam_unix.sosha512shadownulloktry_first_passuse_authtokremember=5现在您了解了Linux中的密码策略以及如何在基于DEB和RPM的系统中设置不同的密码策略。