NFS 客户端密钥表:多台机器

NFS 客户端密钥表:多台机器

应该如何为每台客户端计算机设置客户端密钥表文件以访问网络服务?我的工作示例是 NFSv4,它要求每个客户端在客户端计算机(以及 NFS 服务器主机)上本地拥有一个 Kerberos 密钥表。

  1. 所有需要访问 NFS 主机的客户端计算机之间在通用密钥表文件(用于 NFS 目的)中共享相同的密钥会导致什么后果(如果有的话)?

  2. 如果根据 #1 的结果,我们确实需要在不同的密钥表上使用单独的密钥每位顾客,有什么有效的(更重要的是安全的)方法可以自动为数千台机器中的每台机器创建密钥表?我不想在每个机器上都生成并导出密钥!

答案1

通用密钥表根本没用 - Kerberos 服务原则与主机名绑定。因此通用密钥表根本不起作用。您不一定需要 NFS 特定密钥 - 取决于您使用的操作系统版本。我们可以使用它来HOST/full.qualified.hostname验证 RHEL 6+ 上的 NFS。

所以是的,你确实需要在每台机器上都安装一个 keytab。我知道这很糟糕,但这就是事情的规律。

请记住,在 Windows 域中,您必须通过“域加入”过程有效地执行相同的操作 - 其中一项主要操作是在 Windows 客户端上创建密钥表。

我们已经开始研究集成域 - 将我们的 Linux 客户端绑定到 Windows AD。通过这种方法,您可以net在 Linux 上使用命令,例如,net ads join我认为它是 SAMBA 的一部分。您可以在其中嵌入用户名和密码,并通过您已有的任何现有自动化机制运行它。(net ads keytab create也可以......正如它所说的那样。)

如果您不使用 AD,那么恐怕我不知道。我猜想存在类似的东西来生成 keytab。

答案2

我已经编写了代码来解决您的问题,但它并不适用于所有人。问题是您必须想出某种方法来将信任扩展到不受信任的硬件。每个站点都会有略微不同的方法来实现这一点。

我使用由我们的配置管理安装的 ssh 密钥来将信任扩展到不受信任的机器。

我写的代码是

https://github.com/bbense/aeakos

但它实际上更像是如何解决 keytabs 自动安装难题的概述。

至于为客户端使用通用密钥表,这可以适用于某些基于 Kerberos 的服务,但我从未见过将其用于 Kerberized NFS。并且通常情况下,您需要在每台机器上至少有一个 host/foo.com 才能充分利用 Kerberos 提供的功能。如果您不能做到这一点,那么部署 Kerberos 就没有什么意义了。

理论上,如果您希望每台机器都能访问相同的服务器/文件,通用客户端密钥表应该可以工作。实际上,您必须彻底分析 nfs 服务器如何使用 kerberos 身份验证来实现授权,以确保一切正常。

成功使用 kerberos 的一部分是要记住它只进行身份验证,授权始终特定于应用程序。我对 NFSV4 所做的一切都表明它需要每个客户端主机都有一个唯一的 kerberos id,但我没有证据表明它需要一个。

相关内容