ในระบบปฏิบัติการ Windows ทั้งหมด พอร์ตเริ่มต้นที่กำหนดให้กับ RDP (โปรโตคอลเดสก์ท็อประยะไกล) คือ TCP 3389 . หลังจากที่คุณเปิดใช้งาน RDP ใน Windows TermService
(บริการเดสก์ท็อประยะไกล) เริ่มฟังที่พอร์ต 3389 ในบทความนี้ เราจะแสดงวิธีเปลี่ยนหมายเลขพอร์ต RDP เริ่มต้นบน Windows รุ่นเดสก์ท็อป (7/8/10/11) และบน Windows Server โดยใช้ Registry บรรณาธิการและ PowerShell
โปรดทราบว่า Windows รุ่นใหม่ยังใช้ UDP ด้วยหมายเลขพอร์ตเดียวกัน (3389) สำหรับการเชื่อมต่อเดสก์ท็อประยะไกลนอกเหนือจาก TCP
คุณสามารถเปลี่ยนหมายเลขพอร์ต RDP เริ่มต้นใน Windows จาก 3389 เป็นหมายเลขอื่นได้ ใช้บ่อยที่สุดเมื่อคุณต้องการซ่อนโฮสต์ RDP/RDS จากเครื่องสแกนพอร์ตที่ค้นหาโฮสต์ Windows บนเครือข่ายที่มีพอร์ต RDP TCP/3389 ที่เปิดอยู่
การเปลี่ยนพอร์ต RDP จะลดโอกาสในการใช้ประโยชน์จากช่องโหว่ RDP (ช่องโหว่ที่สำคัญสุดท้ายใน RDP BlueKeep อธิบายไว้ใน CVE-2019-0708) ลดจำนวนการโจมตีแบบเดรัจฉาน RDP (อย่าลืมวิเคราะห์บันทึกการเชื่อมต่อ RDP เป็นประจำ) , SYN และการโจมตีประเภทอื่นๆ เมื่อปิดใช้งาน NLA ส่วนใหญ่แล้ว พอร์ต RDP จะมีการเปลี่ยนแปลงในคอมพิวเตอร์ที่มีการเชื่อมต่อโดยตรงกับอินเทอร์เน็ต (VPS/ VDS) หรือในเครือข่ายที่เราเตอร์ edge ส่งต่อพอร์ต 3389/RDP ไปยังโฮสต์ Windows ใน LAN ของคุณ
แม้จะเปลี่ยนหมายเลขพอร์ต การเปิดพอร์ต RDP บนโฮสต์ของคุณไปยังอินเทอร์เน็ตก็ไม่ปลอดภัย เครื่องสแกนพอร์ตช่วยให้ผู้โจมตีสามารถค้นพบตัวฟัง RDP บนพอร์ตใหม่ (ตามลายเซ็น) หากคุณต้องการเปิดการเข้าถึง RDP ไปยังคอมพิวเตอร์บนเครือข่ายของคุณ ควรใช้ VPN, RD Web Access, RDS Gateway และเครื่องมือการเชื่อมต่อที่ปลอดภัยอื่นๆ
เมื่อเลือกพอร์ต RDP ที่ไม่ได้มาตรฐาน โปรดทราบว่าไม่แนะนำให้ใช้พอร์ตในช่วง 1-1023
(พอร์ตที่รู้จัก). ใช้พอร์ตไดนามิกในช่วงพอร์ต RPC (49152 to 65535
) หรือพอร์ตใดๆ ในช่วง 1024 to 49151
ที่ไม่ได้ใช้งานโดยบริการหรือแอปพลิเคชันอื่น
จะเปลี่ยนพอร์ตเดสก์ท็อประยะไกลบน Windows ได้อย่างไร
ในตัวอย่างของเรา เราจะเปลี่ยนหมายเลขพอร์ตที่บริการเดสก์ท็อประยะไกลกำลังฟัง 1350 . ในการดำเนินการนี้:
- เปิด Registry Editor (
regedit.exe
) และไปที่รีจิสตรีคีย์ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp; - ค้นหา DWORD พารามิเตอร์ที่มีชื่อ PortNumber . พารามิเตอร์นี้แสดงพอร์ตที่บริการเดสก์ท็อประยะไกลกำลังรับฟังอยู่ ค่าเริ่มต้นคือ 3389 (ทศนิยม);
- เปลี่ยนค่าของพารามิเตอร์นี้ ฉันเปลี่ยนพอร์ต RDP เป็น 1350 (ทศนิยม);
คุณสามารถเปลี่ยนพารามิเตอร์รีจิสทรีได้โดยใช้ PowerShell:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber -Value 1350
- หากเปิดใช้งานไฟร์วอลล์ Windows บนคอมพิวเตอร์ของคุณ คุณจะต้องสร้างกฎใหม่ที่อนุญาตการเชื่อมต่อขาเข้ากับพอร์ต RDP ใหม่ของคุณ หากคุณกำลังกำหนดค่าโฮสต์ Windows ระยะไกลใหม่ผ่าน RDP ตรวจสอบให้แน่ใจว่าคุณได้สร้างกฎการอนุญาตในไฟร์วอลล์ก่อนที่จะเริ่ม TermService ใหม่ มิฉะนั้น คุณจะสูญเสียการเข้าถึงเซิร์ฟเวอร์
- คุณสามารถสร้างกฎขาเข้าที่อนุญาตสำหรับพอร์ต TCP/UDP RDP ใหม่ของคุณได้ด้วยตนเองในคอนโซลไฟร์วอลล์ Windows Defender (
firewall.cpl
) หรือใช้ PowerShell cmdlets จากโมดูล NetSecurity:New-NetFirewallRule -DisplayName "NewRDPPort-TCP-In" -Direction Inbound -LocalPort 1350 -Protocol TCP -Action allow
New-NetFirewallRule -DisplayName "NewRDPPort-UDP-In" -Direction Inbound -LocalPort 1350 -Protocol UDP -Action allow - รีบูตเครื่องคอมพิวเตอร์หรือเริ่มบริการ Remote Desktop ใหม่ด้วยคำสั่งนี้:
net stop termservice & net start termservice
- ในการเชื่อมต่อกับโฮสต์ Windows นี้ผ่านเดสก์ท็อประยะไกล คุณต้องระบุพอร์ตการเชื่อมต่อ RDP ใหม่ในไคลเอ็นต์ mstsc.exe โดยใช้โคลอนดังนี้:
RDPComputerName:1350
หรือตามที่อยู่ IP:192.168.1.10:1350
หรือจากพรอมต์คำสั่ง:mstsc.exe /v 192.168.1.10:1350
หากคุณใช้ RDCMan เพื่อจัดการการเชื่อมต่อ RDP หลายรายการ คุณสามารถระบุพอร์ต RDP ที่คุณมีได้ กำหนดค่าใน การตั้งค่าการเชื่อมต่อ แท็บ - จากนั้น คุณจะเชื่อมต่อกับเดสก์ท็อประยะไกลของคอมพิวเตอร์ได้สำเร็จโดยใช้พอร์ต RDP ใหม่ คุณสามารถใช้
netstat –na | Find “LIST”
คำสั่งเพื่อให้แน่ใจว่าบริการเดสก์ท็อประยะไกลของคุณกำลังฟังพอร์ตใหม่
โปรดทราบว่าหมายเลขพอร์ต UDP RDP จะเปลี่ยนเป็น 1350 โดยอัตโนมัติด้วย (คุณสามารถตรวจสอบได้ด้วยเครื่องมือ TCPView)
ใช้คำสั่ง Test-NetConnection เพื่อตรวจสอบว่าพอร์ต RDP เริ่มต้น 3389 ถูกปิดแล้ว (TcpTestSucceeded: False
):
Test-NetConnection 192.168.3.102 -port 3389 |select TcpTestSucceeded
ตอนนี้ คุณต้องใช้พอร์ต 1350 ใหม่สำหรับการเชื่อมต่อ RDP
ถ้าคุณต้องการเปลี่ยนหมายเลขพอร์ต RDP บนคอมพิวเตอร์โดเมน คุณสามารถใช้คุณลักษณะนโยบายกลุ่ม สร้าง GPO ใหม่ที่จะปรับใช้ PortNumber พารามิเตอร์รีจิสทรีพร้อมหมายเลขพอร์ต RDP ใหม่ไปยังคอมพิวเตอร์โดเมน
เปลี่ยนหมายเลขพอร์ตการฟัง RDP ด้วย PowerShell
สคริปต์ PowerShell ที่สมบูรณ์เพื่อเปลี่ยนหมายเลขพอร์ต RDP สร้างกฎไฟร์วอลล์ และเริ่มบริการเดสก์ท็อประยะไกลใหม่อาจมีลักษณะดังนี้:
Write-host "Specify the number of your new RDP port: " -ForegroundColor Yellow -NoNewline;$RDPPort = Read-Host
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TCP\" -Name PortNumber -Value $RDPPort
New-NetFirewallRule -DisplayName "NewRDPPort-TCP-In-$RDPPort" -Direction Inbound –LocalPort $RDPPort -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "NewRDPPort-UDP-In-$RDPPort" -Direction Inbound –LocalPort $RDPPort -Protocol UDP -Action Allow
Restart-Service termservice -force
Write-host "The number of the RDP port has been changed to $RDPPort " -ForegroundColor Magenta
คุณสามารถเปลี่ยนหมายเลขพอร์ต RDP บนคอมพิวเตอร์ระยะไกลได้ ในการดำเนินการนี้ คุณต้องเปิดใช้งาน WinRM บนคอมพิวเตอร์ระยะไกล จากนั้นคุณสามารถใช้ Invoke-Command cmdlet เพื่อเชื่อมต่อกับคอมพิวเตอร์:
Invoke-Command -ComputerName wksname112 -ScriptBlock {Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TCP\" -Name PortNumber -Value 1350}
หากคุณต้องการเปลี่ยนหมายเลข RDP จากระยะไกลบนคอมพิวเตอร์หลายเครื่องในโดเมน AD ของคุณ (ใน OU เฉพาะ) ให้ใช้สคริปต์ต่อไปนี้ (คุณสามารถรับรายการคอมพิวเตอร์ใน OU ได้โดยใช้ Get-ADComputer cmdlet):
Write-host "Specify the number of your new RDP port: " -ForegroundColor Yellow -NoNewline;$RDPPort = Read-Host
$PCs = Get-ADComputer -Filter * -SearchBase "CN=IT,CN=Computers,CN=NY,DC=woshub,DC=com"
Foreach ($PC in $PCs) {
Invoke-Command -ComputerName $PC.Name -ScriptBlock {
param ($RDPPort)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TCP\" -Name PortNumber -Value $RDPPort
New-NetFirewallRule -DisplayName "NewRDPPort-TCP-In-$RDPPort" -Direction Inbound –LocalPort $RDPPort -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "NewRDPPort-UDP-In-$RDPPort" -Direction Inbound –LocalPort $RDPPort -Protocol TCP -Action Allow
Restart-Service termservice -force
}
คู่มือสำหรับการเปลี่ยนพอร์ต RDP เริ่มต้นนี้เหมาะสำหรับ Windows ทุกรุ่นตั้งแต่ Windows XP (Windows Server 2003) และ Windows 10, Windows 11 และ Windows Server 2022 รุ่นใหม่ขึ้นไป