Windowsファイアウォールでリモートデスクトップの接続元を絞る|PowerShellの手順
VPSのリモートデスクトップに、自分のIPアドレスからだけ接続できるようにするには、Windowsファイアウォールの規則の「リモートアドレス」を変えます。画面でもできますが、PowerShellのコマンドなら、確認・変更・元に戻す操作を同じ形で行えます。この記事では、コマンドと、筆者のPCで規則を確認した結果を示します。
(確認:Microsoft Learn「Set-NetFirewallRule」「New-NetFirewallRule」。規則の名前は、筆者のWindows 11(日本語)で Get-NetFirewallRule を実行して確認しました。筆者のPCはリモートデスクトップの接続先ではないため、規則は無効のままで、変更はしていません。Windows Serverでの表示名は、この記事では確かめていません)
作業の前に:締め出されないための準備
- VPS会社のブラウザから操作できるコンソールの場所を確認する(入れなくなった時の戻り道)
- 自分のIPアドレスを調べる。固定IPでない回線は変わることがある(VPSのリモートデスクトップを自分の固定IPだけに許可する方法)
- 変更は、今のリモートデスクトップの画面を開いたまま行い、別のウィンドウで新しく接続できるかを確かめてから閉じる
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のコマンドをもう一度実行し、remote= の値が自分のIPになったか見る
- 今の画面を閉じずに、手元のPCで新しいリモートデスクトップ接続を開き、入れるか確かめる
- 入れたら、元の画面を閉じる(閉じる時は「切断」。切断とサインアウトの違い)
4. 元に戻す
Set-NetFirewallRule -DisplayGroup "リモート デスクトップ" -RemoteAddress Any
締め出された時は、VPSのコンソールからこのコマンドを実行します。手順はリモートデスクトップで締め出された時の戻し方にあります。
注意
- VPS会社の管理画面のファイアウォール(パケットフィルター)と、Windowsのファイアウォールの両方が効きます。どちらで絞ったかを記録しておきます
- リモートデスクトップのポート番号を変えている場合は、その番号の規則を確認します
- この設定は、外からVPSに入ってくる接続の制限です。MT5が取引サーバーへ接続する通信は、別の向きです
まとめ
- 確認は
Get-NetFirewallRule -DisplayGroup "リモート デスクトップ"。初期状態は remote=Any - 絞るのは
Set-NetFirewallRule ... -RemoteAddress 自分のIP、戻すのは-RemoteAddress Any - 変更前にコンソールの場所を確かめ、新しい接続で入れるのを確認してから画面を閉じる
本記事は設定方法の説明であり、安全を保証するものではありません。


