Ubuntu 24.04 用户账户安全:3 种密码策略配置与 2 种锁定机制

发布时间:2026/7/13 22:50:34
Ubuntu 24.04 用户账户安全:3 种密码策略配置与 2 种锁定机制 Ubuntu 24.04 用户账户安全3 种密码策略配置与 2 种锁定机制在服务器管理中用户账户安全始终是系统管理员最关心的问题之一。Ubuntu 24.04 作为最新的 LTS 版本提供了多种强大的工具来保护用户账户免受未授权访问。本文将深入探讨如何通过密码策略和账户锁定机制来加固你的系统安全。1. 密码策略基础与 chage 命令密码策略是系统安全的第一道防线。在 Ubuntu 中chage命令是管理用户密码过期和时效性的核心工具。与简单的密码修改不同密码策略能够强制用户定期更换密码防止长期使用同一密码带来的安全隐患。查看当前用户的密码时效信息chage -l username输出示例Last password change : May 15, 2024 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 71.1 密码过期策略配置强制密码定期更换是最基本的安全措施。以下是三种关键策略配置设置密码最长有效期90天sudo chage -M 90 username设置密码最短有效期防止频繁更改sudo chage -m 7 username设置密码过期警告期sudo chage -W 7 username提示对于关键系统账户建议设置更严格的策略如-M 30表示30天必须更换密码。1.2 高级密码策略组合实际环境中我们往往需要组合多种策略# 设置密码30天后过期最短7天内不能修改过期前5天警告 sudo chage -M 30 -m 7 -W 5 username # 立即让密码过期强制用户下次登录时修改 sudo chage -d 0 username2. PAM 模块与密码复杂度要求除了时效性密码复杂度同样重要。Ubuntu 使用 PAM (Pluggable Authentication Modules) 来管理认证策略。2.1 安装密码复杂度模块sudo apt install libpam-pwquality2.2 配置密码复杂度策略编辑/etc/security/pwquality.conf文件minlen 12 dcredit -1 ucredit -1 ocredit -1 lcredit -1参数说明参数说明推荐值minlen最小密码长度12dcredit最少数字数量-1 (至少1个)ucredit最少大写字母-1 (至少1个)ocredit最少特殊字符-1 (至少1个)lcredit最少小写字母-1 (至少1个)2.3 密码历史策略防止用户重复使用旧密码sudo nano /etc/pam.d/common-password添加或修改以下行password required pam_pwhistory.so remember5这将记住最近5次密码防止循环使用。3. 账户锁定机制防御暴力破解多次失败的登录尝试可能是暴力破解的信号。Ubuntu 提供了两种主要的账户锁定方案。3.1 pam_tally2 方案pam_tally2是传统的账户锁定模块配置简单有效。编辑 PAM 配置文件sudo nano /etc/pam.d/common-auth添加以下行auth required pam_tally2.so deny5 unlock_time1800编辑/etc/pam.d/login添加相同内容。参数说明deny55次失败尝试后锁定unlock_time1800锁定30分钟1800秒查看失败尝试计数sudo pam_tally2 --userusername手动重置计数器sudo pam_tally2 --userusername --reset3.2 faillock 方案推荐faillock是更新更灵活的方案特别适合多用户环境。编辑/etc/pam.d/common-authauth required pam_faillock.so preauth silent deny5 unlock_time1800 auth [defaultdie] pam_faillock.so authfail deny5 unlock_time1800 auth sufficient pam_faillock.so authsucc查看锁定状态sudo faillock --user username解锁用户sudo faillock --user username --reset3.3 两种方案的对比特性pam_tally2faillock适用版本旧版UbuntuUbuntu 20.04配置复杂度简单中等多用户支持有限优秀日志记录基本详细推荐场景简单环境生产环境4. 实战配置示例与验证4.1 完整的 /etc/pam.d/common-auth 配置# 密码尝试限制 auth required pam_faillock.so preauth silent deny5 unlock_time1800 auth [defaultdie] pam_faillock.so authfail deny5 unlock_time1800 auth sufficient pam_faillock.so authsucc # 标准认证栈 auth [success1 defaultignore] pam_unix.so nullok auth requisite pam_deny.so auth required pam_permit.so4.2 密码策略验证方法测试密码复杂度echo 新密码 | sudo pwscore模拟失败登录测试锁定for i in {1..6}; do ssh usernamelocalhost; done检查审计日志sudo tail -f /var/log/auth.log4.3 自动化监控脚本创建一个定期检查账户状态的脚本/usr/local/bin/check_account_security.sh#!/bin/bash # 检查锁定账户 echo Locked accounts: sudo faillock # 检查密码过期 echo -e \nPassword expiration: for user in $(cut -d: -f1 /etc/passwd); do expiry$(chage -l $user | grep Password expires | cut -d: -f2) if [ $expiry ! never ]; then echo $user: $expiry fi done # 检查空密码账户 echo -e \nAccounts with empty passwords: sudo awk -F: ($2 ) {print $1} /etc/shadow设置定时任务sudo chmod x /usr/local/bin/check_account_security.sh sudo crontab -e添加0 3 * * * /usr/local/bin/check_account_security.sh /var/log/account_security.log5. 高级安全增强措施5.1 SSH 双重防护结合 SSH 配置增强安全性sudo nano /etc/ssh/sshd_config添加MaxAuthTries 3 LoginGraceTime 1m PermitRootLogin no重启 SSH 服务sudo systemctl restart sshd5.2 失败登录尝试的实时报警使用fail2ban实现实时防护sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local编辑/etc/fail2ban/jail.local[sshd] enabled true maxretry 3 bantime 1h5.3 密码策略的例外处理对于服务账户可能需要禁用密码策略sudo chage -M -1 -I -1 -E -1 serviceaccount sudo passwd -l serviceaccount # 锁定密码登录6. 恢复与故障排除6.1 紧急恢复控制台访问如果误锁所有账户可通过 GRUB 进入恢复模式重启系统在 GRUB 菜单选择 Advanced options选择 Recovery mode选择 root 进入 root shell重新挂载文件系统为可写mount -o remount,rw /重置账户锁定faillock --reset6.2 常见问题解决问题1用户被锁定但 unlock_time 未生效解决方案sudo pam_tally2 --userusername --reset sudo faillock --user username --reset问题2密码策略不生效检查 PAM 配置顺序sudo grep pam_pwquality /etc/pam.d/*问题3账户锁定后无法自动解锁检查系统时间是否正确date sudo apt install ntp sudo systemctl restart ntp7. 安全最佳实践总结分层防御不要依赖单一安全措施组合密码策略、账户锁定和网络层防护定期审计每月检查/var/log/auth.log和账户状态最小权限为每个用户分配刚好足够的权限员工培训教育用户创建强密码并识别钓鱼尝试备份策略定期备份/etc/pam.d/和/etc/security/目录实际部署中我曾遇到一个案例某企业的开发服务器因为未配置账户锁定导致被暴力破解。攻击者尝试了数百万次密码组合最终猜中了一个弱密码。配置了pam_faillock后相同的攻击在5次尝试后就被阻断系统负载也从100%降到了正常水平。