通过配置 PAM 模块、/etc/login.defs 策略及登录限制,可有效增强 Linux 密码安全:1. 使用 pam_pwquality 强制密码长度、复杂度及与旧密码差异;2. 设置 PASS_MAX_DAYS、PASS_MIN_DAYS 等参数规范密码有效期和最小长度;3. 启用 pam_faillock 限制登录失败次数,防止暴力破解;4. 禁用空密码登录,关闭不安全 TTY 访问,确保 SSH 安全配置;5. 定期审计用户策略与日志。

Linux 系统中,密码是保障用户账户安全的第一道防线。通过合理配置密码强度和登录机制,能有效防止弱口令攻击、暴力破解等安全威胁。以下从 PAM 模块、系统 配置文件 和策略设置等方面,介绍如何加固 Linux 系统的密码登录机制。
启用 PAM 模块增强密码强度
Linux 使用 PAM(Pluggable Authentication Modules)来管理认证流程。通过配置pam_pwquality(旧版本为pam_passwdqc),可强制用户设置高强度密码。
配置方法:
- 编辑配置文件:/etc/pam.d/common-password 或 /etc/pam.d/system-auth(根据发行版不同路径可能有差异)
- 找到包含 pam_pwquality.so 的行,确保启用并添加策略参数,例如:
password requisite pam_pwquality.so retry=3 minlen=10 difok=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
- retry=3:输错密码最多重试 3 次
- minlen=10:最小长度为 10 位
- difok=3:新密码至少与旧密码有 3 个字符不同
- dcredit=-1:必须至少包含一个数字
- ucredit=-1:必须至少包含一个大写字母
- lcredit=-1:必须至少包含一个小写字母
- ocredit=-1:必须至少包含一个特殊符号
修改后,所有通过 PAM 进行密码修改的操作都将受此规则限制。
配置全局密码策略(/etc/login.defs)
该文件定义了用户创建时的默认密码策略,适用于使用 useradd 命令新增的用户。
关键参数设置:
- PASS_MAX_DAYS 90:密码最长有效期 90 天,到期需更换
- PASS_MIN_DAYS 7:密码最短使用 7 天后才能修改,防止频繁更换绕过历史记录
- PASS_MIN_LEN 10:密码最小长度(注意:实际强度仍由 PAM 控制)
- PASS_WARN_AGE 7:密码过期前 7 天开始提示用户
这些设置不会影响已有用户,但新用户会继承该策略。已有用户的密码策略可通过 chage 命令单独调整。
限制登录失败尝试(防暴力破解)
通过 PAM 的 pam_tally2 或pam_faillock模块,可锁定多次输错密码的账户。
使用 pam_faillock 配置示例:
- 在 /etc/pam.d/sshd 和/etc/pam.d/login中添加:
auth required pam_faillock.so preauth silent deny=5 unlock_time=600
auth required pam_faillock.so authfail deny=5 unlock_time=600
account required pam_faillock.so
- 连续输错 5 次密码后,账户将被锁定 10 分钟(600 秒)
管理员可通过 faillock –user <username> 查看失败记录,或用 –reset 手动解锁。
禁用空密码与不安全登录方式
确保系统不允许空密码登录,并关闭不必要的 TTY 远程访问。
- 检查 /etc/ssh/sshd_config 中设置:
PermitEmptyPasswords no
PasswordAuthentication yes(如使用密钥登录,可设为 no 以强制密钥认证)
- 重启 SSH 服务使配置生效:systemctl restart sshd
- 检查 /etc/shadow 中是否存在空密码账户(第二字段为空):
awk -F: ‘($2 == “”) {print $1}’ /etc/shadow
如有输出,应立即为这些账户设置强密码或禁用。
基本上就这些。通过组合使用 PAM 模块、密码策略和登录控制,可以显著提升 Linux 系统的身份认证安全性。定期审计用户密码策略和登录日志,也是维持系统安全的重要环节。