腾讯云cvm-linux登录不上: PAM模块问题(案例篇)

案例一

CVM云服务器通过VNC输入正确的密码后无法正常登录,报错Module is unknown

排查思路:

1.在vnc无法正常登录时可以先尝试ssh能否正常登录进系统,如果ssh也不行就需要进单用户模式,通过控制台进入linux单用户模式可参考:

https://cloud.tencent.com/developer/article/1731813

2.进入系统后通过vim /var/log/secure查看日志,该文件一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,核实到有/lib/security/pam_limits.so的报错信息

3.进入/etc/pam.d后通过以下命令搜索日志中报错的pam模块的关键字/lib/security/pam_limits.so,就找到了是system-auth文件中配置了这个参数

find . | xargs grep -ri "/lib/security/pam_limits.so" -l

原因分析:

由于VNC登录会调用/etc/pam.d/login这个pam模块进行校验,而这个模块会将/etc/pam.d/system-auth这个模块引入进行校验,如下图是/etc/pam.d/login配置文件的内容:

导致登录失败的原因是system-auth配置文件中的pam_limits.so模块的模块路径写错了,pam_limits.so模块的主要功能是限制用户会话过程中对各种系统资源的使用情况,这里如果是64位的系统可以写成绝对路径/lib64/security/pam_limits.so,也可以直接写成相对路径pam_limits.so,写错路径的话会导致找不到对应的认证模块,导致登录认证报错。

解决方案

在vnc登录不上的时候可以尝试通过ssh远程登录实例,登录上之后修改pam_limits.so模块的模块路径即可,如果ssh也无法正常登录,此时就需要通过单用户模式或者救援模式进入系统后再修改配置,如仍无法登录可以提交工单解决

案例二

CVM云服务器通过VNC无法正常登录,输入密码之前就报错Account locked due to XXX failed logins

排查思路:

1.在vnc无法正常登录时可以先尝试ssh能否正常登录进系统,如果ssh也不行就需要进单用户模式,通过控制台进入linux单用户模式可参考:

https://cloud.tencent.com/developer/article/1731813

2.进入系统后通过vim /var/log/secure查看日志,该文件一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,核实到有pam_tally2的报错信息

3.进入/etc/pam.d后通过以下命令搜索日志中报错的pam模块的关键字pam_tally2,就找到了是login文件中配置了这个参数

find . | xargs grep -ri "pam_tally2" -l

原因分析

由于VNC登录会调用/etc/pam.d/login这个pam模块进行校验,而在login这个配置文件中有加入了pam_tally2.so模块进行认证,如下图所示,如果登录失败超过配置的尝试次数登录账户就会被锁定一段时间,如果是因为被暴力破解也有可能导致账户被锁定从而无法登录

pam_tally2.so模块的功能是设置Linux用户连续N次输入错误密码进行登陆时,自动锁定X分钟或永久锁定(这里的永久锁定指除非进行手工解锁,否则会一直锁定)

pam_tally2模块参数详解:

deny=n              失败登录次数超过n次后拒绝访问

lock_time=n         失败登录后锁定的时间(秒数)

un lock_time=n       超出失败登录次数限制后,解锁的时间

no_lock_time        不在日志文件/var/log/faillog 中记录.fail_locktime字段

magic_root          root用户(uid=0)调用该模块时,计数器不会递增

even_deny_root      root用户失败登录次数超过deny=n次后拒绝访问

root_unlock_time=n  与even_deny_root相对应的选项,如果配置该选项,则root用户在登录失败次数超出限制后被锁定指定时间

解决方案

在vnc登录不上的时候可以尝试通过ssh远程登录实例,登录上之后临时注释掉pam_tally2.so模块的模块路径即可,如果ssh也无法正常登录,此时就需要通过单用户模式或者救援模式进入系统后再修改配置,如仍无法登录可以提交工单解决

在临时注释掉pam_tally2.so模块的配置之后需要核实账户锁定的根本原因是暴力破解还是因为人为误操作导致的登录失败,如果是被暴力破解导致的,建议可以参考如下方案加固安全策略:

1.修改服务器密码,密码设置大写、小写、特殊字符、数字组成的12-16位的复杂随机密码

2.删除服务器上设置的不需要的用户

3.将sshd的默认端口22改为其他1024-65535之间的非常用端口,避免因暴力破解导致用户被锁定,造成无法登录

