Windowsコマンドプロンプトでのファイアウォール設定の変更方法

Windowsのファイアウォール設定は、コマンドプロンプトの netsh advfirewall で確認・変更できます。本記事では、現在の設定の読み取りから、特定のポート・プログラムに限定したルールの追加、確認、取り消し、バックアップまでを説明します。接続できないときも、まず原因を切り分け、ファイアウォール全体を無効化せずに必要な通信だけを扱います。

実行前の注意:変更用コマンドは、自分が管理する検証端末、または管理責任者の承認を得た端末でのみ使用してください。許可範囲を広げるとサービスが露出し、遮断・削除・復元では業務通信やリモート管理が切断されます。設定の消失や、バックアップ後の変更を失う危険もあります。実機への適用前に変更内容・作業時間・復旧経路を決めてください。

対象はWindows 11およびWindows ServerのWindowsファイアウォールです。2026年10月20日にMicrosoft公式資料を確認して構成した手順であり、この記事のコマンドをWindows実機で実行検証したという意味ではありません。OS・組織ポリシーによる差は対象端末のヘルプと管理者の設定で確認してください。

目次

ファイアウォールの基本設定の確認方法

コマンドプロンプトを開く

スタートメニューで「cmd」を検索します。設定を変更する段階では「管理者として実行」を選択します。Windows Terminalを使う場合も、以下はコマンドプロンプト(cmd.exe)用の例です。1行ずつ結果を読み、エラーのまま次の変更へ進まないでください。

基本設定の確認コマンド

netsh advfirewall show allprofiles
netsh advfirewall show currentprofile
netsh advfirewall monitor show currentprofile

これらは読み取り用です。allprofiles でDomain・Private・Publicの設定を比較し、現在有効なプロファイルも確認します。有線・無線・VPNなどが併存する端末では、関係する接続すべてを確認し、「現在のネットワークは1つ」と決めつけないでください。

出力結果の解釈

  • State:プロファイルのファイアウォールが有効かどうか。
  • Firewall Policy:既定の受信・送信動作。通常は要求していない受信を遮断し、送信は許可しますが、組織が変更している場合があります。
  • Logging:ログの場所、容量、成功・破棄の記録設定。
  • プロファイル:Domainはドメイン認証されたネットワーク、Privateは信頼する私設ネットワーク、Publicは公共などの信頼しないネットワーク向けです。通信を通すためだけにPublicをPrivateへ変更しないでください。

既定の送信許可を使う通常のPCで、Web閲覧のためにTCP 80/443の受信許可を追加する必要はありません。受信規則は、その端末でサーバーとして待ち受ける通信に必要かを判断します。既定動作は Microsoftの概要 を参照してください。

netsh advfirewall firewall show rule name=all verbose
netsh advfirewall firewall add rule ?
netsh advfirewall firewall set rule ?
netsh advfirewall firewall delete rule ?

show rule name=all は一覧を表示するだけです。追加・変更・削除の構文は末尾の ? で確認できます。表示結果には内部IPや実行ファイルの場所が含まれるため、外部に貼り付ける場合は必要な範囲を選び、機密情報を伏せてください。

変更前にバックアップと作業条件を確認する

設定のバックアップ

変更前にポリシーを .wfw ファイルへエクスポートします。これはWindowsファイアウォールのポリシーファイルであり、XMLとして直接編集するファイルではありません。次の保存先フォルダーは事前に用意し、実際に書き込める場所へ置き換えてください。同名ファイルを使い回すと以前の記録を失うおそれがあるため、作業ごとに未使用の名前を付けます。

netsh advfirewall export "C:\FirewallBackup\before-ITtrip24125.wfw"
netsh advfirewall show allprofiles > "C:\FirewallBackup\before-ITtrip24125-profiles.txt"
netsh advfirewall firewall show rule name=all verbose > "C:\FirewallBackup\before-ITtrip24125-rules.txt"
dir "C:\FirewallBackup\before-ITtrip24125.wfw"

エクスポートの成功表示とファイルの存在を確認してから変更します。ファイルがあるだけで復元成功を保証するものではありません。バックアップにはネットワーク構成が含まれるため、アクセス制限した場所で保管し、承認なくクラウドへアップロードしないでください。GPO・MDMなどの集中管理設定は、管理元でも別途保全します。

