什么是keytab?

38

我正在尝试理解Kerberos的工作原理,因此遇到了这个名为Keytab的文件,我相信它用于向KDC服务器进行身份验证。

就像Kerberos领域中的每个用户和服务(比如Hadoop)都有一个服务Principal一样,每个用户和服务是否都有一个Keytab文件呢?

另外,使用Keytab进行身份验证是基于对称密钥加密还是公钥-私钥加密?


请阅读 https://web.mit.edu/kerberos/krb5-1.15/doc/basic/keytab_def.html 以及支持的加密类型请参见 https://web.mit.edu/kerberos/krb5-1.15/doc/admin/conf_files/kdc_conf.html#encryption-types。 - Samson Scharfrichter
2
用户在进行身份验证时可以输入他/她的密码,但服务无法这样做。因此需要将密码持久化到文件中。请参阅 https://docs.google.com/presentation/d/13ZOkGCbryhv8BgBbvJG5AwZNnkTd-hyth5x7Tj5zhp0/edit#slide=id.p27 的第15页(如果您想了解Hadoop世界中的Kerberos,则必须阅读整个演示文稿)。 - Samson Scharfrichter
1个回答

37
为了回答你的两个问题,每一个用户和服务并不需要一个 keytab 文件,并且 keytabs 使用对称密钥加密。
根据我的理解,我将会进一步解释在使用 Active Directory 作为目录服务的 Windows 和非 Windows 系统混合网络中如何使用 keytabs。如果目录服务不是 AD,那么我不太熟悉 keytab 的使用方法,但我想这些概念应该完全相同,因为它们都基于 Kerberos。在企业网络中,每个用户和服务并不需要一个 keytab 文件。
Keytabs 是包含服务及其长期密钥(Samson 称之为密码)在目录服务中的表示形式的加密文件。在 Active Directory 领域中,keytabs 对运行在非 Windows 平台上受到 Kerberos 协议保护的服务尤其有用。
Keytabs 用于以下两种情况:
1. 解密入站 AD 用户对服务的 Kerberos 服务票证。 2. 或者对网络上的另一个服务进行身份验证。
第二点特别有用,因为正如 Samson 所说,服务不能手动键入其密码以进行身份验证,所以长期密钥被编码到文件中是有帮助的。这就是为什么 keytab 文件本身是敏感的并且需要受到保护的原因。
有关 keytabs 的更多详细信息,请参阅此处:Kerberos Keytabs – Explained
我经常根据在这个论坛中看到的问题进行编辑。

1
非常感谢!那么,keytab文件的格式是什么? - white-hawk-73
您不需要担心这个问题,因为 keytab 创建语法会帮您构建 keytab。如果在创建后以任何方式修改 keytab,在我的经验中,您将使其无效,并且它将不再起作用。我的文章详细介绍了 keytab 语法和格式。我刚刚根据您在此帖子中提出的问题进行了编辑并添加了一些额外的细节。但是,我已经回答了您最初的两个问题。 - T-Heron
如果我们已经回答了您的问题,请将其标记为已解决,这将向社区中的其他人验证;否则,请告诉我们是否还有任何疑问。 - T-Heron
当然!已经完成。您能否告诉我是否有一份Kerberos教程,以便了解大部分(如果不是全部)内容? - white-hawk-73
2
这是相当主观的,网上有很多相关内容,但我为这类问题收藏了这四个页面:http://gost.isi.edu/publications/kerberos-neuman-tso.html;http://www.zeroshell.org/kerberos/Kerberos-operation/;http://dfusion.com.au/wiki/tiki-index.php?page=Kerberos+Tutorial;和https://social.technet.microsoft.com/wiki/contents/articles/4209.kerberos-survival-guide.aspx。 - T-Heron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接