如何设置强密码策略?
美国、香港服务器
如何设置强密码策略?
06-16 来源:
Linux 完整强密码策略配置(Ubuntu24 / CentOS7/8/9 通用,防爆破专用)
整套包含 密码复杂度强制、有效期、禁止复用旧密码、登录失败锁定 四大部分,全部配置完成后杜绝弱口令。
一、核心说明
现代系统统一使用 pam_pwquality.so 管控复杂度;/etc/login.defs 控制新用户默认有效期;PAM 控制登录失败锁定。
推荐安全标准:
密码至少 12 位
必须包含:大写、小写、数字、特殊符号四类
90 天强制改密,7 天内不能重复改密码
禁止复用最近 5 次历史密码
输错 5 次锁定账号,拦截暴力 SSH 爆破
第一部分:强制密码复杂度(必须先配置)
1. Ubuntu / Debian(Ubuntu24 适用)
1)安装依赖
bash
运行
sudo apt update
sudo apt install libpam-pwquality -y
2)编辑密码 PAM 配置
bash
运行
sudo nano /etc/pam.d/common-password
找到以 password requisite pam_pwquality.so 开头的行,修改为下面完整一行(覆盖原有):
ini
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=2 reject_username difok=4
参数解释:
retry=3:最多输错 3 次直接退出
minlen=12:密码最小 12 字符
ucredit=-1:至少 1 个大写字母
lcredit=-1:至少 1 个小写字母
dcredit=-1:至少 1 个数字
ocredit=-1:至少 1 个特殊符号 !@#$%^&*
maxrepeat=2:相同字符不能连续超过 2 位(如 111 禁止)
reject_username:禁止密码包含用户名
difok=4:新密码至少 4 位和旧密码不同
3)禁止重复使用历史密码(对 root 也生效)
同文件下方找到 pam_unix.so 那一行,追加 remember=5 enforce_for_root
ini
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
password required pam_pwhistory.so enforce_for_root remember=5 use_authtok
remember=5:保存最近 5 个旧密码,不允许再次使用。
2. CentOS / Rocky / AlmaLinux
bash
运行
sudo vi /etc/pam.d/system-auth
修改 pwquality 行:
ini
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=2 reject_username difok=4
同样添加密码历史限制:
ini
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
password required pam_pwhistory.so enforce_for_root remember=5 use_authtok
第二部分:全局密码有效期(/etc/login.defs)
所有新建用户自动继承时效策略,编辑文件:
bash
运行
sudo nano /etc/login.defs
修改 / 添加以下 4 项:
ini
# 密码最长使用90天,到期强制更换
PASS_MAX_DAYS 90
# 最短7天才能修改密码,防止改完立刻切回旧密码
PASS_MIN_DAYS 7
# 密码最小长度(仅辅助,PAM优先级更高)
PASS_MIN_LEN 12
# 过期前7天弹窗提醒改密码
PASS_WARN_AGE 7
单独给已有用户强制生效(示例用户 ubuntu)
全局只对新建用户生效,老用户需手动执行:
bash
运行
# 90天过期、提前7天提醒、最少7天才能改密
sudo chage -M 90 -m 7 -W 7 ubuntu
# 查看当前用户密码时效策略
chage -l ubuntu
# 强制用户下次登录必须修改密码
sudo chage -d 0 ubuntu
第三部分:登录失败自动锁定(防爆破核心)
连续输错密码锁定账号,大幅降低 SSH 爆破成功率
Ubuntu/Debian
bash
运行
sudo nano /etc/pam.d/common-auth
文件顶部添加:
ini
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=1800
auth [success=1 default=ignore] pam_unix.so nullok try_first_pass
auth requisite pam_faillock.so authfail audit deny=5 unlock_time=1800
auth sufficient pam_unix.so
auth required pam_deny.so
参数:
deny=5:输错 5 次锁定
unlock_time=1800:锁定 30 分钟(单位秒)
CentOS
bash
运行
sudo vi /etc/pam.d/system-auth
# 同样添加faillock锁定规则
手动解锁被锁定用户
bash
运行
sudo faillock --user ubuntu --reset
第四部分:进阶全局细化配置(可选)
统一在 pwquality.conf 管控所有复杂度规则,便于维护
bash
运行
sudo nano /etc/security/pwquality.conf
写入完整规则:
ini
minlen = 12
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1
maxrepeat = 2
reject_username = 1
difok = 4
# 禁止简单字典弱密码
dictcheck = 1
第五部分:测试策略是否生效
执行修改密码命令,测试弱口令是否被拦截:
bash
运行
passwd
依次测试:
8 位简单密码 → 报错拒绝
无大写 / 无数字 → 拒绝
和上次密码几乎一样 → 拒绝
包含用户名 → 拒绝
第六部分:配套安全加固建议(搭配密码策略)
SSH 禁止 root 登录、修改高位端口、仅放行自己 IP
安装 fail2ban 二次拦截 SSH 爆破 IP
系统防火墙只开放 80/443 / 自定义 SSH 端口
定期查看登录失败日志:
bash
运行
# Ubuntu
grep "Failed password" /var/log/auth.log
# CentOS
grep "Failed password" /var/log/secure
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快