应用对象
Windows Server 2016 Windows Server 2016 Essentials Windows Server 2016 Standard

摘要

特定的受信任的平台模块(TPM) 芯片集中存在安全漏洞。 漏洞会减弱密钥强度。 若要详细了解此漏洞,请转到 ADV170012

更多信息

概述

以下部分有助于识别和纠正受 Microsoft 安全公告 ADV170012 中描述的漏洞影响的 Active Directory (AD) 域和域控制器中的问题。

此缓解过程专注于以下 Active Directory 公钥方案:

  • 域加入计算机凭据密钥

有关撤销和颁发新的 KDC 证书的信息,请参阅针对基于 Active Directory 证书服务的方案的缓解计划

确定域加入计算机凭据密钥风险工作流

确定加入域的计算机凭据密钥风险工作流

是否有 Windows Server 2016(或更高版本)域控制器?

已为 Windows Server 2016 域控制器引入凭据密钥。 在使用凭据密钥进行身份验证时,域控制器将添加已知的 SID KEY_TRUST_IDENTITY (S-1-18-4)。 早期的域控制器不支持凭据密钥,因此 AD 不支持凭据密钥对象,且下层域控制器不能使用凭据密钥对主体进行身份验证。

以前,altSecurityIdentities(经常被称为 altSecID)属性可以用来提供类似的行为。 Windows 不支持在本机预配 altSsecID。 因此,需要一个提供此行为的第三方解决方案。 如果预配的密钥易受攻击,那么相应的 altSsecID 必须在 AD 中进行更新。

是否有任何域 Windows Server 2016(或更高版本)DFL?

Windows Server 2016 域控制器支持公钥加密,以便在 Kerberos (PKINIT) Freshness Extension [RFC 8070] 中进行初始身份验证,虽然不会默认进行验证。 在 Windows Server 2016 DFL 或更高版本域的域控制器上启用对 PKInit Freshness Extension 的支持时,如果成功使用此扩展,域控制器将会添加已知的 SID FRESH_PUBLIC_KEY_IDENTITY (S-1-18-3)。 有关详细信息,请参阅 Kerberos 客户端和对 RFC 8070 PKInit Freshness Extension 的 KDC 支持

修补计算机

为具有 2017 年 10 月安全更新的 Windows 10 计算机提供服务时,将删除现有的 TPM 凭据密钥。 Windows 将只预配受到 Credential Guard 保护的密钥,以确保为域加入设备密钥提供票据传递攻击保护。 由于许多客户在域加入其计算机之后会添加 Credential Guard,这一变化确保启用了 Credential Guard 的设备能够确保使用凭据密钥发布的任何 TGT 都受到 Credential Guard 的保护。

临时域保护

在 Microsoft 发布域控制器服务修补程序以及用户部署修补程序之前,攻击者可以使用 AD 中的错误凭据密钥来作为域加入设备进行身份验证。 严重程度取决于目标设备。 例如,你可能会决定优先保护域控制器计算机帐户,然后再保护其他类型的计算机帐户。

可以通过在 Active Directory 中的计算机对象上设置一个不可用的凭据密钥,来保护计算机帐户免受此漏洞的影响。 这将导致计算机使用凭据密钥进行身份验证失败。 计算机随后会使用密码进行身份验证,而不是凭据密钥。

注意,确保没有配置使用证书来强制设备身份验证的组策略。 有关详细信息,请参阅域加入设备公钥身份验证中的“配置设备仅使用公钥”。

首先,下载 Windows PowerShell 模块获取 Active Directory 计算机凭据密钥

接下来,使用以下示例来禁用 Active Directory 中计算机帐户上的计算机凭据密钥

例如: 在单个计算机帐户上禁用凭据密钥

在本例中,我们在 Active Directory 中的单个计算机对象上设置了一个不可用的凭据密钥:

Import-Module .\ADComputerKeys.psm1;

Set-DRComputerKey -SamAccountName "MyComputer$" -Domain "contoso.com" -ReplaceWithUnusableKey;

例如: 在多个计算机帐户上禁用凭据密钥

在本例中,我们在 Active Directory 中的多个计算机对象上设置了一个不可用的凭据密钥。 为此,我们将此模块与 ActiveDirectory PowerShell 模块相结合。

例如,将目标指向虚拟运输部门组织单元中的所有计算机。

Import-Module .\ADComputerKeys.psm1;

Import-Module ActiveDirectory;

$computers = Get-ADComputer -SearchBase "OU=Shipping Department,DC=contoso,DC=com" -LDAPFilter "(CN=*)" -Server "contoso.com";

foreach($comp in $computers)

{

    Set-DRComputerKey -SamAccountName $comp.SamAccountName -Domain "contoso.com" -ReplaceWithUnusableKey;

}

删除临时域保护

为 DC 提供服务后,可以从 Active Directory 中的所有计算机对象中删除不可用的密钥。 此操作允许计算机帐户生成一个可以使用的新凭据密钥,而不是密码身份验证。

首先,下载 Windows PowerShell 模块获取 Active Directory 计算机凭据密钥

接下来,按照此示例从计算机对象中删除凭据密钥:

例如: 从多个计算机帐户中删除凭据密钥

在本例中,我们从 Active Directory 中的多个计算机对象中删除了凭据密钥。 为此,我们将此模块与 ActiveDirectory PowerShell 模块相结合。

例如,将目标指向虚拟运输部门组织单元中的所有计算机。

Import-Module .\ADComputerKeys.psm1;

Import-Module ActiveDirectory;

$computers = Get-ADComputer -SearchBase "OU=Shipping Department,DC=contoso,DC=com" -LDAPFilter "(CN=*)" -Server "contoso.com";

foreach($comp in $computers)

{

    Set-DRComputerKey -SamAccountName $comp.SamAccountName -Domain "contoso.com" -RemoveKey

}

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。