通过配置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系统的身份认证安全性。定期审计用户密码策略和登录日志,也是维持系统安全的重要环节。