29歳、離婚しました。

家事は元妻にまかせっきり。そんな生活力ゼロ男の離婚後の生活を綴ったブログです。著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。

PowerShellを使ってファイアウォールのプロファイルや受信規則を設定する方法

   

このブログでは、アフィリエイト広告を利用しています。

PowerShellを使って、ファイアウォールのプロファイルや受信規則を設定したい!

以前にこのブログでは、GPOを使ってWindowsのファイアウォールの規則を設定したり、有効化を強制する方法について、ご紹介しています。

参考:GPOでWindowsのファイアウォールを設定したり、有効化を強制する方法

Active Directoryを使用しているドメイン環境にて、多数のPCに対して同様の設定を行う場合には、GPOを使った設定を行う方法がおすすめです。

しかし、数台のPCに対してのみ同様の設定を行いたいケースや、WorkGroup環境(非AD環境)のPCに対して設定を行う場合など、PowerShellを使ってファイアウォールの設定を行いたいこともあるでしょう。

そこで今回は、PowerShellを使ってファイアウォールを有効化・無効化したり、プロファイルや受信規則の設定を行う方法をご紹介します!

はじめに

Windows OSでは、Windowsの標準機能のファイアウォール機能である『Windows Defender ファイアウォール』や、『セキュリティが強化されたWindowsファイアウォール』の他に、サードパーティー※が作成しているウイルス対策ソフトウェアに付属するファイアウォールも使用可能です。

※シマンテックさんやカスペルスキーさんなど。

しかし本エントリーでご紹介しているのは、Windowsの標準機能のファイアウォールの設定方法であり、サードパーティー製品のファイアウォール機能の設定はできません。

また、ご紹介している設定方法は、Windows 10 1909(PowerShellのバージョン:5.1.18362.145) Professionalの環境にて、正常に動作することを確認しています。

ですが以前のバージョンのWindowsでは、ファイアウォールの規則名など一部の項目について異なっている、あるいは使用できないコマンドレットをご紹介しているかもしれません。

あらかじめご了承ください。

PowerShellを使って、ファイアウォールを有効化したり無効化する方法

Windows 10に標準搭載されているファイアウォール機能である『Windows Defender ファイアウォール』では、プライベート、パブリック、ドメインなどのプロファイルが定義されています。
そしてファイアウォール機能の有効化と無効化設定については、プロファイルごとに設定を行う仕組みです。

PowerShellを使って、ファイアウォールの有効化や無効化を設定する場合は、PowerShellの『Set-NetFirewallProfile』コマンドレットを使用します。

たとえば『プライベート』プロファイルのファイアウォールを無効化したいときは、以下コマンドを実行してください。

複数のプロファイルに対して同時に設定することも可能であり、『プライベート』と『パブリック』プロファイルのファイアウォールを無効化したいときは、以下コマンドを実行します。

また『プライベート』プロファイルのファイアウォールを有効化したいときは、『-Enabled』パラメーターに『true』を指定してください。

すべてのプロファイルのファイアウォールを対象にして設定を行う場合には、プロファイルを指定せずにコマンドを実行すればOKです。

ファイアウォールのプロファイル設定を変更する方法

ファイアウォールのプロファイル設定の変更も、『Set-NetFirewallProfile』コマンドレットを使用することで可能です。
これは、『Set-NetFirewallProfile -Profile <変更対象のプロファイル名> <変更内容>』という形式でコマンドを実行します。

たとえば『プライベート』プロファイルの『破棄されたパケットをログに記録する』を、『はい』に変更したい場合には、以下コマンドを実行してください。

その他設定変更に使用可能な各種パラメーターについては、MicrosoftさんのDocsの記載内容を参照ください。

参考:Microsoft – Docs Set-NetFirewallProfile

ファイアウォールのプロファイル設定を取得・表示する方法

ファイアウォールの各プロファイルに設定されている設定情報を取得・表示することも、もちろん可能です。

『プライベート』プロファイルの設定情報を取得したい場合には、『Get-NetFirewallProfile -Profile private』というコマンドを実行します。

『private』プロファイルに対して、『Get-NetFirewallProfile』コマンドレットを実行した様子

また、すべてのプロファイルの設定情報を一括で取得したい場合には、プロファイル名を指定せずにコマンドを実行してください。

ただし全プロファイルの設定情報を一括取得した場合には、取得される情報が多く、少し見づらい結果となります。
そのため、『Format-Table』コマンドレットを併用し、結果情報を一覧表形式で取得する方法を利用すると良いでしょう。

さらに各プロファイルの特定の設定情報のみを一覧表形式で取得したいときは、対象の設定情報を指定してコマンドを実行してください。(下記実行例では『Name』と『Enabled』、『LogAllowed』、『LogBlocked』の情報を指定して取得。)

ファイアウォールの規則(『受信の規則』・『送信の規則』)を追加・編集(変更)・削除する方法

『受信の規則』や『送信の規則』など、ファイアウォールの規則を追加・編集(変更)・削除、また有効化したり無効化したい場合には、以下のような方法で設定を行います。

