Intro
あるWindowsサーバに対して、
- 社内NWのポート制限などの事情により、デフォルトの3389番ポート以外のポートでRDP接続したい
- 一方で、すでに3389番ポートで接続できているユーザに対して影響を与えたくない
といった事情により、複数ポートでRDP接続を受け付けたい場合があります。
ググって出てくる日本語の記事類だと「RDPのポート変更」について記載されたものはありますが、これでは2番目の要求事項を満たすことはできません。
StackExchangeで参考になるQ&Aを見つけたので、これをベースにしつつ以下の方法でできることを確認しました。
注:本記事の内容を参考にしてRDP接続変更を行った際の設定失敗による接続不可や、あなたの会社の情シス部門・セキュリティ監査部門との関係について一切の責任を負いません。自己責任でお願いいたします。
やること
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
をコピーしてHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-XXX
(XXX : 任意の名称)を作成 -
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-XXX\PortNumber
の値を、新たに受け付けたいポート番号に変更する - Windowsファイアウォールの設定で、当該ポートのインバウンド接続を許可するルールを追加する
あとは、AWS上のサーバであればセキュリティグループやNACLの許可等も適宜。
コマンド例 : 443番ポートを新たに開けたい場合
レジストリのコピーとポート番号変更
Windows Server 2016 Datacenterにて動作確認しました。
# レジストリのコピー
REG COPY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-443" /s
# コピー先のレジストリキー上でポート番号変更。 0x1bbのところはポート番号の16進数表記
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-443" /v PortNumber /t REG_DWORD /d 0x1bb /f`
# ファイアウォールの許可ルール追加 : 参考記事[2]より
New-NetFirewallRule `
-Name Open-Port-443 `
-DisplayName Open-Port-443 `
-Description "Open-Port-443" `
-Enabled True `
-Profile Any `
-Direction Inbound `
-Action Allow `
-EdgeTraversalPolicy Block `
-LooseSourceMapping $False `
-LocalOnlyMapping $False `
-OverrideBlockRules $False `
-Program Any `
-LocalAddress Any `
-RemoteAddress Any `
-Protocol TCP `
-LocalPort 443 `
-RemotePort Any `
-LocalUser Any `
-RemoteUser Any