リモートサーバーがかつてないほど普及するにつれ、誰もがRDPアクセスをより安全に保つ方法を模索しています。デフォルトポート3389はほぼすべてのユーザーの標的であり、そのままにしておけばハッカーはいつでも攻撃を仕掛けてきます。そのため、RDPポートの変更は良いアイデアであるだけでなく、セキュリティレベルの向上のためにはほぼ必須と言えるでしょう。しかし、Windowsでは特に初めての場合、この変更が分かりやすく簡単には説明されていないという問題があります。Windowsは、この変更を可能な限り分かりにくくしようとしているように感じるかもしれません。しかし、心配はいりません。これは可能ですし、Windowsの管理者でなくても実行できます。ポートを変更すれば、ハッカーが開いているポート3389をスキャンすることが難しくなり、攻撃を回避できる可能性が高まります。つまり、特にサーバーが24時間365日インターネットに接続されている場合は、ちょっとした変更で安心感が得られます。
Windows ServerのRDPポートを変更する方法
RDPポートを変更する簡単な方法はいくつかあります。レジストリを使う方法とPowerShellを使う方法です。どちらも問題なく動作しますが、レジストリをいじるのは注意が必要です。注意深く行わないと、あまり楽しいものではありません。ある設定では非常にスムーズに動作しますが、別の設定では…まあ、時々少し不安定になることがあります。変更後は、RDPサービスを再起動してファイアウォールルールを更新することを忘れないでください。この最後の手順は、多くの人がつまずく原因になります。特にファイアウォールルールを忘れたり、サービスを適切に再起動しなかったりすると、問題が発生しやすくなります。
方法1: レジストリエディターを使用してRDPポートを変更する
これは古典的な方法です。最も直接的な方法ですが、レジストリの編集を間違えると問題が発生する可能性があるため、細心の注意が必要です。なぜこの方法が機能するのでしょうか?それは、ポート番号がレジストリキーの下に保存されているからです。このポート番号を変更すると、WindowsはRDP接続の受信ポートを別のポートでリッスンするように指示されます。この設定はリモート接続時に常に適用されるため、正しく設定すれば、ポート3389を探すスキャナーに対する小さなデジタルロックのようなものです。
- スタートメニューを開き、「レジストリエディター」と入力して開きます。ユーザーアカウント制御(UAC)がポップアップ表示された場合は、「はい」をクリックします。
- 次のアドレスに移動します:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
最も簡単な方法は、フォルダーを段階的に展開するか、レジストリ エディターのアドレス バーに直接貼り付けることです。 - 右側で「PortNumber」を見つけてダブルクリックして編集します。「Base」で「Decimal」を選択してください。
- 値のデータを任意のポート番号に変更します。3390 や 50000 などのランダムな空きポートを選択します (すでに使用されているポートは選択しないでください)。たとえば、3390 と入力します。
- [OK]をクリックして、レジストリ エディターを閉じます。
これはポートを*設定*するだけです。まだポートを有効化したり、Windowsにファイアウォールの通過を許可するよう指示したりはしていません。そのため、次のステップは、Windowsが新しいポートをリッスンしていること、そしてファイアウォールがブロックしていないことを確認することです。多くの人がここでつまずきます。
方法2: PowerShellを使用してRDPポートを変更する
コマンドラインでの作業に慣れている方や、もっと手早く済ませたい方は、PowerShell が便利です。レジストリを手動で操作するよりも、より現代的でリスクも少ないですが、システム設定をいじるので、管理者として実行する必要があります。
- キーを押してWindows、「Windows PowerShell」と入力し、右クリックして、「管理者として実行」を選択します。
- ユーザー アカウント制御のプロンプトが表示されたら、[はい]をクリックします。
- 次のコマンドを使用し、[ポート番号] を3390 などのカスタム ポートに置き換えます。
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'PortNumber' -Value 3390
これを実行した後、ファイアウォール ルールを更新する必要があることに注意してください。
RDPポートの変更を実装する方法
ポートを変更するだけでは効果がありません。Windowsに新しいポートのトラフィックを許可するように指示する必要があります。そうしないと、リモート接続がハングアップしてしまいます。対処方法は次のとおりです。
- セキュリティが強化されたWindows Defenderファイアウォールを開きます。 を押して「Windows Defenderファイアウォール」とWindows + R入力
firewall.cpl
または検索し、Enterキーを押すとすぐに開きます。 - [受信の規則]をクリックし、[新しい規則]を選択します。
- ルールの種類として「ポート」を選択し、 「次へ」をクリックします。これはTCP/UDPトラフィックなので、「TCP」を選択します。次に、「特定のローカルポート」を選択し、新しいポート番号を入力します。
- 「次へ」をクリックし、「接続を許可する」を選択します。このルールをドメイン、プライベート、パブリックのどのネットワークに適用するかを決定します。通常、LAN 内にいる場合はプライベートで十分ですが、リモートの場合は 3 つすべてに適用する必要がある場合があります。
- 「RDPカスタムポート」などの名前を付けて、「完了」をクリックします。手順を繰り返しますが、必要に応じてUDPを選択します。特に、RDPにUDPを使用している場合は重要です。
- 最後に、リモート デスクトップ サービスサービスを再起動します。 を押してWindows + Rと入力し
services.msc
、 Enter キーを押し、リモート デスクトップ サービスを見つけて右クリックし、再起動 を選択します。
はい、少し手間がかかります。でも、私の環境では、全て試した後にうまくいきました。でも、別の環境では、Windows が時々頑固なので、2回再起動する必要がありました。重要なのは、新しいポートがファイアウォールを通過できるようにし、サービスを再起動することです。さらに、変更後はポート番号を再度確認してください。Windows は新しいリスニングポートを必ずしも明確に通知してくれるとは限らないからです。
Windows Server の RDP ポートを確認する方法
ここまで面倒な作業が終わったら、変更内容を検証しましょう。一番簡単な方法は、PowerShellを管理者として実行し、以下を実行するだけです。
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber"
これにより、Windowsが現在リッスンしているポート番号が表示されます。設定したものと一致していることを確認してください。一致していない場合は、レジストリの変更が反映されていないか、他のポリシーによって上書きされている可能性があります。
結びの言葉
これらの手順をすべて実行すると、RDPポートがデフォルトからより分かりにくいポートに変更されます。ただし、ファイアウォールでポートを開き、サービスを再起動する必要があります。そうしないと、リモートセッションが機能しなくなります。理由は不明ですが、サーバーによっては、すべてが機能するまでに数回の再起動が必要になる場合があります。しかし、全体として、この小さな調整はセキュリティ対策を大幅に強化できます。
まとめ
- レジストリを変更するか、PowerShellを使用して新しいポートを設定します
- 新しいポートのトラフィックを許可するようにファイアウォールルールを更新しました
- 変更を適用するためにリモート デスクトップ サービスを再起動しました
- PowerShellコマンドで新しいポートを検証しました
まとめ
これで、誰かのリモート環境のプライバシーが少しでも向上することを願っています。完璧なセキュリティではありませんが、一般的なスキャナやスクリプトキディの侵入を少しでも防ぎたいのであれば、間違いなく良い対策です。カスタムポートは必ず記録し、変更するたびにファイアウォールのルールも更新してください。頑張ってください。皆さんのマシンでもうまくいくことを願っています。少なくとも私の場合はうまくいきました!