Zmiana portu RDP w Windows bez restartu serwera

Opublikowano Zaktualizowano 3 min czytania

Krótkim skryptem PowerShell zmienisz port RDP w Windows, założysz pasującą regułę firewalla i zrestartujesz usługę pulpitu zdalnego, całkiem bez restartu serwera.

W tym poradniku pokazujemy, jak przez PowerShell zmienić port pulpitu zdalnego (RDP) w systemie Windows, na przykład na Windows Server, jak dopasować do tego firewall Windows i zrestartować usługę pulpitu zdalnego. Restart całego serwera nie jest do tego potrzebny.

Dlaczego warto zmienić port RDP?

Domyślny port pulpitu zdalnego to TCP 3389 i dokładnie ten port zautomatyzowane boty skanują przez całą dobę. Każdy serwer Windows, który stoi w internecie z otwartym portem 3389, w ciągu kilku godzin zbiera setki nieudanych prób logowania. To nie tylko obciąża system: przy aktywnej zasadzie blokady konta prowadzi też do zablokowania twojego własnego konta.

Inny port wyłącza twój serwer z tych masowych skanów. Nie zastępuje jednak żadnego z pozostałych zabezpieczeń: mocne hasło, włączone Network Level Authentication (NLA) oraz reguła firewalla ograniczająca RDP do twojego własnego adresu IP pozostają tak samo ważne.

Wymagania

  • System Windows z włączonym pulpitem zdalnym, na przykład Windows Server 2022 albo Windows Server 2025
  • Uprawnienia administratora w tym systemie
  • Wolny port powyżej 1024, w przykładzie używamy 33445
  • Dostęp do konsoli KVM w panelu klienta jako droga powrotna, gdyby połączenie po zmianie nie zadziałało od razu

Uruchomienie PowerShella jako administrator

Najpierw uruchom Windows PowerShell jako administrator. W menu Start kliknij prawym przyciskiem myszy pozycję „Windows PowerShell” i wybierz „Uruchom jako administrator”. Bez podwyższonych uprawnień skrypt nie może zmienić ani rejestru, ani firewalla.

Skrypt PowerShell do zmiany portu RDP

Wklej poniższy skrypt do PowerShella. Numer portu w pierwszym wierszu dopasuj wcześniej do portu, którego chcesz używać:

# Port 33445 to tylko przykładowy port. Możesz użyć dowolnego wolnego portu.

$newPort = 33445
$regPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'
Set-ItemProperty -Path $regPath -Name 'PortNumber' -Value $newPort
if (-not (Get-NetFirewallRule -DisplayName "RDP Port $newPort" -ErrorAction SilentlyContinue)) {
    New-NetFirewallRule `
      -DisplayName "RDP Port $newPort" `
      -Direction Inbound `
      -Protocol TCP `
      -LocalPort $newPort `
      -Action Allow
}
Restart-Service -Name TermService -Force
Write-Host "Port RDP został zmieniony."

Co dokładnie robi ten skrypt

  1. Zapisuje nowy numer portu w zmiennej $newPort.
  2. Ustawia wartość rejestru PortNumber w kluczu HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp na tę wartość.
  3. Zakłada w firewallu Windows pasującą regułę, która przepuszcza przychodzące połączenia TCP na nowym porcie. Jeśli reguła już istnieje, nie zostanie utworzona po raz drugi.
  4. Restartuje usługę pulpitu zdalnego (TermService), żeby zmiana zadziałała od razu.

Ponowne połączenie po zmianie

Restart usługi natychmiast zrywa wszystkie trwające połączenia RDP. To normalne. Przy nowym połączeniu w kliencie RDP nie podajesz już samego adresu serwera, tylko kombinację adresu i portu:

<Adres-IP>:<Nowy-port>

W naszym przykładzie wygląda to tak:

192.168.1.100:33445

Sprawdzenie aktualnego portu RDP

Aktualnie zapisany port odczytasz w każdej chwili bezpośrednio z rejestru:

Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber

Co warto zrobić zaraz potem

  • Dopasuj firewall przed serwerem: Jeśli przed twoim serwerem stoi jeszcze zewnętrzny firewall, nowy port musi być odblokowany również tam. W przeciwnym razie nie połączysz się z serwerem mimo poprawnej reguły w Windows.
  • Sprawdź starą regułę dla portu 3389: Istniejąca reguła „Pulpit zdalny” pozostaje na miejscu. Wyłącz ją, jeśli port 3389 nie ma być już osiągalny.
  • Ogranicz dostęp: Najskuteczniej działa ograniczenie RDP w firewallu do twojego własnego adresu IP. Wszystkie zautomatyzowane ataki trafiają wtedy w próżnię.
  • Konto już zablokowane? Jeśli twoje konto użytkownika zostało już zablokowane przez wcześniejsze próby ataku, pomoże ci nasz poradnik Naprawa błędu RDP „Konto zablokowane”.

Najczęstsze pytania

Czy po zmianie portu RDP muszę zrestartować serwer?
Nie. Wystarczy zrestartować usługę TermService, a dokładnie to skrypt robi automatycznie. Wszystkie otwarte sesje RDP zostają przy tym jednak rozłączone.
Który port wybrać dla RDP?
Wybierz wolny port powyżej 1024, na przykład 33445. Unikaj portów zajętych już przez inne usługi i zanotuj sobie numer, bo będzie ci potrzebny przy każdym połączeniu.
Jak połączyć się po zmianie?
W kliencie RDP podaj adres serwera razem z nowym portem, czyli w formacie adres-IP:port. W naszym przykładzie będzie to 192.168.1.100:33445.
Czy inny port RDP naprawdę chroni przed atakami?
Inny port wyłącza twój serwer z masowych skanów wymierzonych w port 3389 i wyraźnie obniża liczbę prób logowania. Nie zastąpi jednak mocnego hasła, Network Level Authentication ani ograniczenia po adresie IP w firewallu.
Po zmianie nie mogę już połączyć się z serwerem, co mogę zrobić?
Najczęściej brakuje odblokowania nowego portu w firewallu stojącym przed serwerem. Połącz się z serwerem przez konsolę KVM w panelu klienta i sprawdź tam regułę firewalla oraz wartość portu zapisaną w rejestrze.

Windows Server Windows RDP Port RDP Pulpit zdalny PowerShell Firewall Bezpieczeństwo serwera