为什么 Active Directory 用户帐户不自动支持 Kerberos AES 身份验证?

Rei*_*kin 12 encryption active-directory kerberos windows-server-2012-r2

我正在使用 Windows Server 2012 R2 上的测试域。我在尽可能高的功能级别上运行,并且在我的小型测试环境中没有向后兼容性问题。但是,我意识到尽管我支持Kerberos AES 身份验证,但默认情况下没有为任何用户启用它。我必须实际进入用户的属性并勾选“此帐户支持 Kerberos AES 128 位加密”和/或“此帐户支持 Kerberos AES 256 位加密”以启用它。

(我第一次意识到这一点是在向“受保护的用户”组添加测试帐户时,该组将策略设置为需要 AES。之后,我所有的网络登录都开始失败,直到我选中这些框。)

我认为默认情况下可能会禁用此功能以确保某些系统的向后兼容性,但我找不到为所有用户启用此功能的方法,甚至无法解释当前行为。

有任何想法吗?

Mat*_*sen 12

为用户检查 Kerberos AES 复选框会导致预 Vista 客户端上的身份验证失败。这可能是默认情况下未设置的原因。

Kerberos AES 支持复选框对应于名为的属性中设置的值 msDS-SupportedEncryptionTypes

要为多个用户更改此设置,您可以使用 PowerShell 和 ActiveDirectory 模块:

# The numerical values for Kerberos AES encryption types to support
$AES128 = 0x8
$AES256 = 0x10

# Fetch all users from an OU with their current support encryption types attribute
$Users = Get-ADUser -Filter * -SearchBase "OU=SecureUsers,OU=Users,DC=domain,DC=tld" -Properties "msDS-SupportedEncryptionTypes"
foreach($User in $Users)
{
    # If none are currently supported, enable AES256
    $encTypes = $User."msDS-SupportedEncryptionType"
    if(($encTypes -band $AES128) -ne $AES128 -and ($encTypes -band $AES256) -ne $AES256)
    {
        Set-ADUser $User -Replace @{"msDS-SupportedEncryptionTypes"=($encTypes -bor $AES256)}
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过修改 AD 架构将其设为新用户的默认设置。如果您想要更详细的答案,您可能应该将其作为一个单独的问题提出。 (2认同)
  • 由于 Vista 之前的客户端已经失去支持很多年了,如果 Microsoft 最终为所有缺少 msDS-SupportedEncryptionType 属性的用户默认启用 AES 加密类型,那就太好了。 (2认同)