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

Linux 系统使用多个配置文件来管理密码策略。在这一步中,我们将探讨这些文件,并了解它们在密码管理中的作用。这里我们以CentOS 7.9系统为例。
- 首先,查看 /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: 密码过期前的警告天数
- 另一个重要的文件是 /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
- /etc/pam.d/password-auth 与 system-auth 文件功能类似,部分服务可能优先使用此文件(如图形界面登录),通常与 system-auth 保持一致配置即可。
配置基本密码策略
在这一步中,我们将通过修改 /etc/login.defs 文件来配置基本密码策略,以设置密码老化要求。
- 首先,备份原始文件
sudo cp /etc/login.defs /etc/login.defs.backup
- 使用vi编辑器打开 /etc/login.def
- 更改这些值以实施更安全的密码老化策略:
- 将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
配置密码复杂性要求
在这一步中,我们将配置密码复杂性规则,以在我们的系统上强制使用强密码。
- 首先,让我们备份PAM配置文件:
sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.backup
- 使用vi编辑器打开 /etc/pam.d/system-auth
- 需添加或修改 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 可能绕过,此参数强制生效)
- 同样,配置完记得保存文件并验证更改
将密码策略应用于现有用户
当你更改 /etc/login.defs 中的密码策略时,新设置仅适用于新创建的用户,或者当你手动更新现有用户时。让我们看看如何管理现有用户:
- 首先,检查用户帐户的当前状态:
cat /etc/login.defs | grep "^PASS_"这将显示当前用户的密码老化信息。
- 强制用户在下次登陆时更改密码
sudo chage -d 0 username这将上次密码更改日期设置为 0,强制在下次登录时更改密码。
- 手动设置账户过期日期:
sudo chage -E $(date -d "90 days" +%Y-%m-%d) username这将帐户过期日期设置为从今天起 90 天。
- 为现有用户配置密码复杂性要求
chage -M 90 -m 7 -W 14 username
此配置意味着:
- -M 90:将用户的最大密码使用期限设置为 90 天
- -m 7:将用户的最小密码使用期限设置为 7 天
- -W 14:将用户的密码过期警告期限设置为 14 天
总结
这些密码策略配置对于维护安全的 Linux 环境至关重要。通过实施强大的密码要求、定期密码轮换并防止密码重复使用,可以显着提高Linux 系统针对未经授权的访问和潜在入侵的安全性。
当然,有效的密码策略只是一个全面的安全策略的一个方面。它们应该与其他安全措施相结合,例如定期系统更新、适当的用户管理和持续的安全监控。
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



