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。