Windowsファイアウォール:必要なポートを開放する
サービスのポートを開放する方法、アドレスによるアクセス制限、サーバーへのアクセスを失わずにルールが実際に機能するかを確認する方法を解説します。
更新日 2026年8月23日
Windows Serverを搭載したVDSでは、ファイアウォールがサービスとインターネットの間にある唯一のフィルターです。IPv4アドレスは公開されており、マシンの前には外部シールドがありません。したがって、ルールはシンプルです。意図的に開放したものだけが外部に公開されます。
現在開放されているもの
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction
Get-NetFirewallRule -Enabled True -Direction Inbound |
Where-Object Action -eq Allow |
Get-NetFirewallPortFilter | Select-Object Protocol, LocalPort -Unique
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess
最後のコマンドは、どのポートがそもそもリッスンしているかを示します。127.0.0.1 のみでリッスンしているサービスは、ルールに関係なく外部からアクセスできません。
ポートを開放する
Webサーバー:
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
信頼できるアドレス専用の独自サービス:
New-NetFirewallRule -DisplayName "App 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 `
-RemoteAddress 203.0.113.5,198.51.100.0/24 -Action Allow
アプリケーションが動的ポートを使用する場合は、ポートではなく特定のプログラムに対するルールのほうが信頼性が高くなります。
New-NetFirewallRule -DisplayName "MyApp" -Direction Inbound -Program "C:\apps\myapp.exe" -Action Allow
ルールの削除と表示:
Remove-NetFirewallRule -DisplayName "App 8080"
Get-NetFirewallRule -DisplayName "App 8080" | Format-List
閉じたままにすべきもの
アドレスによる制限なしで外部に公開しないでください。
| ポート | サービス | 理由 |
|---|---|---|
| 3389 | RDP | 最初の数時間でパスワードの総当たり攻撃が始まります。RDPの保護 を参照してください |
| 1433 | MS SQL | データベースはインターネットからアクセスできるべきではありません。MS SQL Server を参照してください |
| 5985, 5986 | WinRM | リモート管理用です。自分のアドレスからのみ許可してください |
| 445 | SMB | 大量攻撃の定番の標的です |
自分のコンピューターからデータベースにアクセスする必要がある場合は、1433を開放するのではなく、RDPセッション内でポート転送するか、VPNを設定してください。
確認
マシンの内側からリッスンしているポートが、外部からアクセスできるとは限りません。別のホストから確認してください。
nc -vz YOUR_ADDRESS 443
curl -I http://YOUR_ADDRESS
外部からは閉じているのに Get-NetTCPConnection がリスナーを表示する場合、問題はルールまたはネットワークプロファイルにあります。ルールが有効なプロファイル(通常は「パブリックネットワーク」)で作成されていることを確認してください。
よくある間違い
- 「デバッグのため」にファイアウォールを完全に無効化する。 作業が終わる前にマシンが見つかってしまいます。代わりに、アドレス制限付きの一時的なルールを作成してください。
- ポートを開放したが、アプリケーションのことを忘れている。 多くのサービスはデフォルトでlocalhostのみでリッスンしています。ルールは関係ありません。
- RDPから自分自身を締め出す。 その場合は、コントロールパネル
/hosting/vds/m/<id>の「コンソール」タブ、「スクリーン」モードでログインし、そこからルールを編集してください。 - 拒否ルールの上に許可ルールを作成する。 Windowsでは拒否が常に許可より優先されます。同じポートを持つブロックルールを探してください。
変更のたびに構成のスナップショットを保存しておくと便利です:
Get-NetFirewallRule -Enabled True | Export-Csv C:\fw.csv。そうすれば、サービスが突然応答しなくなったときに、何が変わったかを把握できます。