開始前先了解
必須先確認獨立於 RDP 的主機主控台可用, 並保留原始防火牆設定. 來源設錯可能立即失去遠端桌面, 不要只依賴目前仍連線的視窗復原.
確認管理端固定出口 IP. 家用動態 IP, NAT 與 IPv6 的來源可能和電腦網卡位址不同. 本次在隔離測試網路使用 192.168.50.20 作允許來源, 以另一來源驗證拒絕, 完成後還原示範主機原規則.
本系列使用 Windows Server 2022 Datacenter 繁體中文真實操作畫面. 帳號, 網路設定, 磁碟與示範數值請換成自己的環境; 選項名稱可能因版本與語言不同而異.
01記錄現況, 匯出規則並準備復原
以系統管理員開啟 PowerShell, 讀取 RDP 實際連接埠, 使用中的網路設定檔與防火牆狀態. 本次仍使用預設 3389, 如果您曾改連接埠, 必須依實際值設定.
建立自己可辨識的備份路徑, 匯出目前防火牆原則, 並確定主控台登入方式可用. 盤點所有允許 RDP 的現成及自訂規則, 包含 TCP, UDP 和 IPv6, 不只查一個顯示名稱.
PowerShell 的 DefaultInboundAction 若顯示 NotConfigured, 不代表允許所有連線. 請一併在 wf.msc 首頁核對有效結果, 本次三個設定檔均顯示防火牆已開啟, 並會封鎖不符合規則的輸入連線.
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber
Get-NetConnectionProfile
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction
New-Item C:\RdpMaintenance -ItemType Directory -Force
netsh advfirewall export C:\RdpMaintenance\before-rdp.wfw
放大圖片
02先建立指定來源的 TCP 與 UDP 允許規則
下方 198.51.100.27 是文件範例位址, 執行前必須換成主機實際看見的管理來源 IP. 使用單一位址或經確認的必要網段, 不要填入 Any 或全網路.
TCP 與 UDP 分別建立規則, 以實際 RDP 埠為準. 本篇套用所有設定檔, 讓來源限制不會因網路由私人變公用而失效. 若已有明確的組織防火牆原則, 請依既有管理方式處理.
$TrustedSource = '198.51.100.27' # 必須換成自己的實際管理來源
$RdpPort = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp').PortNumber
New-NetFirewallRule -Name 'RDP-Trusted-TCP' -DisplayName 'RDP trusted source TCP' -Direction Inbound -Action Allow -Protocol TCP -LocalPort $RdpPort -RemoteAddress $TrustedSource -Profile Any
New-NetFirewallRule -Name 'RDP-Trusted-UDP' -DisplayName 'RDP trusted source UDP' -Direction Inbound -Action Allow -Protocol UDP -LocalPort $RdpPort -RemoteAddress $TrustedSource -Profile Any
放大圖片
03核對規則的範圍與設定檔
開啟 wf.msc, 在 輸入規則 找到剛建立的規則. 開啟內容, 檢查 領域 的遠端 IP, 通訊協定及連接埠 的本機埠及 進階 的設定檔.
白名單是對遠端來源的限制. 不要把自己的管理來源填到本機 IP 欄, 也不要因目前連線可用就略過檢查. 若還要允許第二個來源, 先加入新來源再驗證.
放大圖片
04逐一停用重疊的任意來源允許
保留新規則及可用主控台, 逐一處理先前範圍較大的 RDP 允許規則. 本次原規則允許整個測試網段, 實際停用 RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP 與 RemoteDesktop-Shadow-In-TCP. 其他自訂 RDP 規則也必須核對, 不要直接停用所有應用程式規則.
只新增窄範圍允許, 不會抵銷原本仍存在的寬鬆允許. 同時保持預設連入封鎖, 不要新增一條封鎖所有 RDP 的明確規則再期待白名單優先, 因為明確封鎖可能覆蓋允許.
放大圖片
05由允許與未允許來源建立全新連線
從允許來源開一個新的遠端桌面連線, 確認可登入. 再從另一個不在清單內的來源測試相同目標與埠, 確認無法建立 TCP 連線.
不能用一直沒中斷的舊視窗判定新規則是否正確. 本次驗證指定來源可建立新登入, 另一來源無法連入. 測試只涵蓋本次網路與 TCP RDP, 不能宣稱已驗證所有 IPv6 或 UDP 外部路徑.
放大圖片
06記錄結果與規劃來源變更
管理來源會改變時, 先透過既有允許來源或主控台加入新來源, 用新來源實際登入成功, 再移除舊來源. 不要先刪掉唯一可用來源.
本次演練結束後已還原示範主機原防火牆原則, 再核對兩個來源均恢復原本連線狀態. 正式主機若要保留白名單, 應保留經驗證的新規則並記錄復原方式. 匯入整份防火牆原則會覆寫其他規則, 不應在中間還有別人修改時直接匯入舊備份.
放大圖片
完成後如何確認
允許來源能以全新連線登入, 未允許來源無法建立相同 TCP 連線.
記錄規則, 來源, 實際埠與復原入口, 確認所有重疊允許已處理.
常見問題
我新增了自己的 IP, 為什麼別人還能連入?
常見原因是原本任意來源的允許規則仍啟用, 或另外還有自訂, 服務或 IPv6 規則. 請檢查完整有效原則, 不能只新增一條白名單就推定已限制其他來源.