Windows 远程管理(WinRM)使用 HTTP 和 HTTPS 在客户端和服务器计算机之间发送消息。 通常,WinRM 客户端将消息直接发送到 WinRM 服务器。 还可以将 WinRM 客户端配置为使用代理服务器。
有关详细信息,请参阅以下部分:
为 WinRM 2.0 配置代理服务器
WinRM 2.0 支持各种代理配置。 例如,WinRM 支持 HTTP 和 HTTPS 传输以及经过身份验证和未经身份验证的代理服务器的代理。
HTTPS-Based 代理连接
为了提高安全性和基于连接的相关性,HTTPS 应用作传输机制。
如果代理服务器需要身份验证,WinRM 客户端和服务器必须使用 HTTPS。
注意
对代理服务器的身份验证独立于对目标服务器的身份验证。
HTTP-Based 代理连接
如果不需要代理服务器身份验证,则可以使用 HTTP 或 HTTP 进行传输。 但是,通过代理服务器从 WinRM 客户端到 WinRM 服务器的基于 HTTP 的连接可能会有问题。
使用基于 HTTP 的连接时,可能会遇到以下问题:
- 代理服务器不支持基于连接的身份验证,这可能导致针对目标服务器的身份验证失败,并出现访问被拒绝错误。
- 连接到目标服务器和代理服务器需要多个凭据集。
- 基于 HTTP 的代理服务器可能不支持维护关联的基于客户端和基于服务器的连接。 如果代理未将客户端强链接到服务器并维护 TCP/IP 连接,则未经身份验证的客户端可能会获得对数据的访问权限。 此外,缺少连接相关性可能会导致身份验证对服务器失败。
如果 HTTP 必须用作传输,则代理服务器应支持以下配置,以实现更好的 WinRM 响应并防止 WinRM 客户端访问被拒绝失败:
支持 HTTP/1.1。 HTTP/1.1 在客户端和服务器之间映射连接相关性方面更为严格。
协商、Kerberos 和 CredSSP 身份验证的基于连接的身份验证。
请求的身份验证需要在客户端和服务器之间进行多次往返。 身份验证 (WinRM) 服务器向不是 401 响应(未授权)的客户端发送响应后,身份验证的大多数协商完成。 如果 WinRM 服务器向客户端返回不是 401 响应的响应,代理不应关闭连接。
在发送实际数据包数据之前,可以在客户端和服务器之间发送多个请求/响应对。 WinRM 2.0 使用具有加密的 Negotiate 和 Kerberos 身份验证方案,这可以添加额外的往返。 在身份验证完成之前,无法将数据发送到服务器。
WinRM 服务器返回一个 200 级响应,指示身份验证已完成。 基于 HTTP 的代理服务器可能会在从 WinRM 服务器收到 200 级响应后结束基于连接的身份验证相关性并关闭 TCP/IP 连接。 从客户端到服务器的最后往返不包括原始请求数据包。 如果代理服务器关闭连接,服务器将尝试重新对客户端进行身份验证,并且客户端请求可能永远不会发送到服务器。 如果未维护基于连接的相关性,则针对目标服务器的身份验证可能会失败,并出现访问被拒绝错误。
连接持久性。 与代理的客户端 TCP/IP 连接应继续映射到从代理到服务器的同一 TCP/IP 连接。 维护此连接有助于实现更高级别的性能。 如果未维护连接,则必须重新对每个请求进行身份验证,这可能会影响性能。
加密和 WinRM 2.0
WinRM 2.0 使用 Negotiate、Kerberos 和 CredSSP 身份验证方案支持通过 HTTP 加密。 如果 WinRM 服务器支持 HTTP 并通过代理访问,则 WinRM 服务器必须强制加密,不允许未加密的网络流量。
在任何情况下,都不应通过代理服务器发送未加密的 HTTP 请求。 在将数据发送到目标服务器之前必须通过代理服务器时,以下安全问题非常重要:
- 恶意代理服务器可以检查每个请求/响应对,包括凭据。
- 如果未在 WinRM 客户端和代理服务器之间以及代理服务器与目标服务器之间强映射 TCP/IP 连接,则未经授权的客户端可以使用从代理服务器到目标服务器的相同身份验证连接连接到目标服务器。 目标服务器可能允许未经身份验证的客户端访问数据。 如果强制实施加密,则目标服务器会将访问被拒绝的消息发送到未经身份验证的客户端。
使用加密可以缓解这些潜在的安全问题。
为 WinRM 1.1 和更早版本配置代理服务器
如果需要代理才能访问 WinRM 服务器,WinRM 客户端依赖于 Windows HTTP 服务 (WinHTTP) 代理配置。 默认情况下,WinHTTP 未配置为使用代理服务器。 可以使用 ProxyCfg.exe 或 netsh 命令行实用工具来更改 WinHTTP 代理配置。
WinRM 1.1 及更早版本: WinRM 不使用 Internet Explorer 代理设置。