从系统身份验证中删除“nullok”可防止任何 root 密码

从系统身份验证中删除“nullok”可防止任何 root 密码

[这是我在 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 个特定密码登录并拒绝任何其他密码的访问。

相关内容