以下の例で使う検証環境

  • 操作する端末の検証用IPv4アドレス:192.168.50.20。対象接続はPrivateで、組織管理の規則を上書きしない環境。
  • 受信テストを行う別端末:192.168.50.10。送信テストの宛先:192.168.50.30。
  • 承認済みの検証アプリ:C:\ITtripLab\server.exe と C:\ITtripLab\client.exe。実在する実行ファイルのフルパスへ置き換えます。この記事がアプリを提供・インストールするわけではありません。
  • 使用するルール名はすべて ITtrip-Lab-24125- で始め、既存規則と重複しないことを確認します。値を変更したら、確認・取り消し側も同じ値にそろえます。

例示IPは自分の端末や相手を自動的に指すものではありません。対象機器・IP・パス・ポート・プロファイルを管理者と確定してから置き換えてください。変更を自動実行する一括スクリプトとして、記事中の全コマンドをまとめて貼り付けないでください。

ファイアウォールの有効化と無効化の考え方

Microsoftはファイアウォールの無効化を推奨していません。特にWindows Defender Firewallサービス(MpsSvc)を停止する方法はサポートされず、OSやアプリの動作に影響します。接続確認のための全プロファイル無効化やサービス再起動は行わず、後述の規則・待ち受け・ログを調べます。根拠は Microsoftの無効化に関する注意 にあります。

無効になっているPrivateプロファイルを有効に戻すことが承認され、必要な業務・管理通信が確保されている場合の例は次のとおりです。既に有効なら実行不要です。リモート接続だけを復旧手段にせず、ローカルコンソール等を準備してください。

netsh advfirewall set privateprofile state on
netsh advfirewall show privateprofile state

この操作はPrivate全体の保護状態を変更します。DomainやPublicも無条件に続けて変更する手順ではありません。有効化後に問題が起きても反射的に全体をオフへ戻さず、承認済みの復旧計画に従って不足する規則を確認します。以降の検証例は、対象プロファイルが有効であることを前提にします。

特定のポートを開放する方法

TCPの受信規則を必要な範囲だけ追加する

まず同名規則がないか確認します。既に存在した場合は追加せず、その所有者と内容を確認します。重複した名前で再実行すると、後の変更・削除が複数規則に及ぶ原因になります。

netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose

検証端末のTCP 8080を、指定した検証アプリ・Privateプロファイル・送信元1台だけに許可する例です。バックアップと承認を確認した後に実行します。

netsh advfirewall firewall add rule name="ITtrip-Lab-24125-TCP8080-In" dir=in protocol=TCP localport=8080 profile=private localip=192.168.50.20 remoteip=192.168.50.10 program="C:\ITtripLab\server.exe" action=allow enable=yes
  • dir=in は受信、protocol=TCP と localport=8080 は端末側の待ち受けポートです。
  • profile=private はPrivateのみ、localip はこの端末の対象IP、remoteip は通信相手のIPです。
  • program は対象プロセスのフルパスです。ポート番号だけで、無関係なプログラムまで許可することを避けています。
  • 指定した条件は組み合わせて評価されます。この規則の追加自体がアプリを起動したり、ポートを待ち受け状態にしたりするわけではありません。

HTTP/HTTPSサーバーなら実際の構成に応じて80/443を検討しますが、必要性を確認せず両方を追加しません。また、狭い許可規則を追加しても、別の広い許可規則を狭めることはできません。既存規則と実効ポリシーを合わせて確認します。

ポート開放の確認:規則と待ち受けを分ける

netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose
netstat -ano -p tcp

規則の名前、Enabled、Direction、Profiles、Program、IP、ポートを確認します。netstat ではローカルアドレスの8080とTCPの LISTENING、PIDを調べます。ローカルの 127.0.0.1 だけで待ち受けているアプリは、別端末から接続できません。IPv4とIPv6も区別してください。

PIDが1234だった場合の照合例です。実際のPIDに置き換えます。

tasklist /fi "PID eq 1234"

