这是我从来没有真正能够回答以及我喜欢的东西: 在IIS中使用Kerberos身份validation,而不是NTLM的真正优势是什么?
我看到很多人真的很难成立(包括我自己),而且我还没有拿出一个好的理由来使用它。 虽然有一些非常重要的优势,否则设置它不值得一提,对不对?
仅从Windows的angular度来看:
MaxConcurrentAPI
, AuthPersistSingleRequest
(false) ,更快的数据中心)压倒了DC并不罕见。 自我参照奖金 。) lmcompatibilitylevel
) 可能能够遍历一个代理,但是看到上面的DC点: 你仍然需要和一个活跃的DC在同一个networking上,就像服务器一样 。
票证是长期的 (10小时),意味着在票证生命周期内更less的DC通信 – 并强调:这可以节省数以百万计的 每个客户端在这个生命周期 – ( AuthPersistNonNTLM
仍然是一件事; Kerberos PACvalidation曾经是一件事情)
UserA
访问IIS,并在IIS访问SQL Server时使用相同的用户帐户,这是“授权委派”。 KRB_ERR_AP_MODIFIED
) 当我们在这时:
LogonType
configuration为完成此操作(认为在2000年到2003年间,默认情况下会更改为networking明文,但可能会误解) 总结一下:
遏制可能会很难build立起来,但是有很多指南( 我的一个 )试图简化这个过程,而且从2003年到2008年,这些工具已经有了很大的改进( SetSPN
可以search重复的,这是最常见的问题; 使用SETSPN -S
只要你看到使用-A的指导,生活就会更开心)。
受限制的授权是值得的入场费用。
另一种方法是将身份validation设置为negotiate
并使用两者而不是一方而不是另一方。
从Microsoft应用程序validation程序中检测常见的开发人员错误。 其中一个错误是使用NTLM :
NTLM是一种过时的身份validation协议,其漏洞可能会危及应用程序和操作系统的安全。 最重要的缺点是缺乏服务器身份validation,这可能允许攻击者诱骗用户连接到欺骗服务器。 作为缺less服务器身份validation的必然结果,使用NTLM的应用程序也容易受到称为“reflection”攻击的攻击types的攻击。 后者允许攻击者将用户的身份validation对话劫持到合法的服务器,并用它来向用户的计算机validation攻击者。 NTLM的漏洞和利用这些漏洞的方法是增加安全社区研究活动的目标。
虽然Kerberos已经有很多年了,但是许多应用程序仍然只是使用NTLM编写的。 这不必要地降低了应用程序的安全性。 但Kerberos无法在所有场景中取代NTLM,主要是客户端需要对未join域的系统进行身份validation(家庭networking可能是最常见的)。 Negotiate安全软件包允许尽可能使用Kerberos的向后兼容的安全措施,只有在没有其他选项的情况下才会恢复为NTLM。 切换代码以使用Negotiate而不是NTLM将显着提高我们的客户的安全性,同时引入很less或没有应用程序兼容性。 谈判本身并不是一个银弹 – 有些情况下攻击者可以强制降级到NTLM,但是这些攻击要难得多。 但是,一个直接的改进是编写正确使用协商的应用程序自动免疫NTLMreflection攻击。
通过对使用NTLM谨慎的最后一句话:在未来的Windows版本中,可以禁止在操作系统上使用NTLM。 如果应用程序对NTLM有很大的依赖性,那么当NTLM被禁用时,它们只是无法进行身份validation。
您应该添加一个非常重要的观点:
在20多年的时间里,Kerberos已经成为Unix中的标准和开放协议,而NTLM则是微软公司的一个纯粹的专有解决scheme,只有微软才知道。
如果您需要模拟用户访问不在iis服务器上的资源,则需要Kerberos。