[这是我在 ServerFault 上的帖子的后续内容:https://serverfault.com/questions/661136/root-accepts-any-password-how-to-change-to-a-real-password]
在旧系统上,root 帐户接受任何密码,只要密码不为空即可。任何密码都会被接受为正确的密码,因此任何人都可以登录。
在过去(十多年前)这不是问题,因为系统位于具有自己的身份验证的拨号调制解调器后面......但几年后,可以通过公共 IP 地址访问系统。
奇迹般的是,直到上周才有人关心它的 SSH 端口。
有人(中国IP地址)以root身份登录并更改了一些系统设置并注销。
我从备份中恢复了系统,并更改了 SSH 端口,使其无法再通过 ADSL 调制解调器访问,以便给我一些时间来解决此问题。
问题似乎出在/etc/pam.d/system-auth
:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok md5
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
当我改变时
auth sufficient /lib/security/pam_unix.so likeauth nullok
到
auth sufficient /lib/security/pam_unix.so likeauth
那么 root 帐户不再接受任何随机密码,但它也不接受我配置的密码
我尝试了以下方法:
- 首先通过命令修改root密码
passwd
。结果:我可以使用任何密码登录 - 然后删除
nullok
:我无法在新的 SSH 会话中使用任何密码登录,即使使用我刚刚设置的密码也无法登录 - 然后我又改了root密码。结果:我仍然无法在新的 SSH 会话中使用任何密码登录。
- 然后我放回
nullok
系统身份验证:我可以再次使用任何密码登录
我一直在保持打开的 SSH 会话中进行编辑和密码设置,并通过打开新的 SSH 会话来测试结果。
我不敢关闭主 SSH 会话,因为担心无法再次进入。我也没有重新启动系统,因为它是一个正在运行的交通灯系统
我很惊讶我不必输入旧密码,而只需输入新密码(两次)。
更改密码后我得到了答案Password changed
,但我无法使用新密码通过 SSH 登录。
我必须在其他地方设置 root 密码吗?或者删除是否会nullok
通过 SSH 完全阻止 root 帐户?
我希望唯一root
能够使用 1 个特定密码登录并拒绝任何其他密码的访问。