起因
用户反馈一个新系统出现账号无法登录的问题,即使在输入正确密码并重启系统后,依然无法进入。
排查过程
接到问题后,初步判断可能是系统配置被意外修改所致。在询问用户近期操作时,用户表示只进行了业务程序部署。当得知部署人员拥有root权限后,问题根源的可能性大大增加。
随后与负责部署的业务人员沟通,对方声称在完成部署和测试阶段后,系统登录突然异常。进一步询问得知,除了业务配置外,他们还进行了一系列 Linux系统安全加固 操作,包括账户登录失败锁定和密码复杂度策略等。其提供的加固操作内容如下:
# 编辑PAM配置文件
vi /etc/pam.d/system-auth
vi /etc/pam.d/password-auth
# 添加的配置内容:
auth required pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=60
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=60
# 说明:deny=5:连续5次登录失败锁定;unlock_time=300:锁定300秒(5分钟,0表示永久锁定);audit:记录审计日志
password requisite pam_cracklib.so try_first_pass retry=3 minlen=10 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 difok=3
# 各参数说明:retry=3:密码输入错误最多重试3次;minlen=10:密码最小长度10位;dcredit=-1:至少1个数字;ucredit=-1:至少1个大写字母;ocredit=-1:至少1个特殊字符;lcredit=-1:至少1个小写字母;difok=3:新密码与旧密码至少3个字符不同
初步查看配置参数本身未见明显错误。为快速恢复系统访问,决定进入单用户模式回退这些安全配置。在回退过程中发现,/etc/pam.d/password-auth文件中的实际配置顺序与业务人员提供的参考顺序并不一致。
恢复过程
进入单用户模式后,将相关的账户登录失败锁定策略配置删除。修改完成并重启系统后,登录功能恢复正常。
复盘
本次故障的根本原因在于PAM配置中模块的执行顺序错误。在 Linux运维 实践中,PAM的配置顺序至关重要,删除错误配置或调整其顺序即可解决此类问题。
故障复现
-
严格按照业务侧提供的顺序配置后,新开会话测试登录,输入正确密码也会被拒绝。

-
重启系统后,在控制台也会出现登录报错。

处理办法
进入单用户模式,将/etc/pam.d/password-auth中的配置顺序调整为以下正确顺序:
auth required pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=60
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=60
具体操作步骤如下(针对服务器重启后无法登录的场景):
- 重启系统,在内核加载时按
e 键进入编辑模式。
- 找到以
linux16 开头的行,将 ro 修改为 rw,并在行末追加 rd.break init=/bin/bash。按 Ctrl+X 继续启动。

- 系统会进入紧急模式。执行
mount 命令,可看到根文件系统以读写(rw)权限挂载在 /sysroot 下。

- 切换根环境到真实的系统:
chroot /sysroot。

- 编辑PAM配置文件,修正模块顺序。

- 执行
reboot 命令重启系统。重启后,远程登录成功。


|