待ち受けと規則を確認できたら、承認済みの別端末 192.168.50.10 からアプリ本来の接続方法で 192.168.50.20:8080 を確認します。規則が表示されるだけでは疎通成功の証明になりません。許可対象外の端末からのテストも承認された範囲で行い、意図しない許可がないか確認します。ルーターやクラウド側の制御はこのコマンドでは変更されません。

読み取りコマンドの詳細:netstat、tasklist。

追加した規則だけを削除して戻す

以下は、上の例で今回新規作成した規則だけを取り消すコマンドです。先に表示して対象が1件であることを確認してください。削除は一致した規則すべてに作用するため、名前と条件をそろえても同一条件の重複があれば複数削除されます。既存規則の削除には使いません。

netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose
netsh advfirewall firewall delete rule name="ITtrip-Lab-24125-TCP8080-In" dir=in protocol=TCP localport=8080 profile=private localip=192.168.50.20 remoteip=192.168.50.10 program="C:\ITtripLab\server.exe"
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose

対象が見つからない場合は条件を広げず、すでに削除済みか、作成時の値が違うかを調べます。取り消し後は他の業務通信も確認します。この削除は検証規則だけを除くもので、同じ通信を許可する別規則まで消すものではありません。

UDPポートの開放

UDPにはTCPのLISTENING表示や接続確立と同じ判定を使いません。必要なUDPサービスが実際にある場合だけ、別名の規則を作成します。ここではDNS(53番)を不用意に公開せず、検証アプリのUDP 18080を例にします。TCPの例とは独立した任意の作業です。

netsh advfirewall firewall show rule name="ITtrip-Lab-24125-UDP18080-In" verbose

同名規則がないことと、アプリ・通信相手を確認した後の追加例です。

netsh advfirewall firewall add rule name="ITtrip-Lab-24125-UDP18080-In" dir=in protocol=UDP localport=18080 profile=private localip=192.168.50.20 remoteip=192.168.50.10 program="C:\ITtripLab\server.exe" action=allow enable=yes
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-UDP18080-In" verbose
netstat -ano -p udp

UDPのローカルアドレス・ポートとPIDを確認し、アプリ固有の応答で疎通を判断します。検証終了後、今回作成した1件を表示して確認し、同じ条件で削除します。

netsh advfirewall firewall delete rule name="ITtrip-Lab-24125-UDP18080-In" dir=in protocol=UDP localport=18080 profile=private localip=192.168.50.20 remoteip=192.168.50.10 program="C:\ITtripLab\server.exe"
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-UDP18080-In" verbose

特定のプログラムに対してルールを設定する方法

前のTCP/UDP例の program がプログラム指定です。program を指定しても、受信か送信かを示す dir は省略しません。実行ファイル名だけではなくフルパスを使用し、パスに空白がある場合も二重引用符で囲みます。C:\*\server.exe のようなワイルドカードは使えません。

実際の通信を担うプロセスが、起動用ランチャー・別サービス・実行ホストである場合があります。タスクマネージャー等でPIDと実行ファイルを確認し、別アプリや共有ホストを広く許可しないようにします。アプリ更新でパスが変わった場合も再確認が必要です。

ルール単位で一時停止・再開する

TCP例の規則をまだ削除していない場合に限り、同名・同条件が1件と確認してから、その規則だけを無効化できます。これはファイアウォール全体の無効化ではありません。

netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose
netsh advfirewall firewall set rule name="ITtrip-Lab-24125-TCP8080-In" dir=in protocol=TCP localport=8080 profile=private localip=192.168.50.20 remoteip=192.168.50.10 program="C:\ITtripLab\server.exe" new enable=no
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose

この例の変更前は enable=yes なので、検証を再開するときは次で元の有効状態へ戻せます。作業が終わった場合は再開せず、前節の削除手順で片付けます。削除済みなら set では復活しません。

netsh advfirewall firewall set rule name="ITtrip-Lab-24125-TCP8080-In" dir=in protocol=TCP localport=8080 profile=private localip=192.168.50.20 remoteip=192.168.50.10 program="C:\ITtripLab\server.exe" new enable=yes
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8080-In" verbose

