Windowsファイアウォールでリモートデスクトップの接続元を絞る|PowerShellの手順

VPSのリモートデスクトップに、自分のIPアドレスからだけ接続できるようにするには、Windowsファイアウォールの規則の「リモートアドレス」を変えます。画面でもできますが、PowerShellのコマンドなら、確認・変更・元に戻す操作を同じ形で行えます。この記事では、コマンドと、筆者のPCで規則を確認した結果を示します。

(確認:Microsoft Learn「Set-NetFirewallRule」「New-NetFirewallRule」。規則の名前は、筆者のWindows 11(日本語)で Get-NetFirewallRule を実行して確認しました。筆者のPCはリモートデスクトップの接続先ではないため、規則は無効のままで、変更はしていません。Windows Serverでの表示名は、この記事では確かめていません)

作業の前に:締め出されないための準備

  1. VPS会社のブラウザから操作できるコンソールの場所を確認する(入れなくなった時の戻り道)
  2. 自分のIPアドレスを調べる。固定IPでない回線は変わることがある(VPSのリモートデスクトップを自分の固定IPだけに許可する方法)
  3. 変更は、今のリモートデスクトップの画面を開いたまま行い、別のウィンドウで新しく接続できるかを確かめてから閉じる

1. 今の規則を確認する

Get-NetFirewallRule -DisplayGroup "リモート デスクトップ" | ForEach-Object {
  $p = $_ | Get-NetFirewallPortFilter
  $a = $_ | Get-NetFirewallAddressFilter
  "{0} | {1} {2} | remote={3} | enabled={4}" -f $_.DisplayName, $p.Protocol, $p.LocalPort, ($a.RemoteAddress -join ','), $_.Enabled
}

筆者のPC(日本語のWindows 11)での結果です。

リモート デスクトップ - シャドウ (TCP 受信) | TCP Any | remote=Any | enabled=False
リモート デスクトップ - ユーザー モード (TCP 受信) | TCP 3389 | remote=Any | enabled=False
リモート デスクトップ - ユーザー モード (UDP 受信) | UDP 3389 | remote=Any | enabled=False
  • グループ名は「リモート デスクトップ」(「リモート」と「デスクトップ」の間に半角スペース)。英語のWindowsでは名前が違います
  • 接続に使うのは、TCPとUDPの3389の「ユーザー モード」の2つ
  • remote=Any は、どこからでも接続できる状態という意味です
  • 別のグループ「リモート デスクトップ (WebSocket)」もありました(筆者のPCでは無効)

2. 接続元を自分のIPに絞る

Microsoft Learnによると、Set-NetFirewallRule の -RemoteAddress には、IPv4やIPv6のアドレス、サブネット、範囲、または Any を指定できます。グループ全体は -DisplayGroup で指定できます。

# 203.0.113.10 は説明用の例(自分の固定IPに置き換える)。カンマで複数指定できる
Set-NetFirewallRule -DisplayGroup "リモート デスクトップ" -RemoteAddress 203.0.113.10

203.0.113.10 は、説明のための文書用のアドレスです。そのまま使わず、自分のIPに置き換えてください。予備の接続元も許可したい時は、-RemoteAddress 203.0.113.10,198.51.100.20 のようにカンマで並べます。

3. 確認する

  1. 手順1のコマンドをもう一度実行し、remote= の値が自分のIPになったか見る
  2. 今の画面を閉じずに、手元のPCで新しいリモートデスクトップ接続を開き、入れるか確かめる
  3. 入れたら、元の画面を閉じる(閉じる時は「切断」。切断とサインアウトの違い)

4. 元に戻す

Set-NetFirewallRule -DisplayGroup "リモート デスクトップ" -RemoteAddress Any

締め出された時は、VPSのコンソールからこのコマンドを実行します。手順はリモートデスクトップで締め出された時の戻し方にあります。

注意

  • VPS会社の管理画面のファイアウォール(パケットフィルター)と、Windowsのファイアウォールの両方が効きます。どちらで絞ったかを記録しておきます
  • リモートデスクトップのポート番号を変えている場合は、その番号の規則を確認します
  • この設定は、外からVPSに入ってくる接続の制限です。MT5が取引サーバーへ接続する通信は、別の向きです

まとめ

  • 確認は Get-NetFirewallRule -DisplayGroup "リモート デスクトップ"。初期状態は remote=Any
  • 絞るのは Set-NetFirewallRule ... -RemoteAddress 自分のIP、戻すのは -RemoteAddress Any
  • 変更前にコンソールの場所を確かめ、新しい接続で入れるのを確認してから画面を閉じる

本記事は設定方法の説明であり、安全を保証するものではありません。