防止 MITM 的“扩展保护”入门和实施指南
扩展保护是 Microsoft 对 Request For Comments (RFC) 5056 的实现,它的存在是为了验证集成 Windows 身份验证 (IWA) 交换中传输层的真实性。扩展保护不提供任何其他记录的功能。
在 IWA 交换中,创建了两个通道;外部传输通道 (TLS/SSL) 和内部身份验证通道 (Kerberos、Digest 或 NTLM)。
扩展保护检查到达服务器端的外部通道是否与客户端打开的外部通道相匹配。服务器根据客户端在内部通道交换中提供的信息验证客户端的外部通道是否匹配。如果两个通道端不匹配,则服务器拒绝客户端的请求。
当不使用扩展保护时,IWA 身份验证交换容易受到重放攻击,特别是“凭证中继”。
延长保护工作
- 根据需要应用 KB973811 http://support.microsoft.com/?kbid=973811中提到的更新。
- 为客户端设置注册表项以启用此处指定的选择加入功能 KB968389 ( http://support.microsoft.com/kb/968389 )。
- 按照 KB973917(http://support.microsoft.com/kb/973917或http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication或http: //blogs.technet.com/b/srd/archive/2009/12/08/extended-protection-for-authentication.aspx )。
- 如果使用自定义身份验证机制,可能需要对客户端和服务器应用程序进行一些更改,如此处http://msdn.microsoft.com/en-us/library/dd639324.aspx中所述。
控制扩展保护
扩展保护以三种模式运行:关闭(也称为从不)、接受(也称为何时支持)和始终。当设置为始终扩展保护时,需要进行通信。使用此模式时,不支持扩展保护的客户端将被拒绝。
被扩展保护拒绝的客户端会将消息记录到 HttpListener 跟踪如果在应用程序中配置有关如何执行此操作的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ty48b824.aspx。
支持扩展保护
并非所有情况都支持扩展保护。如果您运行的是端到端更新版本的 Windows,那么扩展保护可能很容易部署。如果您有一个通过非 Windows 代理服务器或委托使用 Kerberos 或 NTLM 的混合环境,您的实现可能需要更多的工作。
不基于 .NET 或 Internet Explorer 的第三方浏览器(例如 Chrome 和 Firefox、Safari)通常不支持扩展保护,即使它们可能支持 IWA。如果您需要与公司网络之外的系统进行互操作,或者您的公司网络使用多种浏览器,这可能会成为一个问题。
Chrome 最新稳定版(版本 51.0.2704.84)现在支持扩展保护,SSO 体验类似于 IE