Mik*_*ike 52 ssl rdp pci-dss tls windows-server-2008-r2
我们的信用卡处理商最近通知我们,自 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:微软现在已经解决了这个问题。有关相关服务器更新,请参阅下面的答案。
更新 2:Microsoft 发布了有关SQL Server 支持 PCI DSS 3.1的教程。
小智 19
我已经研究了几天,因为我们必须遵守 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>"
Run Code Online (Sandbox Code Playgroud)
从 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"
Run Code Online (Sandbox Code Playgroud)
因此,根据此文档,可以得出结论,您可以在 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 的,它们在 2008R2 上默认关闭 - 顺便说一下,我们使用来自 Nartac Software的非常有用的IIS 加密工具来完成此操作。
在查看此问题时,启用 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.
Run Code Online (Sandbox Code Playgroud)
我还在 Windows Server 2012 和 2012 R2 上测试了禁用 TLS 1.0,我可以确认使用 Windows 7 RDP 客户端可以完美运行。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
Run Code Online (Sandbox Code Playgroud)
我希望这对正在寻求澄清的人有所帮助。
我将继续寻找如何让 RDP 在 Windows Server 2008 R2 中通过 TLS 1.1 和 TLS 1.2 工作。
更新:2015-AUG-05
我们提出了 RDP 无法与 Microsoft 支持的 Server 2008 R2 一起使用的问题,包括重现步骤。
经过几个星期的反复,我们今天终于接到了支持团队的电话,确认他们确实可以重现它,现在将其归类为错误。将发布更新补丁,目前预计在 2015 年 10 月发布。一旦我有知识库文章或其他详细信息,我会将它们添加到这篇文章中。
希望那些坚持使用 Windows Server 2008 R2 的人至少可以在补丁发布后的 2016 年 6 月截止日期之前解决这个问题。
更新:2015 年 9 月 19 日
微软终于在这里发布了一篇关于这个的知识库支持文章,我可以确认它可以正常工作。
改用 IPsec,正如文档所建议的:“首先设置一个高度加密的会话(例如 IPsec 隧道),然后在安全隧道内通过 SSL 发送数据”
这样做而不是为 RDP 配置 TLS 的主要原因是防火墙策略很容易审核合规性(而不是证明大量注册表更改是合规的)并且 IPsec 在 Windows 中很容易配置。
如果您碰巧需要完整套件 B 合规性 IPSEC with tls 1.0 是适用于适当证书长度的唯一方法
小智 9
这不是问题的答案,而是对子问题“如何恢复对已禁用 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
Run Code Online (Sandbox Code Playgroud)
并且我的安全级别设置为“协商”。我认为这意味着如果 TLS 不可用,它会优雅地降级到 RDP 安全性。
但是不,谈判不是那样工作的。在禁用 TLS 1.0 之前,您必须将安全级别设置为 RDP 安全,而不是协商。
所以我失去了远程连接到我的 AWS 实例的能力!
为了重新连接,我使用了另一个 AWS 实例。
net use \\lost_machine_ip\c$
\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\
并将其值设置为SecurityLayer0(0 是 RDP 安全性)。
然后,您将能够远程连接,并在需要时在 IISCrypto 中重新启用 TLS 1.0。
| 归档时间: |
|
| 查看次数: |
196980 次 |
| 最近记录: |