如何在CentOS6VPS上设置密码策略
状态: 已弃用
本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。
原因: CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) and no longer receives security patches or updates. For this reason, this guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您使用的 CentOS 版本编写的指南。
关于密码政策
密码策略是系统用户设置密码时必须满足的一组规则。 密码策略是计算机安全的一个重要因素,因为用户密码往往是计算机系统安全漏洞的主要原因。 这就是为什么大多数公司和组织将密码策略纳入公司官方规定的原因。 所有用户和用户密码必须遵守公司官方密码政策。
密码策略通常定义:
- 密码老化
- 密码长度
- 密码复杂性
- 登录失败次数
- 拒绝重复使用密码的次数
第 1 步:配置 /etc/login.defs - 老化和长度
密码老化控制和密码长度在 /etc/login.defs 文件中定义。 密码老化是指密码可以使用的最大天数、密码更改之间允许的最小天数以及密码到期前的警告天数。 密码长度是指允许密码所需的字符数。 要配置密码时效控制和密码长度,请编辑 /etc/login.defs 文件并根据您的公司密码策略设置 PASS 值。
密码老化控制和密码长度不会影响现有用户,它们只会影响新创建的用户!
- PASS_MAX_DAYS - 密码可以使用的最大天数。
- PASS_MIN_DAYS - 密码更改之间允许的最短天数。
- PASS_MIN_LEN - 可接受的最小密码长度。
- PASS_WARN_AGE - 在密码过期之前发出警告的天数。
示例配置文件 /etc/login.defs:
# # Please note that the parameters in this configuration file control the # behavior of the tools from the shadow-utils component. None of these # tools uses the PAM mechanism, and the utilities that use PAM (such as the # passwd command) should therefore be configured elsewhere. Refer to # /etc/pam.d/system-auth for more information. #
# *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail
# Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 90 PASS_MIN_DAYS 2 PASS_MIN_LEN 9 PASS_WARN_AGE 14
...
第 2 步:配置 /etc/pam.d/system-auth — 复杂性和重复使用的密码
通过编辑 /etc/pam.d/system-auth 配置文件,我们可以配置密码复杂度和重复使用密码的数量来拒绝。 密码复杂度是指密码中使用的字符的复杂性,拒绝重复使用的密码数量是指拒绝用户过去使用的所需密码数量。 通过设置密码复杂度,我们可以强制用户在密码中使用所需数量的大写字符、小写字符、数字和符号。 如果不满足密码复杂度标准,系统将不会接受该密码。
- 强制密码中的大写字符 - ucredit=-X,其中 X 是密码中所需的大写字符数
- 强制密码中的小写字符 - lcredit=-X,其中 X 是密码中所需的小写字符数
- Force Numbers In Passwords - dcredit=-X,其中 X 是密码中所需的数字
- 强制在密码中使用符号 - ocredit=-X,其中 X 是密码中所需的符号数
password requisite pam_cracklib.so try_first_pass retry=3 type= ucredit=-2 lcredit=-2 dcredit=-2 ocredit=-2
- Deny Re-Used Passwords - remember=X,其中 X 是要拒绝的过去密码的数量
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
示例配置文件 /etc/pam.d/system-auth:
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so
account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type= dcredit=-2 ucredit=-2 lcredit=-2 ocredit=-2 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5 password required pam_deny.so
session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so
第 3 步:配置 /etc/pam.d/password-auth — 登录失败
登录失败的次数在 /etc/pam.d/password-auth 文件中设置。 登录失败次数是指用户在其帐户被锁定之前可以进行的失败登录次数。 当帐户被锁定时,系统管理员可以解锁帐户。 要配置登录失败的次数,需要在 /etc/pam.d/password-auth 文件中添加两个新行。 参数“deny=X”(其中 X 是登录失败的次数)配置帐户被锁定之前允许的登录失败次数。
auth required pam_tally2.so deny=3 account required pam_tally2.so
示例配置文件 /etc/pam.d/system-auth:
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth required pam_tally2.so deny=3 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so
account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so
session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so