NTLMv2 和 Kerberos 之间有什么区别?

d4r*_*ckh 3 active-directory

我的理解是:

  • NTLMv1/v2 是 Net-NTLMv1/v2 的简写,因此是相同的东西。
  • NTLM(不含 v1/v2)意味着完全不同的东西。
  • NTLM 哈希值存储在安全帐户管理器 (SAM) 数据库和域控制器的 NTDS.dit 数据库中。
  • Net-NTLM 哈希用于网络身份验证(它们源自质询/响应算法并基于用户的 NT 哈希)。
  • Kerberos 使用票证进行身份验证

我的问题:

  1. 当您可以使用 Kerberos 进行身份验证(即 SMB)时,为什么要使用 NTLMv2
  2. 为什么您要登录的帐户需要 Kerberos 的 SPN?不能只使用 Kerberos 登录任何帐户吗?
  3. NTLMv2 是否仅用于登录帐户?
  4. SMB 中是否使用 NTLMv2?
  5. LDAP 中使用了 Kerberos,对吗?
  6. 听说 Kerberos 用于从域控制器检索资源,有哪些资源?
  7. 为什么仍然使用 NTLMv2?在哪里
  8. 除了使用 SPN 登录帐户之外,Kerberos 还用于哪些地方
  9. Kerberos 真正让您登录的是什么?如地狱?帐户?
  10. NTLMv2 真正让您登录的是什么?如地狱?帐户?文件共享?
  11. SPN 是什么、用途和用途

Ste*_*eve 6

这里有太多的问题无法单独回答,所以这里有一个更好的思考方式。

NTLM 是一种 p2p 身份验证协议。客户端直接向服务器发送票证,服务器可以直接验证它或将其发送到域控制器进行验证。这就是为什么工作组 PC 到工作组 PC 只需用户名和密码即可成功。但是,使用 NTLM,您无法证明您将票证发送到的服务器实际上是您想要将其发送到的服务器。这意味着没有服务器身份验证,因此也意味着没有相互身份验证。

Kerberos 始终依赖第三个服务器来对您您尝试对其进行身份验证的服务器进行身份验证。为此,您首先要向 KDC(域控制器)进行身份验证,然后使用生成的票证请求目标服务的新票证。KDC 使用 SPN 在目录中查找目标服务的详细信息,并将身份加密为只有目标服务知道的密钥。

然后,客户端将新票证发送到目标服务,该服务解密票证,然后使用加密票证中共享的密钥加密对客户端的响应。由于只有指定服务器可以解密票证(因此可以看到共享加密密钥),因此客户端有证据表明它正在与具有给定 SPN 的服务进行通信。这提供了服务器身份验证,因此也提供了相互身份验证。如果您没有 SPN,则无法要求 KDC 创建只有服务器知道的票证。

如果您没有 SPN,则有一种鲜为人知的 Kerberos 流(称为用户到用户),它需要带外进程来交换额外的票证。这很少使用,因为它更复杂并且只是转移服务器身份验证问题。

这解释了为什么这两种协议都存在。NTLM 存在于没有 KDC 的地方,或者服务未配置 SPN 的地方。缺点是 NTLM 安全性较差。

在 Windows 领域,NTLM 和 Kerberos 大多可以互换,因为它们封装在一个名为 SPNEGO 的单独协议中,SPNEGO 是一种身份验证协商协议。通常首先尝试 Kerberos,如果 Kerberos 失败,则退回到 NTLM。在大多数情况下,使用 SPNEGO 代替 Kerberos 或 NTLM,因此是否使用 Kerberos 还是 NTLM 完全取决于客户端是否可以获得 Kerberos 票证。

通常总是会尝试 Kerberos。当您登录加入域的计算机时,始终使用 Kerberos。NTLM 无需额外工作即可使用,因为它是您输入的凭据的产物。