问题
用 TTL 连接刷 Armbian buster 的盒子,然后用 putty 和 plink 登录,一输入 root 回车,就报 Login incorrect!但通过 ssh 远程登录却没任何问题。
原因
ttyAML0 不在 /etc/securetty 里。
分析过程
一开始听运维小伙伴说:最可能的原因是键盘 Caps 开启了。轻松排除。
后来发现输入大写的 ROOT,反而提示输入 password,这让稣想到“枚举用户”攻击。开始思考,是不是通过 TTL 登录被 Armbian 认为是不安全的?
于是学习 securetty 相关知识,发现确实在某些不安全场合 root 是不被允许登录的,因为系统管理员一旦通过不安全渠道输入密码,那么密码就可能被盗取,所以一输入 root,就应该立刻报错,而不该继续让输入密码。而输入其它不存在的用户时(比如大写的 ROOT),反而应该让继续输入密码,最后再提示登录失败,因为如果提示用户不存在,会让黑客穷举出系统里有什么账号。
1 | grep securetty /etc/pam.d/login |
后来注意到 TTL 用的 tty 名字是 ttyAML0,grep ttyAML0 /etc/securetty
果然不存在。
解决
echo ttyAML0 >> /etc/securetty
搞定。