Windows Serverのリモートデスクトップ(RDP)ポート3389を変更する方法

8 分で読めます 7 回閲覧 0
目次

リモートデスクトップを既定のTCP 3389から別のポートに移すと、公開されたWindowsサーバーに絶え間なく届く自動ログイン試行を手早く減らせます。このガイドでは、PowerShellでWindows ServerのRDPポートを変更する方法(2016/2019/2022対応)を、切り替え前のファイアウォール開放、うまくいかなかった時のVNCコンソールでの復旧まで含めて説明します。ヨハネスブルグ・モスクワ・東京・ソウルのJUSTGクラウドサーバーや専用サーバーでも手順は同じです。例ではポート40125、サーバーIP 203.0.113.10を使います。

ポート変更はスキャンによるノイズを減らす対策であり、強力なパスワード、NLA、最新の更新プログラムの代わりにはなりません。

ステップ1:リモートデスクトップ用の空きポートを決める

1025〜49151の範囲で、ほかのアプリが使っていない番号を選びます。49152〜65535はWindowsが外向き通信に使う動的ポート範囲なので避けてください。現在のRDPポートを確認し、選んだポートが空いていることを確かめます(2行目は何も表示されなければOK)。

Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber
Get-NetTCPConnection -LocalPort 40125 -ErrorAction SilentlyContinue

作業前に、クライアントエリア(製品とサービス → 対象サーバー → 管理/コントロールパネル)からVNCコンソールを別タブで開いておきましょう。新しいポートで入れなかった時の入口になります。

ステップ2:先にWindowsファイアウォールで新しいRDPポートを開く

レジストリを変える前に、必ず新しいポートを許可しておきます。順番を逆にすると、サービス再起動の瞬間に締め出されます。RDPはセッションにTCP、遅延の大きい回線での快適さのためにUDPも使うので、両方の規則を作成します。

$port = 40125
New-NetFirewallRule -DisplayName "RDP custom TCP $port" -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow
New-NetFirewallRule -DisplayName "RDP custom UDP $port" -Direction Inbound -Protocol UDP -LocalPort $port -Action Allow

サーバーの手前に別のファイアウォール(専用サーバーのハードウェアファイアウォールなど)がある場合は、そちらでも同じポートを許可してください。

ステップ3:レジストリのPortNumberを変更してTermServiceを再起動する

RDPの待ち受けポートはRDP-Tcpキーの PortNumber に保存されています。値を書き換えてRemote Desktop Servicesを再起動します。UmRdpServiceが依存しているため -Force が必要です。

$port = 40125
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value $port
Restart-Service -Name TermService -Force
TermServiceを再起動すると、今使っているRDPセッションはすぐに切断されます。これは想定どおりの動作です。10秒ほど待ってから新しいポートで再接続してください。

ステップ4:「IP:ポート」で接続して確認する

リモートデスクトップクライアントには、サーバーアドレスの後ろにコロンとポート番号を付けて入力します。PowerShellならポートのテストとクライアント起動をまとめて行えます。

# On the server (VNC console or new RDP session)
Get-NetTCPConnection -LocalPort 40125 -State Listen

# On your PC
Test-NetConnection -ComputerName 203.0.113.10 -Port 40125
mstsc /v:203.0.113.10:40125

IPv6の場合はアドレスを角かっこで囲みます([2001:db8::10]:40125)。保存済みの.rdpファイルやパスワード管理ツール、同僚の接続設定も忘れずに更新しましょう。

ステップ5:3389を閉じて接続元を制限する

新しいポートでログインできたら、既定のリモートデスクトップ規則を無効にして3389を閉じます。必要に応じて、新しい規則の接続元を社内のアドレス範囲に絞り込みます。

# Built-in Remote Desktop rules (language-independent group ID)
Disable-NetFirewallRule -Group "@FirewallAPI.dll,-28752"

# Optional: only allow your own IP to reach the new port
Set-NetFirewallRule -DisplayName "RDP custom TCP 40125" -RemoteAddress 198.51.100.0/24

ステップ6:締め出された時はVNCコンソールで元に戻す

新しいポートで接続できない場合は、VNCコンソールからログインして既定の設定に戻します。

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 3389
Enable-NetFirewallRule -Group "@FirewallAPI.dll,-28752"
Restart-Service -Name TermService -Force

数秒でリモートデスクトップは3389に戻ります。そのうえで、ポート番号の入力ミスや外部ファイアウォールの設定に注意しながらステップ2〜4をやり直してください。

よくある質問

RDPポートを変更した後、Windows Serverの再起動は必要ですか?

不要です。TermServiceサービスの再起動だけで反映されます。サービスが再起動できない時はOSごと再起動しても構いません。

ポートを変えたのに、RDPがまだ3389で待ち受けています。

グループポリシーやリモート管理ツールが値を書き戻していないか、また編集したのが RDP-Tcp キーで間違いないかを確認し、ステップ4の確認コマンドを再度実行してください。

RDPポートを変えると中国やアフリカからの速度に影響しますか?

影響しません。遅延はルーティングで決まり、ポート番号とは無関係です。JUSTGのモスクワと南アフリカは中国電信CN2 GIA、東京は中国電信の高品質回線で、どのポートでも同じ経路を通ります。

ポート変更後もリモートデスクトップにつながらない場合は、選んだポート番号とステップ4の結果を添えてチケットを送信し、JUSTGテクニカルサポートへご連絡ください。

この回答は役に立ちましたか?

関連チュートリアル

Windows PowerShell PS> Test-NetConnection -ComputerName 203.0.113.10…PS> nc -vz 203.0.113.10 3389PS> Get-Service -Name TermService Windowsサーバー Windows Server VPSにリモートデスクトップ接続できない時のRDPトラブルシューティング Windows Server VPSでリモートデスクトップ(RDP)接続できない原因を、3389ポート確認・ファイアウォール・NLA/CredSSP・VNCコンソールで解決します。 9 分で読めます 2 チュートリアルを読む Windows PowerShell PS> Get-WinSystemLocalePS> Get-WinUILanguageOverridePS> Get-WinUserLanguageList Windowsサーバー Windows Serverの表示言語を日本語に変更・システムロケールとタイムゾーン設定(2016/2019/2022) Install-Languageや言語パックでWindows Serverの表示言語を変更し、システムロケール・ユーザー言語・タイムゾーンを設定します。 8 分で読めます 2 チュートリアルを読む Windows PowerShell PS> Update-HostStorageCachePS> Get-Disk | Select-Object Number, FriendlyName…PS> Get-Partition -DiskNumber 0 | Select-Object P… Windowsサーバー Windows ServerでCドライブを拡張する方法:ディスク増設後のボリューム拡張と新規ディスクの初期化 ディスク増設後にWindows ServerのCドライブを拡張し、回復パーティションの問題を解消、新しいデータディスクを初期化します。 8 分で読めます 2 チュートリアルを読む Windows PowerShell PS> Get-NetAdapterPS> Get-NetIPConfiguration -InterfaceAlias "Ether…PS> Get-NetIPInterface -InterfaceAlias "Ethernet"… Windowsサーバー Windows Serverに追加IPv4アドレスを設定し、IPv6を構成する方法 Windows ServerでGUI・PowerShell・netshを使い追加IPv4とIPv6を設定。SkipAsSource、ゲートウェイ、DNS、疎通確認まで解説。 10 分で読めます 2 チュートリアルを読む