如果我在 Linux 服务器上更改了 root 密码,那么如果有人为 root 用户创建了 SSH authorized_key,他们还能访问 root 吗?

如果我在 Linux 服务器上更改了 root 密码,那么如果有人为 root 用户创建了 SSH authorized_key,他们还能访问 root 吗?

我甚至不确定我问得是否正确。每当有人提到更改 root 密码时,他们都会提到更改/etc/passwd,或者只是使用命令passwd,但我从未听说过必须在 authorized_keys 文件中更改它。我在哪里可以找到它,以及如何安全地删除条目或更改 root 密码而不会造成混乱?谢谢!

答案1

是的。您需要删除用户的公共 SSH 密钥才能完全删除访问权限。如果您只是想删除一个用户的 root 访问权限,那就有点棘手了。希望您一直在使用单独的私钥,否则您将不得不重新创建文件并将公钥重新分发给授权用户。

要删除该条目,您需要编辑该authorized_keys文件。如果这是 Linux 机器上的 root 用户,则该文件可能位于/root/.ssh/authorized_keys。您需要删除包含要删除的用户的公钥的行。不幸的是,如果没有该用户的公钥副本,就无法轻松知道这是哪一行。

答案2

是的;出于这个原因,允许人们以“root”身份通过 ssh 进入被认为是不好的做法。您的计算机可能应该禁用 root 的 ssh,并使用“sudo”之类的东西来控制谁可以以 root 身份执行什么操作,这样您就不需要提供 root 密码或任何等效信息。

离开者的账户可以被简单地禁用,并且你可以保证他们无法再登录(当然,除非他们留下了一些后门,但无论如何你对此无能为力)。

我们使用 ldap 目录来存储用户、组和 ssh 密钥,然后按组限制“sudo”访问。

答案3

如果某人拥有 root 权限,则很难甚至不可能确保他们无法恢复权限,除非您重新安装并从他们获得访问权限之前进行的备份中恢复。需要注意的事项:首先是一个老把戏:任何额外的用户都具有/etc/passwdUID 0。例如:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
..etc...
something-innocuous:0:42:foo:/:/bin/sh
..etc..

该额外用户将拥有单独的密码,并且一旦登录即可有效成为 root 用户。

visudo如果已安装,请运行sudo并检查是否有任何异常。

您应该检查/etc/pam.conf所有内容/etc/pam.d(可能其他地方也一样?)以确保没有任何东西配置 PAM 来授予root从特定 IP 或类似 IP 进行无密码登录的权限。

您应该检查是否有任何以 root 身份运行的额外进程,这些进程可能会向特定的远程或本地用户提供 root shell;该进程的可执行文件不再需要存在于磁盘上,或者不需要是启动该进程时的状态。

最后,如果您仍然认为这并非不可能:搜索任何挂载点,其挂载选项不包含nosuidsetuid/setgid 二进制文件(使用类似find -perm /6000)或 root 可能运行的二进制文件,这些二进制文件可能已被修改。哪些可能最近被修改/添加?其中任何一个。时间戳很容易更改。

一个 rootkit 可能已经完成了上述操作的任意组合,并且可能已经修补了内核(也可能是在内存中,无需重新启动)以阻碍您检测它的能力(从 ps/netstat 等中删除内容)。

祝你好运。 :-)

答案4

您可以通过PermitRootLogin nosshd_config 文件中的设置来禁用通过 ssh 进行的 root 登录。如果您的服务器以 root 身份交换数据或远程执行命令(例如备份某些系统),那么您可能不想这样做。如果是这种情况,那么 Kyle Cronin 的答案是正确的。

相关内容