Sam Morris Asked: 2009-07-02 09:58:05 +0800 CST2009-07-02 09:58:05 +0800 CST 2009-07-02 09:58:05 +0800 CST 如果我在 linux 服务器上更改了 root 密码,如果他们为 root 用户创建了 SSH 授权密钥,他们仍然可以访问 root 吗? 772 我什至不确定我问的对不对。每当有人提到更改 root 密码时,他们都会提到更改/etc/passwd,或者只是使用passwd命令,但我从未听说过必须在 authorized_keys 文件中更改它。我在哪里可以找到它,我怎样才能安全地删除一个条目或将其更改为 root 而不会造成破坏?谢谢! linux ssh root 6 个回答 Voted Best Answer Kyle Cronin 2009-07-02T09:59:35+08:002009-07-02T09:59:35+08:00 是的。您需要删除用户的公共 SSH 密钥才能完全删除访问权限。如果您只是想删除一个用户对 root 的访问权限,那就有点棘手了。希望您一直在使用单独的私钥,否则您将不得不重新创建文件并将公钥重新分发给授权用户。 要删除该条目,您需要编辑该authorized_keys文件。如果这是您在 Linux 机器上的 root 用户,则该文件很可能位于/root/.ssh/authorized_keys. 您需要删除包含要删除的用户的公钥的行。不幸的是,如果没有该用户的公钥副本,就很难知道这是哪一行。 MarkR 2009-07-02T22:06:11+08:002009-07-02T22:06:11+08:00 是的; 出于这个原因,允许人们以“root”身份登录被认为是不好的做法。你的盒子可能应该禁用 root 的 ssh,并使用“sudo”之类的东西来提供对谁可以作为 root 执行的访问控制,这样你就不需要给出 root 密码或任何等效的东西。 离开者的帐户可以简单地被禁用,并且您可以保证他们无法重新进入(当然,除非他们留下了一些后门,这是您无论如何都无能为力的事情)。 我们使用 ldap 目录来存储用户、组和 ssh 密钥,然后按组限制“sudo”访问。 Chris Boyle 2009-07-09T23:54:54+08:002009-07-09T23:54:54+08:00 如果某人拥有 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 等中删除东西) 祝你好运。:-) Bill K 2009-07-02T10:10:51+08:002009-07-02T10:10:51+08:00 如果您使用 SSH 密钥,您可能需要考虑完全禁用密码。 SSH 在没有密码的情况下几乎是无法破解的,但这两个就像一个“或”,所以如果你可以破解任何一个,你就被黑了。 pgs 2009-07-02T18:46:34+08:002009-07-02T18:46:34+08:00 PermitRootLogin no您可以通过在 sshd_config 文件中进行设置来禁用通过 ssh 的 root 登录。如果您有服务器交换数据或以 root 身份远程执行命令(例如备份某些系统),那么您可能不想这样做。如果是这种情况,那么凯尔克罗宁的答案就是要走的路。 Bruce ONeel 2009-07-10T01:16:17+08:002009-07-10T01:16:17+08:00 将 ssh 的授权密钥用于 root 是非常值得思考的。 假设我可以在系统 ZZ 上成为 root,并将我的公钥添加到 root 的 authorized_key。现在,我的私钥更有价值了,因为现在它不仅可以让某人闯入我所有的帐户,而且还可以在 ZZ 上进行 root。另外,当然,任何允许 ZZ 上的 root 的系统也可以是自己的 root。 请注意,如果我将我的私钥放在其他人可以成为 root 的系统上,这些用户也可以在 ZZ 上获得 root,因为他们可以轻松获得我的私钥。 ETC ETC ETC 这是一种非常危险的放松安全措施。人们往往对他们将私钥放在哪里有点太自由了,因为它使 ssh 变得如此容易。 我同意没有 root ssh 和 sudo,但是,如果你这样做,你可能想要添加没有 NIS/LDAP/NFS/etc 网络依赖的特殊用户,以便在有网络 fubar 时仍然可以登录。通常,当其他人不能登录时,root 可以登录,因为 root 往往具有较少的这些外部要求。
是的。您需要删除用户的公共 SSH 密钥才能完全删除访问权限。如果您只是想删除一个用户对 root 的访问权限,那就有点棘手了。希望您一直在使用单独的私钥,否则您将不得不重新创建文件并将公钥重新分发给授权用户。
要删除该条目,您需要编辑该
authorized_keys
文件。如果这是您在 Linux 机器上的 root 用户,则该文件很可能位于/root/.ssh/authorized_keys
. 您需要删除包含要删除的用户的公钥的行。不幸的是,如果没有该用户的公钥副本,就很难知道这是哪一行。是的; 出于这个原因,允许人们以“root”身份登录被认为是不好的做法。你的盒子可能应该禁用 root 的 ssh,并使用“sudo”之类的东西来提供对谁可以作为 root 执行的访问控制,这样你就不需要给出 root 密码或任何等效的东西。
离开者的帐户可以简单地被禁用,并且您可以保证他们无法重新进入(当然,除非他们留下了一些后门,这是您无论如何都无能为力的事情)。
我们使用 ldap 目录来存储用户、组和 ssh 密钥,然后按组限制“sudo”访问。
如果某人拥有 root 权限,则很难,甚至不可能确保他们无法取回它,除非您重新安装并从他们获得访问权限之前的备份中恢复。需要注意的事情:首先是一个老把戏:
/etc/passwd
UID 0 的任何额外用户。例如:那个额外的用户将有一个单独的密码,并且一旦他们登录就成为有效的 root。
visudo
如果您已安装,请运行sudo
,并检查那里是否有任何异常。您应该检查
/etc/pam.conf
所有/etc/pam.d
(可能也在其他地方?)以确保没有配置 PAM 以root
从特定 IP 或类似 IP 授予无密码登录。您应该检查以 root 身份运行的任何额外进程,这些进程可能会为特定的远程或本地用户提供 root shell;该进程的可执行文件不再需要存在于磁盘上,或者不需要是进程启动时的样子。
最后,如果您仍然认为这是不可能的:搜索任何挂载点,其挂载选项不包含
nosuid
setuid/setgid 二进制文件(使用类似的东西find -perm /6000
)或 root 可能运行的二进制文件,这些文件可能已被修改。最近可能修改/添加了哪些?任何一位。时间戳是微不足道的改变。rootkit 可能已经完成了上述的任何组合,并且可能已经修补了内核(可能也在内存中,无需重新启动)以阻碍您检测它的能力(从 ps/netstat 等中删除东西)
祝你好运。:-)
如果您使用 SSH 密钥,您可能需要考虑完全禁用密码。
SSH 在没有密码的情况下几乎是无法破解的,但这两个就像一个“或”,所以如果你可以破解任何一个,你就被黑了。
PermitRootLogin no
您可以通过在 sshd_config 文件中进行设置来禁用通过 ssh 的 root 登录。如果您有服务器交换数据或以 root 身份远程执行命令(例如备份某些系统),那么您可能不想这样做。如果是这种情况,那么凯尔克罗宁的答案就是要走的路。将 ssh 的授权密钥用于 root 是非常值得思考的。
假设我可以在系统 ZZ 上成为 root,并将我的公钥添加到 root 的 authorized_key。现在,我的私钥更有价值了,因为现在它不仅可以让某人闯入我所有的帐户,而且还可以在 ZZ 上进行 root。另外,当然,任何允许 ZZ 上的 root 的系统也可以是自己的 root。
请注意,如果我将我的私钥放在其他人可以成为 root 的系统上,这些用户也可以在 ZZ 上获得 root,因为他们可以轻松获得我的私钥。
ETC
ETC
ETC
这是一种非常危险的放松安全措施。人们往往对他们将私钥放在哪里有点太自由了,因为它使 ssh 变得如此容易。
我同意没有 root ssh 和 sudo,但是,如果你这样做,你可能想要添加没有 NIS/LDAP/NFS/etc 网络依赖的特殊用户,以便在有网络 fubar 时仍然可以登录。通常,当其他人不能登录时,root 可以登录,因为 root 往往具有较少的这些外部要求。