Linux 实例:VNC 登录输入正确密码后无响应
现象描述
使用 VNC 登录云服务器时,输入正确的密码无法登录,会卡在如下图所示界面,稍后会再次提示需要输入账号。
且使用 SSH 远程登录时,会出现报错信息 “Permission denied,please try again.”。如下图所示:
可能原因
可能是由于频繁暴力破解导致 /var/log/btmp
日志容量过大。该文件用于记录错误登录的日志,容量过大会导致登录时写入日志异常,造成无法正常登录。如下图所示:
您可以参考 故障处理 查看日志文件 /var/log/btmp
容量是否过大,核实是否为暴力破解导致,并加固安全策略。
故障处理
1. 尝试使用 SSH 登录云服务器,详情请参见 使用 SSH 登录 Linux 实例。
登录成功,则执行下一步。
登录失败,则需使用单用户模式,详情请参见 通过控制台进入 Linux 实例单用户模式。
2. 进入 /var/log
查看日志文件 /var/log/btmp
容量。
3. 若日志文件 /var/log/btmp
容量过大,则执行以下命令,对 btmp 日志内容进行清空。清空日志文件后,即可恢复登录。
cat /dev/null > /var/log/btmp
4. 核实账户锁定是由人为误操作还是暴力破解引起。若是由暴力破解引起,建议选择以下方案加固安全策略:
修改云服务器密码,密码设置为由大写、小写、特殊字符、数字组成的12 - 16位的复杂随机密码。详情请参见 重置实例密码。
删除云服务器中已不再使用的用户。
将 sshd 的默认22端口改为1024 - 65525间的其他非常用端口。详情请参见 修改云服务器远程默认端口。
管理云服务器已关联安全组中的规则,只需放通业务和协议所需端口,不建议放通所有协议及端口。详情请参见 添加安全组规则。
不建议向公网开放核心应用服务端口访问。例如,mysql 及 redis 等。您可将相关端口修改为本地访问或禁止外网访问。
安装云镜、云锁等防护软件,并添加实时告警,以便及时获取异常登录信息
现象描述
使用 VNC 或 SSH 登录时,提示报错信息 “Permission denied”。
VNC 登录报错如下图所示:
SSH 登录报错如下图所示:
可能原因
使用 VNC 或 SSH 登录会调用 /etc/pam.d/login
pam 模块进行校验,在 /etc/pam.d/login
配置中默认会引入 system-auth
模块进行认证,system-auth
模块默认会引入 pam_limits.so
模块进行认证。system-auth
的默认配置如下图所示:
pam_limits.so
模块的主要功能是限制用户会话过程中对各种系统资源的使用情况。默认情况下该模块的配置文件是 /etc/security/limits.conf
,该配置文件规定了用户可使用的最大文件数、最大线程数、最大内存等资源使用量。参数说明如下表:
参数 | 说明 |
soft nofile | 可打开的文件描述符的最大数(软限制)。 |
hard nofile | 可打开的文件描述符的最大数(硬限制),不能超过该设定值。 |
fs.file-max | 系统级别的能够打开的文件句柄(内核中 struct file)的数量。针对整个系统的限制,并不针对用户。 |
fs.nr_open | 单个进程可分配的最大文件描述符数目(fd 个数)。 |
可能导致无法正常登录的原因是配置文件 /etc/security/limits.conf
中关于 root 用户最大能打开的文件描述符个数配置错误,正确的配置应满足 soft nofile ≤ hard nofile ≤ fs.nr_open
关系。 您可以参考 故障处理 将 soft nofile
、hard nofile
及 fs.nr_open
修改为正确配置。
故障处理
1. 尝试使用 SSH 登录云服务器,详情请参见 使用 SSH 登录 Linux 实例。
登录成功,则执行下一步。
登录失败,则需使用单用户模式,详情请参见 通过控制台进入 Linux 实例单用户模式。
2. 查看参数 soft nofile
、hard nofile
及 fs.nr_open
值是否满足 soft nofile ≤ hard nofile ≤ fs.nr_open
关系:
执行以下命令,查看 soft nofile
及 hard nofile
值。
/etc/security/limits.conf
本文获取结果为3000001及3000002。如下图所示:
执行以下命令,查看 fs.nr_open
值。
sysctl -a 2>/dev/null | grep -Ei "file-max|nr_open"
本文获取结果为1048576。如下图所示:
3. 修改 /etc/security/limits.conf
文件,在文件末尾添加或修改如下配置:
root soft nofile
:100001
root hard nofile
:100002
4. 修改 /etc/sysctl.conf
文件,在文件末尾添加或修改如下配置:
说明
在满足 soft nofile ≤ hard nofile ≤ fs.nr_open
关系时,此步骤非必选,可在系统最大限制不足时再进行调整。
fs.file-max
= 2000000
fs.nr_open
= 2000000
5. 执行以下命令,使配置立即生效。配置完成后,即可恢复登录。
sysctl -p