返回文章列表
服务器

如何在 Linux 服务器中实施强密码复杂性策略?

Aax4evc
2025-11-06
1天前
如何在 Linux 服务器中实施强密码复杂性策略?

Linux 系统使用多个配置文件来管理密码策略。在这一步中,我们将探讨这些文件,并了解它们在密码管理中的作用。这里我们以CentOS 7.9系统为例。


  1. 首先,查看 /etc/login.defs文件,其中包含基本的密码策略设置:
cat /etc/login.defs | grep "^PASS_"

应该看到类似这样的输出:


PASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_MIN_LEN  5PASS_WARN_AGE 7

这些设置控制:


  • PASS_MAX_DAYS: 密码保持有效的最长天数
  • PASS_MIN_DAYS: 两次密码更改之间所需的最少天数
  • PASS_MIN_LEN:密码最小长度
  • PASS_WARN_AGE: 密码过期前的警告天数
  1. 另一个重要的文件是 /etc/pam.d/system-auth,这是系统认证的核心配置文件,大多数涉及密码修改的操作(如 `passwd` 命令)会引用此文件。
cat /etc/pam.d/system-auth | grep "^password"

此文件包含多行,主要用于定义密码长度、复杂度等规则


password    requisite  pam_pwquality.so ...password    sufficient pam_unix.so ...password    required   pam_deny.so


  1. /etc/pam.d/password-auth 与 system-auth 文件功能类似,部分服务可能优先使用此文件(如图形界面登录),通常与 system-auth 保持一致配置即可。


配置基本密码策略


在这一步中,我们将通过修改  /etc/login.defs 文件来配置基本密码策略,以设置密码老化要求。


  1. 首先,备份原始文件
sudo cp /etc/login.defs /etc/login.defs.backup

  1. 使用vi编辑器打开 /etc/login.def


  1. 更改这些值以实施更安全的密码老化策略:


  • 将PASS_MAX_DAYS从99999更改为 90(密码在 90 天后过期)
  • 将PASS_MIN_LEN从 5 更改为 10(密码长度至少10位)
  • 将PASS_WARN_AGE从 7 更改为 14(在密码过期前 14 天警告用户)

4.配置完记得保存文件并验证更改


cat /etc/login.defs | grep "^PASS_"
PASS_MAX_DAYS   90PASS_MIN_DAYS   0PASS_MIN_LEN     10PASS_WARN_AGE    14


配置密码复杂性要求

在这一步中,我们将配置密码复杂性规则,以在我们的系统上强制使用强密码。


  1. 首先,让我们备份PAM配置文件:
sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.backup

  1. 使用vi编辑器打开 /etc/pam.d/system-auth
  1. 需添加或修改 pam_cracklib.so 模块配置来添加复杂性要求:
password    requisite     pam_cracklib.so minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 try_first_pass retry=3 enforce_for_root

此配置意味:


  • minlen=10:密码最小长度为 10 个字符
  • lcredit=-1:至少包含 1 个小写字母(-1表示“至少 1个”,+1表示“最多 1 个”)
  • ucredit=-1:至少包含 1 个大写字母
  • dcredit=-1:至少包含 1 个数字
  • ocredit=-1:至少包含 1 个特殊字符(如 !@#$% 等)
  • try_first_pass:先尝试使用之前输入的密码(如登录时的密码)作为旧密码,减少用户重复输入
  • retry=3:密码不符合规则时,允许重试 3 次
  • enforce_for_root:强制 root 用户也遵守此密码策略(默认 root 可能绕过,此参数强制生效)
  1. 同样,配置完记得保存文件并验证更改


将密码策略应用于现有用户

当你更改 /etc/login.defs 中的密码策略时,新设置仅适用于新创建的用户,或者当你手动更新现有用户时。让我们看看如何管理现有用户:


  1. 首先,检查用户帐户的当前状态:
cat /etc/login.defs | grep "^PASS_"

这将显示当前用户的密码老化信息。


  1. 强制用户在下次登陆时更改密码
sudo chage -d 0 username

这将上次密码更改日期设置为 0,强制在下次登录时更改密码。


  1. 手动设置账户过期日期:
sudo chage -E $(date -d "90 days" +%Y-%m-%d) username

这将帐户过期日期设置为从今天起 90 天。


  1. 为现有用户配置密码复杂性要求
chage -M 90 -m 7 -W 14 username

此配置意味着:


  • -M 90:将用户的最大密码使用期限设置为 90 天
  • -m 7:将用户的最小密码使用期限设置为 7 天
  • -W 14:将用户的密码过期警告期限设置为 14 天


总结


这些密码策略配置对于维护安全的 Linux 环境至关重要。通过实施强大的密码要求、定期密码轮换并防止密码重复使用,可以显着提高Linux 系统针对未经授权的访问和潜在入侵的安全性。


当然,有效的密码策略只是一个全面的安全策略的一个方面。它们应该与其他安全措施相结合,例如定期系统更新、适当的用户管理和持续的安全监控。


本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议