RDS最核心的角色是RD虛擬化主機和RD會話主機。對于前者來說,主要實現虛擬桌面服務,對于后者來說,主要實現應用程序虛擬化。當提供了后臺核心服務后,就需要使用RD連接代理來管理用戶訪問進程。例如,當使用多臺服務器部署了會話主機池,在其中提供了多個虛擬程序,當客戶端訪問目標虛擬程序時,會隨機連接到某臺會話主機上。當該客戶端因為某些原因異常中斷訪問,再次進行連接時,RD連接代理可以自動幫助恢復之前失去的連接。RD Web訪問角色為用戶提供了訪問接口,RD網關可以將RDS服務發布到Internet上,RD授權負責授權管理。打開服務器管理器,在左側選擇“遠程桌面服務→概述”項,可以清晰地看到RDS服務的組成角色(如圖 1)。

圖1 RDS服務的組成角色
這里就先以在公網上發布Remote APP為例進行說明,在企業內網中存在名為Rserer1的服務器,作為RD會話主機, IP為192.168.1.10。 名 為Rserver2的服務器為連接代理, IP為192.168.1.20。名 為Rserver3的 服 務器 作 為RD Web主 機, IP為192.168.1.30。 名 為“Rdgate”的主機作為RD網關服務器, IP為192.168.1.31。這些主機都加入到域環境,DC的 IP為192.168.1.2,并安裝了CA角色。
在域中任意主機(例如“Rserver1”)上 打開 服務器管理器,在“所有服務器”項的右鍵菜單上點擊“添加服務器”,在“Active Directory”面板中的“名稱”欄中輸入“rserver”,找到并導 入 Rserver2、Rserver3、rdgate主機添加進來。之后點擊菜單“管理→添加角色和功能”項,可以針對該服務器組進行操作。
在向導界面中選擇“遠程桌面服務安裝”,點擊下一步,選擇“標準部署→基于會話的桌面部署”,在下一步窗口中按照提示,依次設置Rserver2主機作為連接代理服務器,Rserver3主機為RD Web訪問服務器,Rserver1主機為RD會話主機。選擇“需要時自動重新啟動目標服務器”項,點擊部署按鈕,執行具體的部署操作。
在服務器管理器左側選擇“遠程桌面服務→概述”項,點擊“創建會話集合”,在向導界面中輸入集合的名稱(例如“APP_Pool”),之后選擇名為Rserver1的會話主機,在下一步窗口中設置用戶組,即哪些用戶可以訪問該集合,默認為所有的域賬戶。之后設置用戶配置文件路徑和容量,點擊創建按鈕,創建該集合。有了集合之后,就可以向其中添加應用程序。在左側選擇“集合→APP_Pool”,在“RemoteApp程序”列表右側點擊“任務→發布RemoteApp程序”項,選擇單個或者多個目標程序,將其發布出去。
當用戶訪問“https://rserver3.xxx.com/reweb”網址,因為沒有配置證書,所以會顯示“此網站的安裝證書存在問題”的警告,點擊“繼續瀏覽此網站”項,輸入合適的域賬戶名和密碼,在“RemoteApp和桌面”欄中雙擊目標程序,點擊“連接”,就可以運行該程序。對于域中的主機來說,即使不進行任何配置,因為受到域架構的信任,可以實現SSO單點身份驗證功能,即輸入域賬戶名和密碼,就可以順利訪問RD會話主機。但是,工作組中的客戶端不受域架構信任,訪問RD會話主機時,需要在RDWeb主機上進行身份驗證,還要到RD代理主機上進行身份驗證。
為了針對RD連接代理實現SSO單一登錄功能,同時為了實現安全訪問RDS服務,就需要使用證書加以應對。為了提高證書的使用效率,可以將RD Web、RD代理服務、RD網關等主機的多個域名綁定到單張證書上,實現多域名證書功能。在域中任意主機(例如Rserver1)上運行“gpupdate /force”命令,使其信任CA證書頒發機構。運行“mmc”程序,在控制臺中點擊“文件→添加/刪除管理單元”項,選擇“證書”,點擊“添加”,選擇“計算機賬戶”將其導入。
在控制臺左側選擇“證書→高級操作→創建自定義請求→Active Directory注冊策略→下一步”按鈕,在自定義請求窗口中的“模板”列表中選擇“Web服務器”,在下一步窗口中選擇“Web服務器”,在詳細信息欄中點擊“屬性”,在打開窗口中的“使用者”面板中的“使用者名稱”列表中選擇“公用名”項,在“值”欄中輸入合適的名稱,例如“app.xxx.com”。點擊“添加”將其添加到列表中。在“類型”列表中選擇“DNS”項,在“值”欄中分別輸入并添加以上域名,例如rserver1.xxx.com,rserver3.xxx.com,rdgate.xxx.com等。在“常規”面板中輸入名稱,在“私鑰”面板中的“密鑰選項”欄中選擇“使私鑰可以導出”和“允許私鑰存檔”項:點擊確定按鈕保存配置。在下一步窗口中點擊瀏覽按鈕,導出后綴為“.req”的請求文件。
點擊完成按鈕,返回控制臺。使用記事本打開上述請求文件,復制內容,在瀏覽器中訪問“https://192.168.1.2/certsrv”,在彈出頁面中點擊“申請證書→高級證書申請”鏈接,點擊“使用base64編碼的CMC或PKCS#10文件提交一個證書,或使用base64編碼的PKCS#7續訂證書申請”鏈接,在“保存的申請”欄中粘貼申請文件內容,在“證書模板”列表中選擇所需的模板,例如Web服務器。點擊“提交”按鈕,在證書已頒發頁面中點擊“下載證書”鏈接,將后綴為“.cer”的證書文件下載到本地。
在控制臺左側的“證書→個人”項的右鍵菜單上點擊“所有任務→導入”,選擇上述證書文件,點擊完成將證書導入,該步驟其實就是讓公鑰和私鑰建立關聯。選擇“證書→個人”,在右側選擇導入的證書,在右鍵菜單上點擊“所有任務→導出”項,在向導界面中選擇“是,導出私鑰”項,在安全窗口中選擇“密碼”項,輸入密碼后,將其導出為獨立的PFX文件,例如“zhengshu.pfx”。這樣,就取得了包含多域名的證書。在Rserver3等主機上執 行“gupdate /force”命令,使其信任根證書頒發機構。如果從公網CA頒發機構獲取的證書,無需執行該操作。
在Rserver1上打開服務器管理器,在左側選擇“遠程桌面服務→集合”,在右上角點擊“任務→編輯部署屬性”項,在部署屬性窗口左側點擊“證書”項,在管理證書窗口中的“角色服務”列表中選擇“RD Web訪問”項,點擊“選擇現有的證書→瀏覽”,選擇上述“zhengshu.pfx”文件,輸入對應的密碼,選擇“允許向目標計算機上受信任的根證書頒發機構證書存儲中添加證書”項,將該證書導入到本地。點擊“確定”保存配置,返回上一級窗口點擊應用按鈕,可以看到RD Web訪問的狀態顯示為“成功”,表示證書配置完成。按照同樣的方法,分別選擇“RD連接代理-啟用單一登錄”和“RD連接代理-正在發布”角色,分別配置證書。
當在客戶端訪問“https://rserver3.xxx.com/reweb” 網 址 的 話,就會發現關于證書的警告消失了。對于工作組客戶端來說,需要訪問“http://192.168.1.2/certsrv”網址,依次點擊“下載CA證書、證書鏈或CRL”和“下載CA證書”鏈接,下載后綴為“.cer”的證書。在該證書文件的右鍵菜單上點擊“安裝”項,在向導界面中選擇“將所有的證書放入下列存儲”項,點擊瀏覽按鈕選擇“受信任的根證書頒發機構”項。點擊下一步完成證書的安裝操作。之后就可以順利訪問RD Web服務器。當工作組中的客戶端訪問時,因為具有了SSO認證功能,可以避免多次身份驗證的繁瑣。
如果希望將RDS服務發布到Internet上,必須依靠RD網關的支持。在上述概述窗口中選擇“RD網關”,在選擇服務器窗口中選擇“rdgate”服務器,將其添加進來。點擊下一步,在“SSL證書名稱”欄中輸入FQDN名稱,例如“rdgate.xxx.ocm”。點擊“添加”即可在名為RDgate的主機上安裝RD網關角色。之后在上述部署屬性窗口左側選擇“證書”,在右側的“角色服務”列表中選擇“RD網關”,點擊“選擇已有的證書”按鈕,按照上述方法配置證書。
RD網關實際上充當反向代理的作用,當外網用戶通過防火墻訪問內網中的RD Web主機時,RD Web主機返回操作頁面給客戶端,客戶端再通過內網中的RD網關訪問所需資源。RD網關的重要作用還在于可以屏蔽內網中的服務器,讓RD會話主機之類的服務器無需面對公網用戶,大大提高了內網的安全性。因為客戶端和RD Web以及RD網關之間都是通過TCP 443端口建立連接,因此需要在防火墻提供兩個IP,分別映射到RD Web主機和RD網關上。
這里為了便于說明,使用一臺Windows Server 2008服務器扮演防火墻角色,安裝路由和遠程訪問服務,配置兩塊網卡,分別連接內網和外網,在外網連接上綁定兩個IP,例如100.61.199.1和100.61.199.2,分 別 對應Rserver3.xxx.com和Rdgate.xxx.com域名。這兩個域名需要在公網上注冊,即客戶端可以從Internet上進行解析。
在路由和遠程訪問窗口左側選擇本機名,在右鍵菜單上點擊“配置并啟用路由和遠程訪問”項,在向導界面中選擇“網絡地址轉換”項,點擊下一步,選擇“使用此公共端口連接到Internet”項,在列表中選擇外部鏈接,點擊完成啟動路由和遠程訪問服務。在左側選擇“IPv4→NAT”,在右側選擇外部連接接口,在屬性窗口的“地址池”面板中點擊“添加”,輸入IP范圍為從100.61.199.1到100.61.199.2。
在“服務和端口”面板中點擊“添加”按鈕,在打開窗口中輸入服務的描述信息,選擇“在此地址池項”項,輸 入“100.61.199.1”,傳輸端口設置為443,專用地址為192.168.1.30,即RD Web主機的地址,傳輸端口為443,點擊確定就可以將“100.61.199.1”映射到RD Web主機上。同理,再添加一個服務,將“100.61.199.2”映射到RD網關主機上。
為了便于測試,可以在客戶端上打開“C:WindowsSystem32Driversetc”目錄,編 輯 其 中 的“hosts”文 件,在 其 中 添 加“100.61.199.1 rserver3.xxx.com”,“100.61.199.2 rdgate.xxx.com” 兩 行,來進行最簡單的域名解析。這樣,當外網用戶訪問“https://rserver3.xxx.com/reweb”網址,就可以訪問內網中的RD Web服務器來使用RemoteApp程序。
實際上,當使用遠程桌面時,可以通過RD網關轉接,例如在客戶端運行“mstsc.exe”程 序,在遠程桌面連接窗口底部點擊“顯示選項”項,在“常規”面板中的“計算機”欄中輸入RD會話主機名,例如“rserver1.xxx.com”,在“高級”面板中點擊“設置”按鈕,在“連接設置”欄中選擇“使用這些RD網關服務器設置”項,輸入RD網關服務器名,例如Rdgate.xxx.com。在“登錄方法”列表中選擇“詢問密碼(NTLM)”項,點擊確定按鈕,就可以通過RD網關連接到目標服務器上。這樣,就避免了將TCP 3389暴露在公網上,提高了安全性。