专栏首页腾讯云服务器专家服务腾讯云cvm-linux登录不上: PAM模块问题(案例篇)
原创

腾讯云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

内核参数

/etc/security/limits.conf文件限制着用户可以使用的最大文件数,最大线程数,最大内存等资源使用量。

① soft nofile表示可打开的文件描述符的最大数(软限制)。

② hard nofile表示可打开的文件描述符的最大数(硬限制),必定不能超过这个设定的值。

fs.file-max 表示系统级别的能够打开的文件句柄(内核中struct file)的数量。是对整个系统的限制,并不是针对用户的。

fs.nr_open是单个进程可分配的最大文件描述符数目(fd 个数)

这个案例中soft nofile是3000001,hard nofile是3000002,它们都大于file-max,所以才会导致配置错误,从而无法正常登录

要满足如下的大小关系:

soft nofile<=hard nofile<=fs.nr_open

解决方案

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

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

(1)修改 /etc/security/limits.conf 文件,在最后添加(或修改)如下两行:

root soft nofile 100001

root hard nofile 100002

(2)修改/etc/sysctl.conf文件,在最后添加一行(非必须,在系统最大限制不够时再调整):

fs.file-max = 2000000

fs.nr_open = 2000000

(3)修改完毕后,执行 sysctl -p 使之生效

案例五

vnc登录报错Login incorrect,不弹出输入密码项,直接跳出重新输入账户,重启无效

排查思路:

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 腾讯云cvm-linux登录不上: PAM模块问题(原理篇)

    PAM 的全称为“可插拔认证模块(Pluggable Authentication Modules),是一套应用程序编程接口,它提供了一系列的验证机制,只要使用...

    赵智勇
  • 给你的SSH加一道防火墙,如何用Kryptonite进行SSH操作

    Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实...

    所有的酒都不如你
  • 如何在CentOS上使用双重身份验证

    在本教程中,您将学习如何在CentOS 7上使用一次性密码进行SSH上的双重身份验证。

    朝朝
  • 腾讯云Linux服务器搭建一个WordPress博客

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

    用户5907306
  • 腾讯云Linux服务器搭建WordPress博客(图文教程)

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

    主机精选@主机点评
  • 【原创】腾讯云服务器搭建wordpress个人博客网站(史上最详细教程)

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

    主机精选@主机点评
  • 腾讯云Linux服务器搭建WordPress博客

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

    JunyouYH
  • 新手如何用腾讯云Linux服务器搭建一个WordPress博客?

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

    主机优惠教程
  • 腾讯云Linux服务器搭建一个WordPress博客

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

    主机优惠教程
  • 腾讯云Linux服务器搭建一个WordPress博客

    看到网络上很多人买了腾讯云服务器后却不知道怎么搭建WordPress博客,看了一下腾讯云出的WordPress教程,我觉得对新手来说难度还是太大了,所以就根据自...

  • 腾讯云计算产品全家桶

    本文内容提供视频讲解,详细见:https://www.bilibili.com/video/BV1K54y1q7zK

    研究僧
  • 腾讯云服务器搭建wordpress个人博客网站(史上最详细教程)

    如何购买腾讯云服务器搭建WordPress博客呢?可能有些新用户看过腾讯云的WordPress教程文档,里面有太多的专业术语,很多用户根本无法理解,今天笔者根据...

    用户2416682
  • 腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践

    云服务器(Cloud Virtual Machine,CVM)为您提供安全可靠的弹性计算服务。 只需几分钟,您就可以在云端获取和启用 CVM,来实现您的计算需求...

    痴者工良
  • 腾讯云服务器搭建wordpress个人博客网站(史上最详细教程)

    https://cloud.tencent.com/redirect.php?redirect=1042&cps_key=6f5f5aedea72d213ca3...

    勤劳的小蜜蜂
  • 快速入门 Linux 云服务器

    如果是首次购买和使用云服务器实例的个人用户,推荐按照本文介绍的流程快速配置、购买和连接实例。

    云服务器教程

扫码关注云+社区

领取腾讯云代金券