変更前の状態を記録せず既存規則を有効化しないでください。set rule も一致する複数規則に作用します。追加・変更・削除の仕様は Microsoftのnetsh advfirewallリファレンス で確認できます。

応用例:送信の制限と管理用アクセス

特定プログラムの送信を限定してブロックする

通常の既定設定では送信は許可されます。そのため、送信の許可規則を1本追加しても「そのアプリ以外は禁止」にはなりません。また、明示的な遮断規則を許可規則の追加だけで打ち消すこともできません。

次は 192.168.50.20 上の検証用client.exeから、検証相手 192.168.50.30 のTCP 8443への送信だけを止める例です。アプリの他の宛先・プロトコルまで遮断するものではありません。業務アプリには転用せず、事前に通信断の影響を確認します。

netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8443-Out-Block" verbose

同名規則がないことを確認した後の追加と確認です。送信先のポートなので、ここでは localport ではなく remoteport を指定します。

netsh advfirewall firewall add rule name="ITtrip-Lab-24125-TCP8443-Out-Block" dir=out protocol=TCP remoteport=8443 profile=private localip=192.168.50.20 remoteip=192.168.50.30 program="C:\ITtripLab\client.exe" action=block enable=yes
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8443-Out-Block" verbose

アプリの検証終了後、今回作成した1件を確認して取り消します。遮断を解除すると通信が再開し得ることにも注意してください。

netsh advfirewall firewall delete rule name="ITtrip-Lab-24125-TCP8443-Out-Block" dir=out protocol=TCP remoteport=8443 profile=private localip=192.168.50.20 remoteip=192.168.50.30 program="C:\ITtripLab\client.exe"
netsh advfirewall firewall show rule name="ITtrip-Lab-24125-TCP8443-Out-Block" verbose

管理用リモートアクセスの制限

RDPなどの管理通信を許可する場合は、組織指定のVPN・ゲートウェイ・管理ネットワークと接続元を前提に設計します。3389番をすべての接続元・全プロファイルへ開くことは、接続確認の代わりになりません。既存のRDP規則、TCP/UDP、認証設定、境界側の制御も確認し、管理接続が途絶えた場合の別経路を準備してください。

接続元を絞った規則を新しく足すだけでは、既存の広い許可規則は残ります。「このIPだけ許可」と断言するには、適用される規則全体の点検が必要です。特に自分が使用中のリモート接続の規則を、確認なしに削除・無効化しないでください。

不要なサービスと規則を区別する

ポートを遮断しても、FTPなどのサービスそのものが停止・アンインストールされるわけではありません。不要サービスの停止は、そのサービスの依存関係と運用手順で別途判断します。規則を減らせば必ず高速化するという保証もありません。所有者・目的・期限を記録し、根拠のある規則だけを見直します。

セキュリティイベントのログ記録

最初に現在のログ設定を確認する

netsh advfirewall show privateprofile logging

ログの保存先と記録の有効・無効を記録します。以下は、Privateの破棄ログが変更前に無効であり、短時間だけ有効化することが承認された場合の例です。既に有効なら設定変更は不要です。GPO・MDMが管理している場合は管理元で調整します。

netsh advfirewall set privateprofile logging droppedconnections enable
netsh advfirewall show privateprofile logging

問題を再現した時刻、送信元・宛先IP、ポート、プロトコルとログを照合します。既定の保存先は %windir%\system32\logfiles\firewall\pfirewall.log ですが、実際の出力に表示された場所を使用してください。記録がないことだけでファイアウォールが原因ではないと断定しません。

今回だけ有効にし、変更前が無効だったことを記録で確認できる場合の取り消しは次のとおりです。元から有効だった監査ログを止めないでください。

netsh advfirewall set privateprofile logging droppedconnections disable
netsh advfirewall show privateprofile logging

ログの上限によって古い記録は失われるため、容量・保管期間・必要な証跡の保存を計画します。成功通信の記録追加やファイル名・容量の変更は、既存の監視運用と合わせて判断します。ログにはIPなどの情報が含まれます。詳細は Microsoftのログ設定ガイド を参照してください。

ファイアウォール設定の復元