Windows远程端口修改参考文档:https://cloud.tencent.com/developer/article/1052163

Linux远程端口修改参考文档:https://cloud.tencent.com/developer/article/1124500

4.腾讯云平台有安全组功能,里面您只需要放行业务协议和端口,不建议放行所有协议所有端口,参考文档: https://cloud.tencent.com/document/product/215/20398

5.安装防护软件(云镜、云锁),并添加实时告警,有异常登录时,及时反馈到您

6.不建议向公网开放核心应用服务端口访问,例如mysql、redis等,您可修改为本地访问或禁止外网访问

案例三

CVM云服务器在VNC登录的时候,输入正确的密码后无法登录,卡在输入完密码的地方,过一会直接报错Hint:Caps Lock on

并且ssh远程登录会报错

排查思路:

1.由于vnc和ssh都无法登录,需要进单用户模式,通过控制台进入linux单用户模式可参考:

https://cloud.tencent.com/developer/article/1731813

2.进入系统后通过vim /var/log/secure查看日志,该文件一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,发现没有异常日志,说明登录信息并未被记录到日志,可能是日志记录这一块有问题

3.进入/var/log,看到btmp日志过大

原因分析

可能是因为被频繁暴力破解,导致/var/log/btmp日志过大,该文件是记录错误登录的日志,该文件过大会导致登录的时候写入日志异常,所以无法正常登录

解决方案

在vnc登录不上的时候可以尝试通过ssh远程登录实例,登录上之后通过命令cat /dev/null > /var/log/btmp

清除btmp日志文件内容即可,如果ssh也无法正常登录,此时就需要通过单用户模式或者救援模式进入系统后再修改配置,如仍无法登录可以提交工单解决

案例四

ssh远程登录和vnc登录都报错Permission denied

排查思路:

1.由于vnc和ssh都无法登录,需要进单用户模式,通过控制台进入linux单用户模式可参考:

https://cloud.tencent.com/developer/article/1731813

2.进入系统后通过vim /var/log/secure查看日志,该文件一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,核实到有pam_limits的报错信息

3.缺省情况下pam_limits.so该模块的配置文件是/etc/security/limits.conf,核实该文件发现root的soft nofile和hard nofile分别设置为3000001和3000002,由于在单用户模式下无法通过sysctl -a命令看到内核参数,可以通过查看/etc/sysctl.conf文件来核实fs.nr_open和fs.file-max是否有特殊配置

原因分析

由于在/etc/pam.d/login配置中默认会引入system-auth模块进行认证,而该模块默认会引入pam_limits.so模块进行认证,如下图是system-auth的默认配置

pam_limits.so模块的主要功能是限制用户会话过程中对各种系统资源的使用情况。缺省情况下该模块的配置文件是/etc/security/limits.conf,导致无法正常登录的原因是该文件中关于root用户最大能打开的文件描述符个数配置错误,应满足如下关系:soft nofile <= hard nofile <= fs.nr_open

排查思路:

1.由于vnc和ssh都无法登录,需要进单用户模式,通过控制台进入linux单用户模式可参考:

https://cloud.tencent.com/developer/article/1731813

2.进入系统后通过vim /var/log/secure查看日志,该文件一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,核实到有OPENSSL_1_1_1b的报错信息

3.经确认是执行过openssl的源码安装,查看history发现有处理openssl库文件的步骤如下:

echo “/usr/local/lib64” >> /etc/ld.so.conf

原因分析

/etc/ld.so.conf 此文件记录了编译时使用的动态库的路径,也就是加载so库的路径

默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装时,如果不

指定--prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加/usr/local/lib这个目录。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包

ldconfig位于/sbin下,它的作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新的搜索路径,需要运>行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库

解决方案

1.通过进入单用户模式,进入/etc/ld.so.conf里面注释掉"echo “/usr/local/lib64” >> /etc/ld.so.conf"

2.执行ldconfig

3.退出单用户模式,正常启动

参考资料:

腾讯云cvm-linux登录不上: PAM模块问题(原理篇):https://cloud.tencent.com/developer/article/1729015

腾讯云cvm-如何在控制台进入linux单用户模式:https://cloud.tencent.com/developer/article/1731813

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
腾讯云cvm-linux登录不上: PAM模块问题(案例篇)
CVM云服务器通过VNC输入正确的密码后无法正常登录,报错Module is unknown
<<上一篇
下一篇>>