使用多个远程桌面 (RD) 许可证服务器时,在为 CVE-2024-38231 应用安全更新后,请确保服务器可以相互正确通信。 在以下任一方案中,RD 许可证服务器可以相互通信:
- 许可证返回到未颁发许可证的 RD 许可证服务器
- 从 Windows Server 2008 R2 开始放弃的自动许可证服务器发现机制仍在远程桌面部署中使用
已加入工作组的部署
已加入工作组的远程桌面部署适用于小型部署。 我们不建议在已加入工作组的远程桌面部署中使用多个 RD 许可证服务器。
重要
在将来的 Windows 版本中,可能会删除对工作组中的多个许可证服务器的支持。
要在同一工作组中使用多个 RD 许可证服务器,请确保每个许可证服务器可以相互进行身份验证,并且它们相互识别为许可证服务器。
确保对许可证服务器进行身份验证
例如,我们考虑两个名为 LICSVR1 和 LICSVR2 的许可证服务器。
要确保 LICSVR1 可以向 LICSVR2 进行身份验证,需要确定 LICSVR1 连接到 LICSVR2 所使用的帐户。 我们建议通过以下步骤在 LICSVR2 上创建专用用户帐户:
使用管理员帐户连接到 LICSVR2。 如果远程执行此操作,则当目标计算机无法联系 RD 许可证服务器时,你可能需要使用 mstsc.exe /admin 命令启动远程桌面连接应用程序。
连接后,右键单击开始,选择运行,然后输入 lusrmgr.msc。 然后按 ENTER。
在左窗格中,选择用户。
打开操作菜单,然后选择新建用户...。
为用户选择用户名和唯一的强密码。 然后,确认该密码。
取消选中“用户下次登录时须更改密码”复选框。
选择创建。
然后,在 LICSVR1 上添加用户及其凭据,以便 NT AUTHORITY\NETWORK SERVICE 帐户可以使用以下步骤对 LICSVR2 进行身份验证:
连接到 LICSVR1。 如果远程执行此操作,则当目标计算机无法联系 RD 许可证服务器时,你可能需要使用 mstsc.exe /admin 命令启动远程桌面连接应用程序。
以 NT AUTHORITY\NETWORK SERVICE 身份启动命令提示符。 你可以通过以管理员身份运行以下命令,使用 Sysinternals Utilities 中的 PsExec 执行此操作:
psexec.exe -i -u "NT AUTHORITY\NETWORK SERVICE" cmd.exe
然后,使用以下命令将用户名和密码添加到主机:
cmdkey /add:LICSVR2 /user:LICSVR2\<USERNAME> /pass
其中 <USERNAME> 是你确定 LICSVR1 向 LICSVR2 进行身份验证所使用的用户的名称。
当系统提示输入密码时,请输入该用户的密码。
LICSVR1 现在应该能够向 LICSVR2 进行身份验证。 为了让 LICSVR2 将 LICSVR1 识别为另一个许可证服务器,你需要将用户添加到 LICSV2 上的本地组,并使用 RD 许可服务注册该本地组。 在 LICSVR2 上以管理员身份运行的 PowerShell 中,使用以下命令:
New-LocalGroup -Name <GROUP-NAME>
Add-LocalGroupMember -Group <GROUP-NAME> -Member "LICSVR2\<USERNAME>"
其中 <GROUP-NAME> 是组的所需名称,<USERNAME> 是在 LICSVR1 中注册其凭据的用户的名称。
要在注册表中向 RD 许可服务注册该本地组,请运行以下 PowerShell 命令:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\TermServLicensing\Parameters" -Name " WorkgroupLicenseServerAccountsGroup" -Value "LICSVR2\<GROUP-NAME>" -Type String
已加入域的部署
为了使加入域的 RD 许可证服务器能够正确地相互通信,它们需要知道通信来自另一个 RD 许可证服务器。 这可以通过本部分所述的三种方式之一来实现。
域管理员可以使用 Win32_TSLicenseServer 类的 PublishLS WMI 方法将每个 RD 许可证服务器发布到 Active Directory 域服务 (AD DS)。 这会在 AD DS 中创建站点级记录,该记录可用于授权 RD 许可证服务器之间的通信。 在 PowerShell 中以许可证服务器上的域管理员的身份运行以下命令:
Invoke-WmiMethod -Class Win32_TSLicenseServer -Name PublishLS
或者,可以通过配置使用指定的远程桌面许可证服务器组策略,将每个 RD 许可证服务器配置为授权来自特定 RD 许可证服务器组的通信。 许可证远程桌面会话主机中更详细地描述了该组策略。 也可以设置以下注册表值来指定许可证服务器。 在 PowerShell 中以 RD 许可证服务器上的管理员的身份运行以下命令:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\TermServLicensing\Parameters" -Name " SpecifiedLicenseServers" -Value "<LicSrv1DnsHostName>","<LicSrv2DnsHostName>" -Type MultiString
其中 <LicSrv1DnsHostName> 和 <LicSrv1DnsHostName> 是其他 RD 许可证服务器的 DNS 主机名。
由于历史原因,在 Active Directory 域控制器上运行的 RD 许可服务不需要额外的配置。
重要
强烈建议不要在域控制器上安装 RD 许可服务器。 如果使用此方法,需自行承担风险。 根据 Active Directory 安全最佳实践,域控制器应被视为关键基础结构组件,并应尽量减少其运行的不相关软件的数量。 有关详细信息,请参阅保护域控制器。