Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

群組原則自動啟用遠端桌面 (RDP) 並穿透防火牆:VBS 腳本 + 啟動腳本一鍵部署

編輯:Windows XP 系統介紹

企業管理數百/數千台終端/伺服器時,**手動逐台開啟遠端桌面 (RDP) 並配置防火牆例外** 不僅低效,且極易遺漏、配置漂移。Windows 群組原則結合 **WMI/VBS 腳本** 可在電腦啟動階段 **以 SYSTEM 權限自動啟用 RDP、開放 TCP 3389 防火牆埠**,實現「推送即生效、無需互動、狀態收斂」。本文提供完整腳本、GPO 部署步驟、驗證方法、安全性硬化建議,助你構建自動化遠端管理基線。

核心腳本:`Enable-RDP.vbs` (以系統帳號執行,需啟動腳本部署)

' Enable-RDP.vbs
' 功能:啟用遠端桌面連線 + 開放 Windows 防火牆 TCP 3389
' 部署:電腦設定 → 原則 → Windows 設定 → 指令碼 → 啟動 → 新增此腳本

Option Explicit
On Error Resume Next

Const ENABLE_CONNECTIONS = 1

Dim strComputer, objWMIService, colItems, objItem, errResult
Dim oShell

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

' 1. 啟用 Terminal Services 連線 (RDP)
Set colItems = objWMIService.ExecQuery("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
    errResult = objItem.SetAllowTSConnections(ENABLE_CONNECTIONS)
    ' errResult = 0 成功,其他參考 MSDN
Next

' 2. 開放 Windows 防火牆 TCP 3389 (適用 Windows Server 2003 / XP / Server 2008 / Vista / 7 / 2008 R2)
Set oShell = CreateObject("WScript.Shell")
' netsh firewall add portopening TCP 3389 "Remote Desktop" (舊版語法,相容性最廣)
oShell.Run "cmd.exe /c netsh firewall add portopening tcp 3389 RemoteDesktop", 0, True
' 新版語法 (Win 7/Server 2008 R2+) 可改用:
' oShell.Run "cmd.exe /c netsh advfirewall firewall add rule name=""Remote Desktop"" dir=in action=allow protocol=TCP localport=3389", 0, True

Set oShell = Nothing
Set objWMIService = Nothing

GPO 部署步驟 (網域環境)

  1. 建立 OU 並歸組目標電腦: 「Active Directory 使用者與電腦」→ 右鍵網域/OU →「新增」→「組織單位」→ 命名 (如 `ManagedWorkstations`) → 將需自動啟用 RDP 的電腦帳號移入該 OU。
  2. 建立並連結 GPO: 「群組原則管理」→ 右鍵該 OU →「在此建立 GPO 並連結」→ 命名 (如 `Auto-Enable-RDP-Firewall`)。
  3. 編輯 GPO → 放入啟動腳本:
    • 展開:**電腦設定 → 原則 → Windows 設定 → 指令碼 (啟動/關機)**。
    • 雙擊「啟動」→「顯示檔案」→ 將 `Enable-RDP.vbs` 複製至開啟的資料夾 (系統自動映射至 `SYSVOL\Domain\Policies\{GPO-GUID}\Machine\Scripts\Startup\`)。
    • 返回「啟動屬性」→「新增」→「瀏覽」選取 `Enable-RDP.vbs` → 確定 → 確定。
  4. 確保目標電腦套用: 目標電腦執行 `gpupdate /force` → **重新啟動** (啟動腳本僅在啟動時執行)。

驗證成效

  1. 目標電腦重啟後,本機執行 `reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections` → 應顯示 `0x0` (0=啟用)。
  2. 本機 `netstat -an | findstr :3389` → 應顯示 `TCP 0.0.0.0:3389 LISTENING`。
  3. 遠端電腦 `mstsc` 連線測試 → 成功登入。
  4. 防火牆規則檢視:`wf.msc` →「輸入規則」→ 找到「Remote Desktop」/「遠端桌面」→ 狀態「已啟用」、設定檔「域/專用/公用」按需勾選。

安全性硬化:自動啟用 ≠ 裸奔

  • SYSVOL 權限鎖定 (僅 Domain Admins 可寫)、啟用 GPO 簽名/驗證、定期稽核啟動腳本內容
  • 風險 對策 (建議同步透過 GPO 部署)
    暴力破解 (Brute Force) 帳號鎖定原則 (閾值 5、鎖定 30 分鐘)、強制複雜密碼、更改預設埠 (非 3389)、啟用 RDP 閘道 (RD Gateway) / VPN 前置
    藍色保鑰 (CVE-2019-0708) 等 RDP 漏洞 **及時修補系統更新 (WSUS/WUfB/Intune)**、啟用網路層級驗證 (NLA)、限制來源 IP (防火牆規則 Scope)、部署 RDP 閘道
    橫向移動跳板 分層管理模型 (Tier 0/1/2)、專用管理工作站 (PAW)、Just Enough Administration (JEA)、特權存取管理 (PAM)
    防火牆規則過寬 (全設定檔開放) 僅在「域/專用」設定檔開放,「公用」設定檔關閉;或用 `netsh advfirewall firewall add rule ... profile=domain,private`
    腳本被竄改/惡意植入

    進階:PowerShell 版本 (適用 Win 7/Server 2008 R2+ 原生 Cmdlet)

    # Enable-RDP.ps1 (以系統管理員/系統帳號執行)
    # 需啟用 PowerShell 腳本執行原則 (GPO: Computer Config → Admin Templates → Windows Components → Windows PowerShell → Turn on Script Execution → Allow local scripts and remote signed)
    
    # 1. 啟用 RDP
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0
    
    # 2. 開放防火牆 (新版語法,僅域/專用設定檔)
    New-NetFirewallRule -DisplayName "Remote Desktop (GPO Auto)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -Profile Domain,Private -Enabled True
    
    # 3. 強制啟用 NLA (網路層級驗證)
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 1
    
    # 4. (可選) 更改 RDP 埠 (需同步修改防火牆規則與客戶端連線)
    # Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber" -Value 33890
    

    **部署方式同理:** GPO → 啟動腳本 → `powershell.exe -ExecutionPolicy Bypass -File Enable-RDP.ps1`。

    結語

    **「自動化是為了讓正確的事發生,而不是讓錯誤的事更快發生。」** 群組原則 + 啟動腳本 (VBS/PowerShell) 自動啟用 RDP 並穿透防火牆,是構建企業級遠端管理基線的**標準化、可審計、可收斂**路徑。但**自動啟用只是起點**,必須同步部署 **NLA 強制、埠修改/範圍限制、帳號鎖定、修補管理、特權存取控制、審計日誌** 等纵深防禦措施,才能將遠端桌面從「最大攻擊面」轉化為「受控管理通道」。下次擴充機房、部署新伺服器、重置終端時,記得:**GPO 推送、重啟驗證、審計入庫**,讓遠端管理既高效又安心。

    Copyright © Windows教程網 All Rights Reserved