Domyślnie we wszystkich systemach operacyjnych Windows do połączenia przez protokół RDP (Protokół pulpitu zdalnego) używa portu TCP 3389.
Jeśli komputer jest bezpośrednio podłączony do Internetu (na przykład serwer VDS) lub skonfigurowałeś port 3389 / RDP tak, aby był przekierowywany na komputer lokalny lub serwer Windows na routerze granicznym, możesz zmienić standardowy port RDP 3389 na dowolny inny. Zmieniając numer portu RDP dla połączenia, możesz ukryć serwer RDP przed skanerami portów, zmniejszyć prawdopodobieństwo wykorzystania słabych punktów RDP (ostatnia krytyczna luka w RDP BlueKeep jest opisana w CVE-2019-0708), zmniejszyć liczbę prób zdalnego odgadywania haseł przez RDP (nie zapomina okresowo analizować logi połączeń RDP), SYN i innych rodzajów ataków (szczególnie gdy NLA jest wyłączony).
Możesz użyć zastąpienia standardowego portu RDP, gdy za routerem znajduje się jeden biały adres IP, istnieje kilka komputerów z systemem Windows, do których musisz zapewnić zewnętrzny dostęp RDP. Na każdym komputerze można skonfigurować unikalny port RDP i skonfigurować przekierowanie portów na routerze na komputery lokalne (w zależności od numeru portu RDP sesja jest przekierowywana na jeden z wewnętrznych komputerów).Wybierając niestandardowy numer portu dla RDP, należy pamiętać, że nie zaleca się używania numerów portów z zakresu od 1 do 1023 (znane porty) i portów dynamicznych z zakresu RPC (od 49152 do 65535).
Spróbujmy zmienić port, na którym usługa pulpitu zdalnego oczekuje na połączenie 1350. Aby to zrobić:
- Otwórz edytor rejestru i przejdź do oddziału HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp;
- Znajdź DWORD ustawienie rejestru o nazwie Numer portu. Ten parametr określa port, na którym usługa pulpitu zdalnego oczekuje na połączenie;
- Zmień wartość tego portu. Zmieniłem port RDP na 1350 w wartości dziesiętnej (deciamal); Możesz zmienić ustawienie rejestru za pomocą PowerShell:
Set-ItemProperty -Path "HKLM: \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp \" -Name Numer_portu -Wartość 1350
- Jeśli Zapora systemu Windows jest włączona na komputerze, musisz utworzyć nową regułę, która zezwala na połączenia przychodzące do nowego portu RDP (jeśli ponownie skonfigurujesz serwer zdalny za pomocą RDP bez tworzenia reguły w zaporze, utracisz dostęp do serwera). Możesz utworzyć ręcznie regułę przychodzącą dla nowego portu RDP TCP / UDP z poziomu konsoli „Windows Defender Firewall” (firewall.cpl) lub za pomocą poleceń PowerShell:
New-NetFirewallRule -DisplayName „New RDP Port 1350” -Direction Inbound -LocalPort 1350 -Protocol TCP -Action allow
I:New-NetFirewallRule -DisplayName "Nowy port RDP 1350" -kierunek przychodzący -LocalPort 1350-Protokół UDP -Akcja zezwala
- Uruchom ponownie komputer lub ponownie uruchom usługę pulpitu zdalnego za pomocą polecenia:
usługa netto stop i usługa netto start
- Teraz, aby połączyć się z tym komputerem z systemem Windows przez RDP, w kliencie mstsc.exe musisz określić port RDP dwukropka połączenia przez dwukropek w następujący sposób:
Your_Computer_Name: 1350
lub według adresu IP192.168.1.100:1350
lub z linii poleceń:mstsc.exe / v 192.168.1.100:1350
Jeśli używasz Menedżera połączeń RDPMan RDP do zarządzania wieloma połączeniami RDP, możesz określić numer portu RDP podany dla połączenia na karcie „Ustawienia połączeń”. - W rezultacie z powodzeniem połączysz się z pulpitem komputera zdalnego za pomocą nowego numeru portu RDP (za pomocą polecenia
nenstat -na | Znajdź „LISTĘ”
upewnij się, że usługa RDP nasłuchuje teraz na innym porcie).
Pełny skrypt kodu programu PowerShell do zmiany portu RDP, utworzenia reguły w zaporze i ponownego uruchomienia usługi RDP na nowym porcie może wyglądać następująco:
Write-host "Wpisz numer nowego portu RDP:" -ForegroundColor Yellow -NoNewline; $ RDPPort = Read-Host
Set-ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-TCP \" -Nazwa Numer_portu -Wartość $ RDPPort
New-NetFirewallRule -DisplayName "Nowy port RDP $ RDPPort" -Kierunek przychodzący -LocalPort $ RDPPort-Protokół TCP -Akcja Zezwól
New-NetFirewallRule -DisplayName "Nowy port RDP $ RDPPort" -Kierunek przychodzący -LocalPort $ RDPPort-Protokół UDP -Akcja Zezwól
Restart-Service termservice-force
„Numer portu RDP hosta zapisu zmieniono na $ RDPPort” -ForegroundColor Magenta
Możesz zmienić numer RDP zdalnie na wielu komputerach w domenie AD (zdefiniowanych przez OU) za pomocą Invoke-Command i Get-ADComputer:
Write-host "Wpisz numer nowego portu RDP:" -ForegroundColor Yellow -NoNewline; $ RDPPort = Read-Host
$ PCs = Get-ADComputer -Filter * -SearchBase "CN = DMZ, CN = Komputery, DC = winitpro, DC = en"
Foreach ($ PC w $ PC)
Invoke-Command -ComputerName $ PC.Name -ScriptBlock
parametr ($ RDPPort)
Set-ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-TCP \" -Nazwa Numer_portu -Wartość $ RDPPort
New-NetFirewallRule -DisplayName "Nowy port RDP $ RDPPort" -Kierunek przychodzący -LocalPort $ RDPPort-Protokół TCP -Akcja Zezwól
New-NetFirewallRule -DisplayName "Nowy port RDP $ RDPPort" -Kierunek przychodzący -LocalPort $ RDPPort-Protokół TCP -Akcja Zezwól
Restart-Service termservice-force
Ta instrukcja zmiany standardowego portu RDP jest odpowiednia dla każdej wersji systemu Windows, zaczynając od Windows XP (Windows Server 2003) i kończąc na Windows 10 (Windows Server 2019).