Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows

Trong tất cả hệ điều hành Windows, cổng mặc định gán cho RDP (Remote Desktop Protocol) là TCP 3389. Sau khi bật RDP trong Windows, dịch vụ TermService (Remote Desktop Services) bắt đầu lắng nghe trên cổng 3389. Trong bài này, chúng ta chỉ cách đổi số cổng RDP mặc định trên Windows desktop (7/8/10/11) và Windows Server dùng Registry Editor và PowerShell.

Lưu ý phiên bản Windows hiện đại cũng dùng UDP cùng số cổng (3389) cho kết nối Remote Desktop ngoài TCP.

Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows

Bạn có thể đổi số cổng RDP mặc định trong Windows từ 3389 sang bất kỳ cổng nào. Thường dùng khi cần ẩn host RDP/RDS khỏi port scanner tìm host Windows trên mạng với cổng RDP TCP/3389 mở.

Thay đổi cổng RDP sẽ giảm cơ hội khai thác lỗ hổng RDP (lỗ hổng nghiêm trọng gần đây BlueKeep mô tả trong CVE-2019-0708), giảm số lần tấn công brute force RDP (đừng quên phân tích log kết nối RDP thường xuyên), SYN, và các loại tấn công khác khi NLA bị tắt. Thường đổi cổng RDP trên máy tính kết nối trực tiếp Internet (VPS/VDS), hoặc mạng nơi router edge forward cổng 3389/RDP đến host Windows trong LAN.

Dù đổi số cổng, mở cổng RDP trên host ra Internet vẫn không an toàn. Port scanner cho phép kẻ tấn công phát hiện RDP listener trên cổng mới (theo signature). Nếu muốn mở truy cập RDP đến máy tính trong mạng, tốt hơn dùng VPN, RD Web Access, RDS Gateway, và công cụ kết nối an toàn khác.

Khi chọn cổng RDP không tiêu chuẩn, lưu ý không khuyến khích dùng cổng trong phạm vi 1-1023 (well-known ports). Dùng cổng động trong phạm vi RPC port (49152 to 65535), hoặc bất kỳ cổng nào trong phạm vi 1024 to 49151 không được dùng bởi dịch vụ hoặc ứng dụng khác.

Cách thay đổi cổng Remote Desktop trên Windows?

Trong ví dụ, chúng ta đổi số cổng dịch vụ Remote Desktop lắng nghe thành 1350. Để làm vậy:

  1. Mở Registry Editor (regedit.exe) và đến khóa registry HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp;
  2. Tìm tham số DWORD tên PortNumber. Tham số này cho thấy cổng dịch vụ Remote Desktop lắng nghe. Mặc định là 3389 (decimal);
  3. Đổi giá trị tham số này. Tôi đổi cổng RDP thành 1350 (Decimal); Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong WindowsBạn có thể đổi tham số registry dùng PowerShell: Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber -Value 1350
  4. Nếu Windows Firewall bật trên máy tính, bạn phải tạo rule mới cho phép kết nối inbound đến cổng RDP mới. Nếu cấu hình lại host Windows từ xa qua RDP, chắc chắn tạo rule allow trong firewall trước khi restart TermService, nếu không bạn sẽ mất truy cập server;
  5. Bạn có thể tạo rule inbound allow cho cổng TCP/UDP RDP mới thủ công trong console Windows Defender Firewall (firewall.cpl) hoặc dùng cmdlet PowerShell từ module 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 allowThay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows
  6. Khởi động lại máy tính hoặc restart dịch vụ Remote Desktop bằng lệnh: net stop termservice & net start termservice Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows
  7. Để kết nối host Windows này qua Remote Desktop, bạn phải chỉ định cổng kết nối RDP mới trong client mstsc.exe dùng dấu hai chấm: RDPComputerName:1350 hoặc bằng IP: 192.168.1.10:1350 hoặc từ command prompt: mstsc.exe /v 192.168.1.10:1350 Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows
    Nếu dùng RDCMan quản lý nhiều kết nối RDP, bạn có thể chỉ định cổng RDP đã cấu hình trong tab Connection Settings. Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows
  8. Sau đó bạn sẽ kết nối thành công remote desktop máy tính dùng cổng RDP mới. Dùng lệnh netstat –na | Find “LIST” kiểm tra Remote Desktop Service đang lắng nghe trên cổng mới. Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows

Lưu ý cổng UDP RDP cũng tự động đổi thành 1350 (có thể kiểm tra bằng công cụ TCPView).

Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows

Dùng lệnh Test-NetConnection kiểm tra cổng RDP mặc định 3389 giờ đã đóng (TcpTestSucceeded: False):

Test-NetConnection 192.168.3.102 -port 3389 |select TcpTestSucceeded

Bây giờ bạn cần dùng cổng mới 1350 cho kết nối RDP.

Thay đổi cổng Remote Desktop (RDP) mặc định 3389 trong Windows

Lưu ý: Nếu bạn đổi số cổng lắng nghe RDP mặc định, bạn có thể gặp sự cố với Remote Assistance, shadow RDP connection trong Windows 10, cũng như RDS shadowing trên Windows Server.

Nếu muốn đổi số cổng RDP trên máy tính domain, bạn có thể dùng tính năng Group Policy. Tạo GPO mới triển khai tham số registry PortNumber với số cổng RDP mới đến máy tính domain.

Đổi số cổng lắng nghe RDP với PowerShell

Script PowerShell hoàn chỉnh đổi số cổng RDP, tạo rule firewall, restart dịch vụ Remote Desktop có thể như sau:

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

Bạn có thể đổi số cổng RDP trên máy tính từ xa. Cần bật WinRM trên máy tính từ xa, rồi dùng Invoke-Command cmdlet kết nối:

Invoke-Command -ComputerName wksname112 -ScriptBlock {Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TCP\" -Name PortNumber -Value 1350}

Nếu cần đổi số cổng RDP từ xa trên nhiều máy tính trong domain AD (trong OU cụ thể), dùng script sau (có thể lấy danh sách máy tính trong OU dùng cmdlet Get-ADComputer):

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
}

Hướng dẫn đổi cổng RDP mặc định này phù hợp mọi phiên bản Windows từ Windows XP (Windows Server 2003) đến Windows 10, Windows 11, và Windows Server 2022 hiện đại.