
Во всех операционных системах Windows по умолчанию используется порт, назначенный для RDP (Протокол удаленного рабочего стола) — это TCP 3389. После того как вы включите RDP в Windows, в окне TermService
(Remote Desktop Services) начинает прослушивать порт 3389. В этой статье мы покажем вам, как изменить номер порта RDP по умолчанию в настольных редакциях Windows (10/11) и Windows Server с помощью редактора реестра и PowerShell.
Вы можете изменить номер порта RDP по умолчанию в Windows с 3389 на любой другой. Чаще всего это используется, когда нужно скрыть RDP/RDS-хост от сканеров портов, которые ищут в сети Windows-хосты с открытым RDP-портом TCP/3389.
Изменение порта RDP снизит вероятность эксплуатации уязвимостей RDP (последняя критическая уязвимость в RDP BlueKeep описана в CVE-2019-0708), уменьшит количество атак грубой силы на RDP (не забывайте регулярно анализировать логи соединений RDP), SYN и других типов атак при отключенном NLA. Чаще всего порт RDP меняется на компьютерах с прямым подключением к Интернету (VPS/ VDS) или в сетях, где пограничный маршрутизатор перенаправляет порт 3389/RDP на Windows-хост в вашей локальной сети.
При выборе нестандартного порта RDP обратите внимание, что не рекомендуется использовать порты в диапазоне 1-1023
(известные порты). Используйте динамический порт в диапазоне портов RPC (49152 to 65535
), или любой порт из диапазона 1024 to 49151
, который не используется другой службой или приложением.
Как изменить порт удаленного рабочего стола в Windows?
В нашем примере мы изменим номер порта, на котором прослушивается служба удаленного рабочего стола 1350. Для этого:
- Откройте редактор реестра (
regedit.exe
) и перейдите к ключу реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp; - Найти DWORD параметр с именем PortNumber. Этот параметр показывает порт, на котором прослушивается служба Remote Desktop. По умолчанию это 3389 (десятичное значение);
- Измените значение этого параметра. Я изменил порт RDP на 1350 (Десятичная); Вы можете изменить параметр реестра с помощью PowerShell:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber -Value 1350
- Если на вашем компьютере включен брандмауэр Windows Firewall, вам нужно будет создать новое правило, разрешающее входящее соединение с новым портом RDP. Если вы перенастраиваете удаленный хост Windows через RDP, убедитесь, что вы создали разрешающие правила в брандмауэре перед перезапуском TermService, иначе вы потеряете доступ к серверу;
- Вы можете создать разрешающее входящее правило для нового порта TCP/UDP RDP вручную в консоли Windows Defender Firewall (
firewall.cpl
) или с помощью команд PowerShell из модуля 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 - Перезагрузите компьютер или перезапустите службу удаленного рабочего стола с помощью этой команды:
net stop termservice & net start termservice
- Чтобы подключиться к этому хосту Windows через Remote Desktop, необходимо указать новый порт 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, создания правила брандмауэра и перезапуска службы Remote Desktop может выглядеть следующим образом:
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 для подключения к компьютеру:
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):
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.