Jon Asked: 2013-03-15 07:58:14 +0800 CST2013-03-15 07:58:14 +0800 CST 2013-03-15 07:58:14 +0800 CST 用于 UNIX/AD kerberos 身份验证的 kerberos keytab 文件是什么? 772 我已经证明 UNIX/AD Kerberos 身份验证可以在不存在密钥表文件的情况下工作,所以我想知道我是否应该担心它(假设我需要为每个服务器提供单独的密钥表,我想在其上提供 AD 身份验证服务). unix 1 个回答 Voted Best Answer rra 2013-03-17T20:23:01+08:002013-03-17T20:23:01+08:00 本地身份验证期间本地密钥表的主要用途是防止 KDC 欺骗。 Kerberos 登录身份验证的工作原理是从 Kerberos KDC 请求 TGT,然后使用由本地输入的密码形成的密钥对其进行解密。如果解密有效,则认为登录成功(如果没有密钥表)。这种方法的问题在于,攻击者可能同时使用在攻击者选择的密码中加密的 TGT 来欺骗 KDC 回复。如果系统在真正的回复之前得到那个回复,它会很高兴地用攻击者的密码解密它,然后认为认证成功。如果在同一本地网络上有一个系统,这很容易做到,因为 Kerberos 是一种 UDP 协议。 如果有本地 keytab,登录过程还需要一个步骤:它向 KDC 请求存储在本地 keytab 中的委托人的服务票证,然后通过使用 keytab 中的密钥对其进行解密来验证该票证。攻击者的 KDC 不知道系统上 keytab 的私钥,因此这一步将失败。(当然,这意味着系统密钥表需要锁定,只能由 root 访问,因为任何可以访问密钥表的人仍然可以成功攻击系统。) (资格:我是 Debian 和 Ubuntu 中使用的 Kerberos PAM 模块的作者。)
本地身份验证期间本地密钥表的主要用途是防止 KDC 欺骗。
Kerberos 登录身份验证的工作原理是从 Kerberos KDC 请求 TGT,然后使用由本地输入的密码形成的密钥对其进行解密。如果解密有效,则认为登录成功(如果没有密钥表)。这种方法的问题在于,攻击者可能同时使用在攻击者选择的密码中加密的 TGT 来欺骗 KDC 回复。如果系统在真正的回复之前得到那个回复,它会很高兴地用攻击者的密码解密它,然后认为认证成功。如果在同一本地网络上有一个系统,这很容易做到,因为 Kerberos 是一种 UDP 协议。
如果有本地 keytab,登录过程还需要一个步骤:它向 KDC 请求存储在本地 keytab 中的委托人的服务票证,然后通过使用 keytab 中的密钥对其进行解密来验证该票证。攻击者的 KDC 不知道系统上 keytab 的私钥,因此这一步将失败。(当然,这意味着系统密钥表需要锁定,只能由 root 访问,因为任何可以访问密钥表的人仍然可以成功攻击系统。)
(资格:我是 Debian 和 Ubuntu 中使用的 Kerberos PAM 模块的作者。)