如何在不破坏RDP的情况下禁用TLS 1.0?


48

我们的信用卡处理器最近通知我们,从2016年6月30日起,我们将需要禁用TLS 1.0才能保持PCI兼容性。我试图通过在Windows Server 2008 R2计算机上禁用TLS 1.0来主动,但发现重新启动后我立即无法完全通过远程桌面协议(RDP)连接到它。经过研究,似乎RDP仅支持TLS 1.0(请参阅此处此处),或者至少不清楚如何在TLS 1.1或TLS 1.2上启用RDP。有人知道在不破坏RDP的情况下在Windows Server 2008 R2上禁用TLS 1.0的方法吗?Microsoft是否计划通过TLS 1.1或TLS 1.2支持RDP?

注意:似乎有一种方法可以通过将服务器配置为使用RDP安全层来实现,但是这会禁用网络级身份验证,这似乎是一种交易。

更新1:Microsoft现在已解决此问题。请参阅下面答案以获取相关的服务器更新。

更新2:Microsoft已发布有关SQL Server对PCI DSS 3.1的支持的教程。


我向所有人道歉-我发布的说明仅对Win8 / Server2012 / 2012R2有效...在2008R2 / Win7上不起作用。我测试了2008R2,它不一样。对不起。
瑞安·里斯

并请注意,正如操作提到的,在2012年删除TLS 1.0会强制RDP降级到RDP安全层。
吉姆B

我做了同样的事情,但无法进入服务器(AWS),您是否能找到一种无需物理访问即可进入的方法?
托马斯·潘恩

1
根据此支持文章,Microsoft最近刚刚对SQL 2012和2014进行了修补,以使用TLS 1.1和1.2 support.microsoft.com/zh-cn/kb/3052404
CarlR 2015年

1
@CarlR那篇文章似乎并没有特别提到服务器的RDP。实际上,它似乎特定于数据库连接本身,因为它提到:“此更新为SQL Server 2014SQL Server的Microsoft ODBC驱动程序添加了对传输层安全性(TLS)协议版本1.2的支持。”
k1DBLITZ

Answers:


19

Microsoft发布了针对此问题的补丁程序2015年9月15日

请参阅https://support.microsoft.com/en-us/kb/3080079


谢谢,非常有帮助。安装此更新后,tsconfig.msc屏幕未显示TLS 1.1或TLS 1.2的任何迹象。有谁能够确认您正在通过TLS 1.2使用RDP连接到服务器?我知道我们可以通过在服务器上禁用早期的TLS协议来进行验证。但是,如果它不起作用,则根本无法使用RDP远程访问服务器。
Nirlep

当您选择“协商”选项时,它可能会传达最高级别的信息,可能是TLS 1.2
Nirlep

1
您可以启用schannel日志记录以查看正在使用哪个版本。我的答案中显示了如何执行此操作的链接。
CarlR

我知道这是一个旧线程,但是...我有一个较旧的Windows Server 2008 R2,但我要喘不过气来。我已经安装了KB3080079,现在将禁用TLS 1.0。但是我不确定RDP服务器设置是否应设置为“协商”或“ TLS”。
克里斯·哈灵顿

15

我已经研究了这两天,因为我们必须遵守PCI-DSS 3.1(它要求禁用TLS 1.0)。

我们也不想退回到RDP安全层,这是一个主要的安全问题。

我终于设法找到一些文档来确认RDP支持TLS 1.1和TLS 1.2。该文档隐藏在SChannel日志记录RDP非常详细的规范中

Technet或其他Microsoft网站上完全没有主流文档,因此希望在此处进行文档记录可能对某些人有所帮助。

提供的链接中的相关摘录:

从MSDN链接:

"RDP supports four External Security Protocols: TLS 1.0 ([RFC2246]) TLS 1.1 ([RFC4346])<39>, TLS 1.2 ([RFC5246])<40>"

从RDP规范PDF:

"When Enhanced RDP Security is used, RDP traffic is no longer protected by using the techniques
described in section 5.3. Instead, all security operations (such as encryption and decryption, data
integrity checks, and Server Authentication) are implemented by one of the following External
Security Protocols:
TLS 1.0 (see [RFC2246])
TLS 1.1 (see [RFC4346])
TLS 1.2 (see [RFC5246])
CredSSP (see [MS-CSSP])"

"<39> Section 5.4.5: TLS 1.1 is not supported by Windows NT, Windows 2000 Server, Windows XP,
Windows Server 2003, Windows Vista and Windows Server 2008.
<40> Section 5.4.5:  TLS 1.2 is not supported by Windows NT, Windows 2000 Server, Windows XP,
Windows Server 2003, Windows Vista, and Windows Server 2008"

因此,可以得出结论,根据此文档,您可以在Windows Server 2008 R2上使用TLS 1.1或1.2。

