现象描述
使用 VNC 无法正常登录云服务器,在输入登录密码前就出现报错信息 “Account locked due to XXX failed logins”。如下图所示:
可能原因
使用 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 用户在登录失败次数超出限制后被锁定的时间。 |
您可以参考 故障处理,进入 login 配置文件,临时注释 pam_limits.so
模块配置,核实账户锁定的原因,并加固安全策略。
故障处理
1. 尝试使用 SSH 登录云服务器,详情请参见 使用 SSH 登录 Linux 实例。
登录成功,则执行下一步。
登录失败,则需使用单用户模式,详情请参见 通过控制台进入 Linux 实例单用户模式。
2. 登录成功后,执行以下命令查看日志信息。
vim /var/log/secure
此文件一般用来记录安全相关的信息,其中大部分记录为用户登录云服务器的相关日志。如下图所示,可从信息中获取有 pam_tally2
的报错信息。
3. 依次执行以下命令,进入 /etc/pam.d
目录后,搜索日志中报错 pam 模块的关键字 pam_tally2
。
cd /etc/pam.d
find . | xargs grep -ri "pam_tally2" -l
返回类似如下图所示信息,则表示 login
文件中配置了该参数。
4. 执行以下命令,临时注释 pam_tally2.so
模块配置。配置完成后,即可恢复登录。
sed -i "s/.*pam_tally.*/#&/" /etc/pam.d/login
5. 核实账户锁定是由人为误操作还是暴力破解引起。若是由暴力破解引起,建议选择以下方案加固安全策略:
修改云服务器密码,密码设置为由大写、小写、特殊字符、数字组成的12 - 16位的复杂随机密码。详情请参见 重置实例密码。
删除云服务器中已不再使用的用户。
将 sshd 的默认22端口改为1024 - 65525间的其他非常用端口。详情请参见 修改云服务器远程默认端口。
管理云服务器已关联安全组中的规则,只需放通业务和协议所需端口,不建议放通所有协议及端口。详情请参见 添加安全组规则。
不建议向公网开放核心应用服务端口访问。例如,mysql 及 redis 等。您可将相关端口修改为本地访问或禁止外网访问。
安装云镜等防护软件,并添加实时告警,以便及时获取异常登录信息。