−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

如何保護 Windows VPS 上的 RDP:NLA、帳戶鎖定與 IP 允許清單

五個 PowerShell 步驟,讓 Windows Server 2022 VPS 的 RDP 從「對所有人開放」變成「只回應你」:網路層級驗證、帳戶鎖定、涵蓋 3389 所有規則的 IP 允許清單,以及查看誰在嘗試登入的方法。

對整個網際網路開放的 RDP 連接埠,在伺服器開機幾分鐘後就會開始收到密碼猜測。長密碼擋得住,但每次猜測仍是一次登入嘗試,會塞滿事件記錄,也讓下一個 RDP 漏洞有了攻擊入口。五個步驟就能解決。每一步都是一個 PowerShell 指令,全部在發布前於我們的 Windows Server 2022 映像檔上執行過。

透過 RDP 以系統管理員身分開啟 PowerShell(如何連線),依序操作。第 4 步留到最後:只有這一步可能把你自己鎖在外面。

1. 使用長且不重複的密碼

如果你還在用首次登入的密碼,請在控制台改成長密碼(20 個字元以上,由密碼管理工具產生)。以下所有步驟都假設密碼本身無法被猜中。

2. 開啟網路層級驗證(NLA)

開啟 NLA 後,Windows 會在建立工作階段、繪製登入畫面之前先驗證你的認證。未經驗證的連線永遠到不了桌面程式碼,而最知名的 RDP 漏洞正好都在那裡。查看目前狀態:

(Get-CimInstance -Namespace root/cimv2/TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'").UserAuthenticationRequired

1 表示 NLA 已開啟。如果看到 0,就開啟它:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1

Windows、macOS 和 Linux(xfreerdp)上目前的遠端桌面用戶端都支援 NLA。下次連線時,會在遠端畫面出現前先要求輸入密碼。

3. 多次失敗後鎖定帳戶

Windows Server 2022 的預設安裝無論輸錯多少次密碼,都不會鎖定帳戶。自 2026 年 10 月 24 日起以我們的映像檔安裝的伺服器已設好下面的上限;較早的伺服器請自行設定:

net accounts /lockoutthreshold:5 /lockoutwindow:15 /lockoutduration:15
net accounts

15 分鐘內輸錯 5 次,帳戶會被鎖定 15 分鐘。我們實測過:5 次失敗後,一般使用者和內建的 Administrator 都被鎖定了。鎖定會自動解除,所以就算早上一直打錯字,你損失的也只是一刻鐘,而不是伺服器。

4. 只允許你的 IP 位址連線 RDP

這一步能消除幾乎所有雜訊。Windows 防火牆規則接受遠端位址清單,填入你自己的位址即可。在任何「查詢我的 IP」網頁上看到目前的公用 IP,然後:

$myIp = '203.0.113.10'   # your public IP; several: '203.0.113.10','198.51.100.0/24'
Get-NetFirewallPortFilter | Where-Object LocalPort -eq 3389 | Get-NetFirewallRule | Set-NetFirewallRule -RemoteAddress $myIp

這個指令會找出 3389 連接埠上的所有輸入規則,而不只是內建的「遠端桌面」群組。這點很關鍵:2026 年 10 月 24 日之前以我們的映像檔安裝的伺服器有一條名為「EQVPS RDP 3389」的額外規則,對所有人開放這個連接埠,其他軟體也可能加入自己的規則。如果只限制內建群組,這類規則會讓連接埠繼續開著。我們自己測試時就犯了這個錯。確認結果:

Get-NetFirewallPortFilter | Where-Object LocalPort -eq 3389 | Get-NetFirewallRule |
  Select-Object DisplayName, @{n='Remote';e={($_ | Get-NetFirewallAddressFilter).RemoteAddress}}

每一行都應顯示你的位址。在我們的測試中,來自其他位址的連線都得不到回應,而允許的位址可以連上。

在 NAT 方案上也一樣。從你的專屬連接埠進來的轉送會保留你的真實位址,所以允許你自己的公用 IP 即可。

如果你的 IP 變了,RDP 也會不再回應你。從控制台開啟瀏覽器主控台(它不經過 RDP,也不經過防火牆),登入後用新位址再執行一次指令。要完全取消允許清單,使用 -RemoteAddress Any。

5. 查看誰在嘗試登入

登入失敗是安全性記錄中的 4625 事件。下面的指令會顯示每次嘗試的帳戶名稱和來源位址:

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
  Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}

設定允許清單之前,你會看到來自陌生位址的 Administrator、admin、user 源源不絕。設定之後,清單應該會安靜下來。

不值得花時間的事

  • 更改 RDP 連接埠。 在有獨立 IPv4 的方案上只能減少記錄雜訊,掃描器很快就會找到新連接埠。在 NAT 方案上會讓你無法連線,因為轉送指向 3389。
  • 為了「能用」而關閉防火牆。 如果改了規則後 RDP 不再回應,請透過瀏覽器主控台修正規則。

保持更新

最嚴重的 RDP 事件來自通訊協定漏洞,而不是密碼。Windows Server 2022 的安全性更新會持續到 2031 年 10 月 14 日,請保持 Windows Update 開啟,並在提示時重新啟動。

映像檔是使用你自有授權的 Windows Server 2022(BYOL 如何運作)。方案從 Windows-Small 起:4 vCPU、4 GB 記憶體、50 GB,NAT 版每月 $11。有獨立 IPv4 的 Windows Small-IP 每月 $28。四個方案都在 Windows VPS 頁面。如果想在 RDP 之外使用 SSH,請參考 在 Windows Server 上使用 OpenSSH。

常見問題

只改 RDP 連接埠就夠了嗎?

不夠。換連接埠能減少記錄中的雜訊,但任何掃描器幾小時內就會找到它。在 NAT 方案上完全不要改:你的專屬外部連接埠會轉送到伺服器內的 3389,移動 RDP 會破壞這個轉送。IP 允許清單才能真正做到改連接埠只是假裝做到的事。

IP 允許清單在 NAT 方案上有效嗎?

有效。轉送到你伺服器的連線會保留真實的來源位址,所以 Windows 防火牆看到的是你自己的公用 IP,可以比對。請允許這個位址,而不是伺服器的位址。

如果家裡的 IP 變了,把自己鎖在外面怎麼辦?

從控制台開啟瀏覽器主控台。它直接連到伺服器的畫面,不經過 RDP,所以防火牆不會擋。在那裡登入,用同樣的 Set-NetFirewallRule 指令設定新位址即可。

機器人能把我的 Administrator 帳戶鎖住嗎?

設定了鎖定原則就可以,每次鎖 15 分鐘:在目前的 Windows Server 2022 版本中,內建 Administrator 會像其他帳戶一樣被鎖定(我們親自確認過)。這正是 IP 允許清單重要的原因:連不到 3389 連接埠的機器人也無法觸發鎖定。

RDP 已經鎖好了,還需要 Windows 更新嗎?

需要。針對 RDP 最嚴重的攻擊利用的是通訊協定本身的漏洞,而不是密碼。Windows Server 2022 會持續收到安全性更新到 2031 年 10 月 14 日,請保持 Windows Update 開啟。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。