但是,我们的测试证明,当禁用TLS 1.0且RDP安全选项设置为要求TLS 1.0时,此方法不适用于Windows 7 RDP客户端(版本6.3.9600)。

当然,这也是启用TLS 1.1和1.2的功能,而TLS 1.1和1.2在2008R2上默认是关闭的-顺便说一下,我们使用Nartac Software的非常有用的IIS Crypto Tool来做到这一点。

查看此问题时,启用SChannel日志记录以查看打开会话时发生的情况的更多详细信息很有用。

您可以通过将HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ EventLogging键更改为5并重新启动来设置SChannel日志记录

完成此操作后,您可以观察到SChannel事件,该事件显示建立RDP连接时正在使用的TLS版本。启用日志记录后,当RDP客户端尝试在禁用TLS 1.0的Windows 2008 R2上尝试建立连接时,您会看到SChannel错误:

A fatal error occurred while creating an SSL server credential. The internal error state is 10013.

我还测试了在Windows Server 2012和2012 R2上禁用TLS 1.0,可以确认使用Windows 7 RDP Client可以完美地工作。SChannel日志条目显示正在使用TLS 1.2:

An SSL server handshake completed successfully. The negotiated cryptographic parameters are as follows.

   Protocol: TLS 1.2
   CipherSuite: 0xC028
   Exchange strength: 256

我希望这对寻求澄清的人有所帮助。

我将继续寻找如何使RDP在Windows Server 2008 R2中的TLS 1.1和TLS 1.2上工作。

更新:2015年8月5日

我们提出了RDP无法与Microsoft支持(包括重现步骤)一起用于Server 2008 R2的问题。

经过几周的来回移动,我们终于在今天从支持团队收到了一个电话,以确认他们确实可以复制它,现在将其归类为错误。我们将在2015年10月发布更新补丁。一旦我收到知识库文章或其他详细信息,我就会将其添加到这篇文章中。

希望那些坚持使用Windows Server 2008 R2的用户至少可以在补丁发布后的2016年6月截止日期之前解决此问题。

更新:2015年9月19日

Microsoft终于在这里发布了有关此内容的kb支持文章,我可以确认它可以正常工作。


您的上一次更新状态为“我已经尝试过Windows 7和Windows 2012 R2,但它不起作用;它仍然使用TLS1连接。” 您曾经能够使它正常工作吗?
Doug S'7

有人发表了意见,我刚刚删除了它,因为它现在对TLS1.2来说对我们来说很好用。
CarlR '16

嗯 即使进行了这些更改/更新以及我能找到的其他所有内容,我也无法使它正常工作。
Doug

SChannel日志可在系统日志中找到。
Ivan Chau

8

如文档所建议的那样,改用IPsec:“首先设置一个高度加密的会话(例如IPsec隧道),然后在安全隧道内通过SSL发送数据”

在为RDP配置TLS上执行此操作的主要原因是,可以轻松审核防火墙策略的合规性(对比证明大量注册表更改均合规),并且IPsec在Windows中非常容易配置。

如果您恰好需要完全符合套件B的要求,则使用tls 1.0的IPSEC是适用于适当证书长度的唯一方法


我还将提到通过SSH进行隧道传输。(当然,需要Windows的SSH服务器软件。)
克里斯·瑞

IPsec不是SSH
Jim B

3
是的,我并不是要暗示它们是相同的。而是,SSH是用于建立到服务器的安全隧道的替​​代方法。
克里斯·瑞

@JimB对不起,您是对的。
瑞安·里斯

1
@RyanRies Np,我仍在挠头,还有12个其他人将在不知情的情况下投票支持它。
吉姆B

8

这不是问题的答案,而是子问题“如何还原对已禁用TLS 1.0且没有物理访问权限的虚拟机的远程访问?”。

我使用IISCrypto禁用了TLS 1.0,它对RDP设置为TLS会停止工作的副作用给出了有用的警告。所以我签入了:

Admin Tools\Remote Desktop Services\Remote Desktop Session Host Configuration, RDP-Tcp, General Tab, Security Layer

并且我的安全级别设置为“协商”。我认为这意味着如果TLS不可用,它将正常降级为RDP安全性。

但是,不,谈判不是那样的。在禁用TLS 1.0之前,必须将“安全级别”设置为“ RDP安全”,而不是“协商”。

因此,我失去了远程连接到我的AWS实例的能力!

要重新连接,我使用了另一个AWS实例。

  1. 我更新了SecurityGroup,以允许从该计算机到“丢失的”计算机的防火墙连接。
  2. 我在DOS中用管理员用户和密码打开了管理网络共享:

net use \\lost_machine_ip\c$

  1. 然后,我打开Regedit,然后在“文件”菜单中选择“连接网络注册表”,然后输入“丢失”服务器的IP。您应该看到远程服务器注册表。去 :

\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\

并将其值设置为SecurityLayer0(0是RDP安全性)。