ファイアウォールの規則を追加する方法

PowerShellを使ってファイアウォールの規則を追加する場合には、『受信の規則』と『送信の規則』のどちらも『New-NetFirewallRule』コマンドレットを使用します。

具体的な使用方法については、以下実行例を参考にすると良いでしょう。

尚、ローカルポートの設定には、以下のようなキーワードを設定可能です。

  • すべてのポート:-LocalPort Any
  • RPC 動的ポート:-LocalPort RPC
  • RPC エンドポイントマッパー:-LocalPort RPCEPMap
  • IPHTTPS:-LocalPort IPHTTPSIN

ファイアウォールの規則を編集(変更)する方法

ファイアウォールの規則を編集(変更)する際は、『Set-NetFirewallRule -DisplayName <変更対象の規則の名前> <変更内容>』という形式でコマンドを実行してください。

たとえば『Allow-WebAccess』という名称の規則のローカルポートの設定を、『80』および『443』に変更するケースでは、以下コマンドを実行します。

また以下コマンドを実行することで、『Allow-Inbound-TCP443』という名称の規則のリモートアドレスの設定が、『192.168.1.0/24』に変更されます。

その他設定変更に使用可能な各種パラメーターについては、MicrosoftさんのDocsの記載内容を参照ください。

参考:Microsoft – Docs Set-NetFirewallRule

ファイアウォールの規則を削除する方法

不要になったファイアウォールの規則は、『Remove-NetFirewallRule』コマンドレットを使って削除しましょう。

尚、『Remove-NetFirewallRule』コマンドレットを使った削除操作では、『-DisplayName』パラメーターに指定した値と一致する名前を持つ規則が削除されます。
また、『-Group』パラメーターに指定したグループが設定されている規則が削除されます。
条件に合致する規則が複数あった場合には、複数の規則が削除されてしまうため、実行する際はご注意ください。

ファイアウォールの規則の有効化と無効化の設定方法

ファイアウォールの規則を有効化したり無効化したいときは、『Enable-NetFirewallRule』や『Disable-NetFirewallRule』コマンドレットを使用します。

具体的な設定方法については、以下実行例を参考になさってください。

『Enable-NetFirewallRule』と『Disable-NetFirewallRule』コマンドレットでは、『Remove-NetFirewallRule』コマンドレットと同じように、条件に合致する規則が複数あった場合には、複数の規則に対して変更が適用されます。

ファイアウォールの規則の設定情報を取得する方法

特定のファイアウォールの規則の設定情報を取得したいときは、『Get-NetFirewallRule -DisplayName <取得対象の規則の名前>』や『Get-NetFirewallRule -Group <取得対象の規則のグループ名称>』という形式のコマンドを実行します。

また詳細な情報を取得したいときは、『Format-List』コマンドレットを併用し、以下のようなコマンドを実行してください。

ファイアウォールの規則に設定されているポートフィルターやアドレスフィルターの情報を取得する方法

実は、先ほど紹介した『Get-NetFirewallRule』コマンドレットの実行例では、GUI上の『プロトコルおよびポート』タブや『スコープ』タブで設定・確認できる設定情報を取得できません

これら、ファイアウォールの規則のフィルター設定についての情報を取得したい場合には、以下のようなコマンドを実行する必要があります。(以下実行例では、『Allow-Inbound-TCP443』という名称の規則のフィルター設定を取得。)

ファイアウォールの規則の一覧情報を取得する方法

現在設定されているファイアウォールの規則の一覧情報を取得する場合には、『Get-NetFirewallRule』コマンドレットを規則の名前を指定せずに実行します。

ただしこのコマンドレットを単体で実行した場合は結果が見づらいため、『Format-Table』コマンドレットの併用をおすすめします。
また併せて『-Direction』パラメーターを使って『受信』/『送信』の片方を指定し、『Enabled』と『Action』でソートした結果を取得することで、より見やすい結果表示となることでしょう。

あらかじめ定義されているファイアウォールの設定について

初期設定状態のWindowsでは、あらかじめ多数のファイアウォールの規則が定義されています。

これら規則の設定変更や有効化、削除については、ファイアウォールの規則(『受信の規則』・『送信の規則』)を追加・編集(変更)・削除する方法でご紹介している設定方法を使うことで、対応可能です。

たとえば、グループポリシーのリモート更新を設定する際は、あらかじめ定義されている以下ファイアウォール規則の有効化が必要です。

  • Windows Management Instrumentation (WMI 受信)
  • スケジュールされたリモート タスク管理 (RPC)
  • スケジュールされたリモート タスク管理 (RPC-EPMAP)

参考:グループポリシーをただちに適用する方法や更新間隔の設定方法、リモート更新する方法

上記規則をPowerShellを使って有効化するケースでは、以下コマンドを実行すればOKです。

以上、参考になさってくださーい!

 - Windows, デジタル・家電, ネットワーク

ピックアップ コンテンツ&スポンサーリンク