一、问题描述
某次基线加固过程中,一线反馈离开工位后,返回时原root登录会话断开,使用普通用户无法切到root,尝试使用移动云控制台进行VNC登录,但也提示登录失败:报:incorrect auth
二、处理过程
1)单用户模式登录:(救援模式因文件不全,无法处理该场景)
现场使用bclinux8.6(Anolis 8.6)系统,单用户模式只需要启动时,修改grub引导菜单第一项里的linux内核加载菜单,在initrd前面那一行最后面,直接加single后ctrl+x登录即可,输入root密码这时可跳过登录验证
2)检查root用户登录失败原因
查看/var/log/secure和authpriv日志,可看到如下报错:
3)询问操作前做了什么变更,发现主要操作/etc/pam.d/下文件,最后锁定主要修改其下的login文件,增加了如下内容:
其中,pam_securetty.so这个PAM模块用于限制只有从指定的终端才能用于root登录。结合/etc/securetty文件完成登录终端的限制,现场正式基于此修改,导致VNC无法登录
4)综上,如果使用它限制了root登录,而vnc又无法登录root账户,可以通过以下步骤进行排查:
- 检查/etc/securetty文件,看看限制的终端列表是否包含vnc会使用的虚拟终端,如vcsa等。如果不包含需要添加。
- 检查PAM配置文件(通常在/etc/pam.d/目录下),确保与登录相关的服务如login、sshd等都包含了pam_securetty.so模块。
- 在PAM配置文件中,尝试将pam_securetty.so模块的control标志设置为sufficient而不是required。
- 检查Selinux策略是否存在限制,可以尝试暂时将Selinux模式切换到permissive。
- 检查系统日志如/var/log/secure,看看具体是在什么地方禁止了root登录。
- 尝试更新vnc相关软件包,或切换到其他vnc实现(如x11vnc)来检查问题是否出在具体实现上。
- 如果问题仍未解决,可以尝试完全移除pam_securetty.so模块进行测试。
现场检查/etc/securetty文件为空,故禁止root从任何终端登录,但是要综合考虑基线合规标准:查看/etc/pam.d/login文件的模块类型配置查看login文件中的控制标志配置。查看是否存在auth required pam_securetty.so,存在视为合规。但是又不限制移动云终端VNC登录,综上,在/etc/securetty文件新增tty2豁免,验证VNC登录成功,至此该问题解决。
三、附录
3.1、救援模式回顾
Grub启动菜单找到linux16行修改ro为rw,删除多余内容,并在行尾添加内核参数rd.break(或init=/bin/bash);完成后按ctrl+x进入救援模式,如下所示:
进入后执行:
mount -o remount,rw /sysroot
chroot /sysroot
#修改密码
passwd root
touch /.autorelable
exit #退出/
reboot 或init 6 #重启