然后,您将能够进行远程连接,并在需要时在IISCrypto中重新启用TLS 1.0。


谢谢,这为我节省了很多重建服务器的工作。不确定如何更改安全组以允许计算机之间的连接-我打开了对“丢失的”计算机的所有访问权,访问了第二台计算机的IP地址,并且可以正常工作。有没有更好的办法?
Gullbyrd

@Gullbyrd,或者将ALL TCP设置为两台计算机所属的安全组。做同样的事情。
Dave Beer

3

您将需要在Windows 7计算机和Windows Server 2008 R2服务器上安装RDP 8.0,然后在本地计算机策略或组策略上启用RDP 8.0。

这是RDP 8.0的Microsoft KB。 https://support.microsoft.com/zh-cn/kb/2592687

完成此操作后,您应该能够按照此technet文章中的说明编辑注册表,从而在计算机和服务器上禁用TLS 1.0。 https://technet.microsoft.com/zh-CN/library/dn786418.aspx

在安装RDP 8.0之后,您也可以安装RDP 8.1,但是在安装RDP 8.1之前必须先安装RDP 8.0。RDP 8.0包含客户端和服务器端协议组件,但是RDP 8.1仅包含客户端。RDP 8.1的Microsoft KB为KB2830477。

我在Windows 7工作站之一上进行了这些更改,并测试了RDP连接,并启用了“要求对远程(RDP)连接使用特定的安全层”组策略设置,并将其设置为“ SSL(TLS 1.0)”以确保它不会退回到RDP加密。

2015年6月19日更新:

我终于有机会在我们的一台Windows Server 2008 R2服务器上对此进行了测试,它肯定会中断与该服务器的RDP连接。似乎RDP 8.0服务器端组件仅安装在Windows 7计算机上,而没有安装在Windows Server 2008 R2服务器上。


所引用的支持知识库文章当前不起作用(重定向循环),但是您可以使用Google缓存版本来查看其内容。有趣的是,本文中仍然绝对没有提到TLS 1.1或1.2支持,但是我想这是任何人都会关注这个问题的主要原因!还有很多警告,包括除非本地管理员特别添加到“远程停止用户”组中,否则他们将无法登录。请注意是否要尝试此操作。
CarlR 2015年

尝试连接到2008服务器时,是否在服务器上打开了UDP端口3389?
Elvar 2015年

我曾经尝试暂时完全禁用服务器2008 R2服务器上的Windows防火墙,但是我仍然无法使用在服务器上禁用TLS 1.0的RDP连接到它。
肯尼·R

3

如有关如何禁用TLS 1.0而不破坏服务器2012 R2上的RemoteApp的文章所述,但为了不监视该链接的人的利益,此处重新发布:

大约一年后,我终于找到了一个可行的解决方案,可以在不破坏RDP和远程桌面服务连接并启动RemoteApps的情况下禁用TLS 1.0 / 1.1:

运行IISCrypto并禁用TLS 1.0,TLS 1.1和所有错误密码。

在运行网关角色的远程桌面服务服务器上,打开“本地安全策略”,然后导航到“安全选项-系统加密”:使用FIPS兼容算法进行加密,散列和签名。将安全设置更改为“已启用”。重新启动以使更改生效。

请注意,在某些情况下(尤其是在Server 2012 R2上使用自签名证书时),可能需要将“安全策略”选项“网络安全:LAN Manager身份验证级别”设置为“仅发送NTLMv2响应”。


2

如果有人正在寻找有关它的信息,请只是对此的更新。对于我的Windows 7 64位机器,我必须安装KB2574819(第一个)和KB2592687(第二个),Windows 7必须先安装SP1,然后再安装这2个pkg。如果像我一样在安装SP1时遇到问题,则必须先卸载KB958830,然后再安装SP1。

对于Windows Server 2008 R2,必须安装KB3080079。完成此操作并为安全通信设置了所有适当的设置后,它将使用TLS 1.2。您可以通过使用Wireshark来捕获两个设备之间的通信来进行确认。



0

现有答案未涵盖的一种情况:通过RDP网关连接的Windows 7客户端在连接到网关时仍将使用TLS 1.0,如果该网关不支持TLS 1.0,即使应用了KB3080079,该网关也会失败如本TechNet论坛主题中所述

要使用TLS 1.2通过RDP网关进行连接,请确保已安装KB3140245并添加以下注册表项(保存在.reg扩展名为import 的文件中):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

KB3140245中所述WINHTTP_OPTION_SECURE_PROTOCOLS默认情况下,它将覆盖以使用TLS 1.2(并且仅使用TLS 1.2)。因此请注意,它不仅会影响RDP客户端。

(注意:如果需要向后兼容,dword:00000800可以分别更改为TLS 1.1和1.0 dword:00000A00dword:00000A80包含TLS 1.1和1.0)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.