我有大约 20 台服务器...如何管理每台服务器的 SSH 密钥和权限?

我有大约 20 台服务器...如何管理每台服务器的 SSH 密钥和权限?

我有数据库服务器、Web 服务器、SVN 服务器等等。我经常在它们之间进行 ssh...或者它们自动 ssh。

我如何管理哪个服务器可以登录到哪个其他服务器?

答案1

我使用 Puppet,为每个密钥定义一个类,然后使用包含这些类的类来定义我拥有的密钥的“组”(对我们来说,它是人——所以是 L1 技术人员、L2 技术人员、经理、开发人员——但你可以做数据库服务器、文件服务器、svn 服务器等)。然后,各种类型的机器都有自己的清单,定义哪些组可以访问该类型的机器,因此开发机有 L1、L2 和开发人员,生产服务器有 L1 和 L2,敏感服务器只有 L2,诸如此类。添加新机器只需确定它属于哪些类,然后在这里和那里添加几行,我们已经在新机器调试程序中记录了这些内容。

答案2

我们使用 OpenLDAP 来存储用户的:

  • 公钥
  • 密码
  • uids
  • sudo 权限
  • 真名
  • 电话号码
  • 电子邮件
  • 等等。

它稳定、易于扩展、具有大量文档和集成功能,所以我推荐它。

答案3

MIT Kerberos v5.

Kerberos 是一个安全的、面向特权的、基于票证的系统,它理解用户、领域、角色、机器等概念。您首先使用票证授予票证进行身份验证,然后当您在机器上请求特定特权/登录时,票证授予票证会为您获取服务票证。您可以使用集中管理的 ~/.k5login 文件(可能通过 Puppet/cfengine)控制哪些主体可以登录哪些帐户。配置基础机器可以拥有自己的主体/密钥等,以便能够自动更新其他系统。您还需要物理保护 KDC 并将其锁定为可能一个或两个关键用户,因为这是您撤销主体等的地方。

我确信您的实施将会有很大差异,但以上是我们曾经运行的设置的非常广泛的概述。

这是一个复杂的系统,在实施和安全程序方面可能需要您做出重大改变。但根据我的经验,一旦系统到位并正确配置,它就会变得透明,对各个相关团队的负担就会大大减轻。

你可以在这里读更多关于它的内容:

MIT Kerberos 用户指南

答案4

您可能对 ssh-agent 概念感兴趣,您可以让 ssh-client 连接通过用于到达当前位置的 ssh 连接“回复”有关凭证的信息。

它非常方便。

相关内容