管理数千台服务器的 root 密码的最佳解决方案是什么

管理数千台服务器的 root 密码的最佳解决方案是什么

我是一名系统管理员。在生产环境中我需要管理数千台服务器。我和我的同事使用一个中央管理服务器并通过其他服务器分发其公钥。因此我们可以使用此管理服务器 ssh 到其他服务器。

有时我们需要使用root密码,例如当服务器关闭时,我们需要使用iLO来确定原因。

目前,我们使用共享的 root 密码。这不安全。我也研究了一些单服务器解决方案,例如OPIE(Everything 中的一次性密码),但由于我们有这么多服务器,这不是一个好主意。

编辑:

我想要的密码管理解决方案是:

  1. 它应该是安全的,所以一次性密码是一个很好的解决方案。
  2. 密码可以轻松输入,有时我们需要将监视器连接到服务器,或者使用我上面提到的 iLO。
  3. 即使服务器处于离线状态(没有任何网络连接),该解决方案也应该有效

因此,将 root 密码设置为一串长而随机的字符串并不是一个好主意,尽管它是通过某个已知命令生成的(例如openssl passwd)。它很难记住,有时也很难生成(没有我的笔记本电脑在身边)

答案1

你可以使用木偶将密码更改推送到所有服务器。您可以root使用user类型像这样:

    user { 'root':
            ensure => present,
            password => '$1$blablah$blahblahblahblah',
    }

生成加密密码:

openssl passwd -1 -salt "blah"

我建议每月左右更改一次——也许使用 SA 记住的方案。您也可以通过安全方法分发它或将其放在保险箱中。

答案2

您始终可以设置禁用密码。这将阻止任何网络访问 root,并且如果您启动到单用户模式,大多数发行版将直接启动到 shell。

这可能不是一个像你想象的那么大的安全问题。无论如何,绕过 root 密码是小菜一碟,除非你用密码锁定了 grub,否则几乎任何人都可以简单地告诉 grub 启动 bash 而不是 initrd。

当然,这可能意味着您应该弄清楚如何用密码保护您的引导加载程序。

答案3

您可以使用一次性密码进行集中管理。我知道,这不符合“必须在 eth 处于离线状态且使用 iLO 访问服务器时工作”的要求。

无论如何:问题是服务器离线的频率是多少。

因此您可以考虑以下设置:

使用集中管理的 OTP 解决方案,如 privacyidea (http://www.privacyidea.org)。您可以为 root 用户分配多个不同的 OTP 令牌。每个令牌都有不同的 OTP PIN 并且是不同的设备。因此,您的所有同事都可以以 root 用户身份登录,但在审计日志中,您将看到哪个令牌已通过身份验证,因此您可以知道哪个同事在什么时候登录了。

在服务器上,您需要配置 pam_radius 以将身份验证请求传递给 RADIUS 和 privacyIDEA。

糟糕。现在你的服务器离线了。在这种情况下,你应该使用你的 pam 堆栈。我可以想到类似的东西:

auth sufficient pam_unix.so
auth required pam_radius.so use_first_pass

这样您就可以使用固定密码离线登录,否则密码将交给 pam_radius 并通过 privacyIDEA 验证为 OTP。

请参阅此指南https://www.howtoforge.com/manage-two-factor-authentication-in-your-serverfarm-with-privacyidea

相关内容