Linux用户密码安全策略配置教程:从弱密码到强防护
许多刚接触Linux服务器的朋友,往往只设置了简单的弱密码,或者从不关注密码过期时间。
一旦服务器暴露在公网,弱密码很容易被暴力破解。
本文我们围绕 Linux用户密码安全策略配置,手把手教你从零开始加固密码防护,让系统自带“强密码护甲”。
配置前需要准备什么
操作前请确认以下条件:
- 一台Linux服务器(本文以CentOS 7/8、Ubuntu 20.04/22.04为例)。
- 拥有 root 权限或能使用
sudo。 - 已经通过SSH连接到服务器。
- 如果没有现成的普通用户,建议先创建测试用户(
useradd testuser)。
小提示:所有涉及系统全局的策略修改,都可能影响现有用户登录,建议先在测试环境验证。
核心步骤:修改密码过期与长度策略
1. 调整密码过期规则(/etc/login.defs)
密码过期策略让用户必须定期换密码,降低长期泄露风险。
编辑主配置文件:
vim /etc/login.defs
找到以下参数(如果没有则手动添加):
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
PASS_MAX_DAYS:密码最长使用天数(建议90天)。PASS_MIN_DAYS:最短更换间隔(0表示随时可换)。PASS_WARN_AGE:到期前多少天开始警告用户。
保存退出。
该策略仅对新创建的用户生效,已存在的用户需要单独修改(后面会讲)。
2. 强制密码长度与复杂度(pwquality模块)
现代Linux通过PAM(可插拔认证模块)控制密码质量。
编辑PAM密码策略文件:
# CentOS/RHEL 7/8
vim /etc/pam.d/system-auth
# Ubuntu/Debian
vim /etc/pam.d/common-password
在 password requisite pam_pwquality.so 所在行(如果没有就添加),加上以下参数:
password requisite pam_pwquality.so retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0
retry=3:允许用户重试3次。minlen=8:最小长度8位。dcredit=-1:必须包含至少1个数字(负数表示至少)。ucredit=-1:至少1个大写字母。ocredit=-1:至少1个特殊符号。lcredit=0:小写字母数不强制。
参数可以根据需要调整。
如果系统没有安装 pam_pwquality.so,先安装:
# CentOS
yum install -y pam
# Ubuntu
apt-get install -y libpam-pwquality
3. 对现有用户立即生效(chage命令)
修改 /etc/login.defs 只影响新用户。
对已存在的用户,执行:
chage -M 90 testuser # 设置密码最长使用90天
chage -W 7 testuser # 提前7天警告
chage -l testuser # 查看当前策略
如果想强制用户下次登录时换密码,运行:
passwd -e testuser
避坑指南:容易翻车的几个地方
- 密码策略太死板:比如要求大写、小写、数字、符号各1位且长度16以上,普通用户很难记住,容易把密码写纸上或频繁重置。建议
minlen=8,配合2-3种字符类型即可。 - 摸不清PAM顺序:
pam_pwquality.so必须在pam_unix.so之前才能生效。查看/etc/pam.d/system-auth,确保pam_pwquality在pam_unix前面。 - 忘记对已有用户单独设置:很多新手只改了login.defs,发现老用户依旧能使用简单密码。记得用
chage或passwd命令逐个调整。 - 修改了错误的PAM文件:Ubuntu上
common-password是主文件,CentOS上system-auth和password-auth都要改(如果需要本地登录和SSH都生效)。
如何验证配置是否生效
验证密码长度与复杂度
切换到一个普通用户,尝试设置弱密码:
# 以testuser为例
su - testuser
passwd
# 输入新密码:123456
系统应该拒绝,并提示“密码太短”或“需要包含更多字符类”。
如果被拒绝,说明策略生效。
验证密码过期规则
查看用户的过期信息:
chage -l testuser
输出中应有 Maximum number of days between password change : 90。
也可以修改系统时间模拟到期(不推荐生产环境),或用 passwd -S testuser 查看状态。
检查shadow文件
查看 /etc/shadow 中对应行的第三字段(自1970年1月1日到上次更改的天数)与密码最大天数,可以核对:
cat /etc/shadow | grep testuser
写在最后
密码安全是服务器防护的第一道防线。
通过修改 /etc/login.defs、配置PAM的 pam_pwquality 模块、再利用 chage 命令对现有用户生效,就能形成一套完整的 Linux用户密码安全策略配置 方案。
如果你正在处理这类需求,建议先按本文步骤在测试机完整执行一次,再推广到正式服务器。
遇到异常时,优先回看避坑和高频问题部分,多数错误出在PAM文件顺序或未对现有用户单独处理。
安全加固没有终点,定期检查策略是否仍符合业务需要,同样重要。