今回追加したルールの取り消しは、各節の名前と条件を一致させた削除を優先します。.wfw のインポートは1件だけを元に戻す操作ではありません。現在のポリシーを広く置き換え、バックアップ後に追加・修正した規則を失ったり、現在の管理接続を切断したりする危険があります。

全体復旧が必要と管理者が判断し、復元対象のファイル・端末・時点・作業時間が承認され、現在の設定も別名で保全し、ローカルコンソール等を確保した場合の参考構文です。通常の疎通トラブルで試すコマンドではありません。

netsh advfirewall import "C:\FirewallBackup\before-ITtrip24125.wfw"

組織管理のポリシーは再適用され得るため、インポートだけでGPO・MDMの状態まで戻るとは限りません。復旧後は各プロファイル、必要な規則、業務・管理通信を確認します。

netsh advfirewall show allprofiles
netsh advfirewall firewall show rule name=all verbose

設定のリセットや全規則削除は、カスタム規則・管理用経路を失う原因になります。本記事では通常の対策として実行例を示しません。バックアップがあっても、遠隔接続を失えば復元コマンドを実行できないことに注意してください。

トラブルシューティング:設定変更時のよくある問題と対策

設定が反映されない

まずコマンドの結果と管理者権限を確認します。権限不足・構文エラーを放置せず、add rule ? などで必須項目を照合してください。dir の欠落、実行ファイルの違い、プロファイルやIPの不一致がないか確認します。設定変更のためにMpsSvcを再起動する手順は不要です。

netsh advfirewall show allprofiles
netsh advfirewall monitor show firewall
gpresult /scope computer /r

monitor で実行時ポリシーを確認します。gpresult は適用されたグループポリシーの手掛かりですが、MDM設定を含むすべての実効ファイアウォール設定を証明するものではありません。必要なら wf.msc の「監視」画面と管理元のGPO・MDM設定を管理者に確認してもらいます。

ローカル規則のマージが禁止されたプロファイルでは、通常のローカル追加規則が保存・表示されても期待する許可に使われない場合があります。ローカルでルールを追加し続けたり、マージ設定を勝手に変更したりせず、承認された管理元から配布します。なお、ローカルグループポリシー由来の規則・設定には別の扱いがあり、「ローカルの設定はすべて無効」と一括りにはできません。

参考:ローカルポリシーのマージ、gpresult。

許可規則を追加しても通信できない

  • 通常の許可・遮断規則では、明示的な遮断が競合する許可より優先します。Windowsファイアウォールに、管理者が規則を上から下へ並べ替えて優先させる仕組みはありません。
  • 既定の受信遮断は必要な許可規則で例外化できますが、「すべての受信接続をブロック」の設定では許可規則も通りません。設定を確認せず解除しないでください。
  • 対象プロファイル、方向、IPv4/IPv6、プログラム、送信元・宛先、ローカル・リモートポートを照合します。アプリが待ち受けていない場合は、許可規則を増やしても解決しません。
  • DNS解決、ルーティング、VPN、NAT、相手側やクラウド側の制御、アプリの認証・TLSエラーも切り分けます。別の原因をファイアウォール無効化で隠さないでください。

優先関係は通常の規則についての説明です。IPsecの認証付きバイパスなどを含む組織の設計は別途確認します。根拠:Microsoftのルール優先関係。

変更後に別の通信が失敗した

変更記録を見て、今回作成した検証規則・今回変更したログ設定など、影響が確認できる範囲だけを戻します。削除前には必ず対象を表示し、名前の重複を確認します。元の設定が不明な既存規則を、推測で削除したり一括で有効化したりしないでください。

性能問題がある場合も、CPU・アプリ・通信量・ログ容量などを先に確認します。監査ログを止める、不要そうな規則をまとめて消す、全体リセットを行う、といった操作を一般的な高速化手段にはしません。

まとめ

CMDでのファイアウォール管理は、現状確認、変更前バックアップ、必要な通信への限定、変更後の実効状態・疎通確認、個別の取り消しを1組で考えます。dir・プロトコル・ポート・プロファイル・IP・プログラムを明示し、今回作成した規則を識別できる名前を付けましょう。全体無効化やリセットではなく、待ち受けと規則、管理ポリシーの違いを確認することが、通信の確保と安全な運用につながります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次