Windows远程管理,即Windows RM(Windows Remote Management),是一种基于SOAP(Simple Object Access Protocal,简单对象访问协议)协议的可通过防火墙的系统功能。
众所周知,SOAP采用了已广泛使用的两个协议:HTTP 和XML,HTTP用于实现 SOAP 的RPC 风格的传输, 而XML 是它的编码模式。HTTP与RPC 的协议很相似,其简单、配置广泛,并且对防火墙比其他协议更容易发挥作用。SOAP技术有助于实现大量异构程序和平台之间的互操作性,从而使存在的应用能够被广泛的用户所访问。Windows RM支持PowerShell Remoting,因而可以在远设安全运行cmdlets及其脚本,并将结果返回到原来的PowerShell控制台。那么,为什么需要为其生成HTTP Listener呢?
在活动目录环境下,Kerberos协议能够确认远设可信度,但Kerberos协议是一种基于可信第三方的身份认证协议,具有口令猜测攻击、重放攻击等缺陷,而且,在工作组中将远设加入TrustedHosts名单时安全级别其实并不算高,因而必须为Windows RM提供确保安全的HTTPS Listener。Windows Server 2012及后续版本,系统默认支持PowerShell Remoting,否则需执行命令Enable-PSRemoting将其激活。
在准备生成HTTPS Windows RM Listener之前,我们不妨以Windows Server 2012 R2为例,看一下当前Listeners配置情况,为此在PowerShell控制台输入命令:
Get-ChildItemWSMan:Localhostlistener
PKI(Public Key Infrastruc ture)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI框架管理密钥和证书可以建立一个安全的网络环境。
PKI主要包括四个部分:X.509格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA操作协议;CA管理协议以及CA政策制定。PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封和双重数字签名等。
假设当前系统还没 有PKI(Public Key Infrastructure),那么此时需要生成一个自认证,依此进行HTTPS Listener设置,命令格式如下:
$cert=New-SelfSigned Certificate-CertstoreLocation Cert:Local MachineMy -DnsName contosodc1
如 图1所 示,在上述命令行中,“contosodc1”指 的是正在生成Windows RM Listener所在的服务器名称,认证内容需要导出到文件内,并将该文件安装到连接侦听者所在的设备上。
图1 生成自认证的命令行
图2 运行cmdlet命令Import-Certificate
具体命令为:Export-Certificate -Cert$cert -FilePath C: empcert
现在对所有IP地址的HTTPS Windows RM Listener进行配置,命令为:
New-Item-PathWSMan:LocalHostListener-Transport HTTPS-Address *-CertificateThumbPrint$cert.Thumbprint –Force
之后,再次运行cmdlet命令Get-Item,可看到成功生成了Listener:
Get-ChildItemWSMan:Localhostlistener
对新生成的Listener需将其绑定到Windows Firewall rule,命令如下:
New-NetFirewallRule-DisplayName 'Windows Remote Management (HTTPSIn)' -Name 'Windows Remote Management(HTTPS-In)' -Profile Any-LocalPort 5986 -Protocol TCP
现在,需将自认证导入到将连接Windows RM Listener的所有设备上账户的 TRCA(Trusted Root Certification Authorities) 内,只要从PowerShell控制台运行cmdlet命 令Import-Certificate即可(如图2所示)。
然后安装自认证文件,命令如下:
Import-Certificate-Filepath 'C: empcert'-Cert Store Location'Cert:LocalMachineRoot'
最后,通 过SSL建 立PowerShell远程会话,命令如下:
Enter-PSSession-ComputerName contosodc1-Configuration Name Helpdesk -UseSSL
在上述命令中,“contosodc1”指设备名,如用PowerShell会话默认配置,则可省略命令参数–ConfigurationName。