将 root 权限的用户添加到远程服务器

将 root 权限的用户添加到远程服务器

我有一个 Linux 服务器,除了我之外,我想在其中添加几个其他人作为 root 用户。所有用户都很少需要访问该服务器(如果有的话)。第一步,我为root用户设置了一个我们都知道的密码。然后我添加了这些用户useradd

useradd -ou 0 -g 0 user1 -d /root/user1/ -s /bin/bash
useradd -ou 0 -g 0 user2 -d /root/user2/ -s /bin/bash

之后,我将root用户的密码哈希复制到user1user2/etc/shadow。然后我.ssh/authorized_keys为每个用户创建了文件(user1都有user2他们的个人 SSH 公钥)到他们的主目录中,最后PermitRootLogin without-passwordsshd_config.没有用户authorized_keys的文件root,即无法使用用户登录服务器root

这基本上是我所需要的,但也许这个设置有一些(安全)缺点,有更好的解决方案吗?

答案1

你所做的事情是非典型的,所以我不会推荐它。大多数程序都假定 uid 和用户名之间存在一对一的映射。您可能会遇到奇怪的错误/未知行为或最严重的安全漏洞 - 这对我来说是未知的,因此当有更好/更典型的方法来实现您的目标时,我不能推荐它。鉴于此,我要做的第一件事就是删除您创建的帐户。

现在,如果用户需要 root 访问权限,假设您/他们了解与 root 帐户相关的风险,那么授予他们 root 帐户的访问权限并没有什么大问题。从安全角度来看,ssh 中最薄弱的一点是密码验证,因此我强烈建议禁用它。这可以通过编辑/添加以下内容来完成/etc/ssh/sshd_config

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

但是,拥有 root 权限的时间超过您所需的时间会出现一些问题。最值得注意的是,一个简单的错误更容易造成更大的损害。鉴于此,最好创建一些用户可以登录的非特权帐户。一旦登录到他们的用户,就可以在需要时通过使用su -root 密码来获取 root 权限。

现在,远程攻击通常针对 root 用户(以及常见用户名,例如admin),禁用密码身份验证后,您通常不必担心这一点,因为密钥身份验证足够强大。如果您拥有可以获得 root 权限的用户帐户(如上所述和如下所述),那么您可以通过将以下内容添加/编辑到/etc/ssh/sshd_config.

PermitRootLogin no

警告:确保您拥有可以获取 root 权限的用户帐户,否则您可能会将自己锁定在服务器之外。

这可能有助于保护您免受错误配置或未来可能出现的 ssh/openssl 漏洞的影响,因为攻击者现在还需要用户名才能访问非特权帐户,然后需要密码才能获得完全 root 访问权限。

最后,在多个用户之间共享密码并不是最佳实践。如果您出于任何原因希望撤销某人的访问权限,每个人都需要学习新密码。最好使用用户自己的密码来获取 root 权限。这样,您只需锁定用户的帐户,更改 root 密码(因为他们可以修改它,因为他们拥有 root 权限),并且每个人都可以继续使用自己的密码而不会出现问题(请注意,将某人锁定在外面会出现更多问题)他们拥有 root 访问权限的服务器,因为他们可以对系统执行任何操作,包括更改其他用户密码或将其密钥添加给其他用户)。

为此,您可以使用sudo代替 来su允许用户使用自己的密码获得 root 权限,就像 root 一样。为此,请安装sudo并将用户添加到wheelsudo组(取决于您使用的发行版)。然后,用户可以使用sudo <command>root 权限运行命令或sudo -i获取 root shell。

这还为您提供了更好的审核日志,因为 sudo 执行的每个操作都会根据用户名进行记录 - 假设您并非sudo -i一直这样做。

您甚至可以进一步限制用户仅运行命令的子集,而不是授予他们访问所有命令的权限。这使得将来更容易撤销访问权限,因为他们能够对系统执行的操作更少。但这取决于您对用户的信任程度,如果您不了解他们需要访问的所有内容,这可能会很烦人。

鉴于此,攻击者需要用户名以及 ssh 密钥或基于密钥的身份验证中的漏洞才能访问服务器,从而造成有限的损害。然后他们需要密码才能真正获得 root 权限并造成真正的破坏。

安全性是分层应用的,通常层数越多,您就越安全。但增加的层数也会降低可用性。由您决定希望应用于给定系统的平衡。我上面描述的步骤将以最小的可用性成本增加安全性。您还可以采取更多步骤来锁定系统,但对于大多数情况来说,这应该足够了。

答案2

不要这样做!我认为没有充分的理由让非 root 用户以 root 权限运行作为标准。那很危险哟。

相反,只需根据发行版将用户添加到sudo或组中(通常是 sudo)。wheel

这可以通过 来完成useradd -G sudo -s /bin/bash <username>

至于 SSH 身份验证,使用密钥就完全没问题了。

相关内容