PowerShellを使ってWindowsファイアウォールのルールを管理する方法

Windows DefenderファイアウォールはすべてのWindowsコンピュータにプリインストールされています。特定のアプリケーションがインターネットにアクセスするのをブロックするなど、さまざまな目的でWindowsファイアウォールにルールを作成できます。この記事では、WindowsファイアウォールのルールをPowerShellで管理する方法について説明します。

PowerShellを使ってWindowsファイアウォールのルールを管理する方法

Windows Defenderファイアウォールと高度なセキュリティUIを使用することで、Windowsファイアウォールのルールを簡単に構成できます。コントロールパネルから起動できます。また、PowerShellを使ってWindowsファイアウォールのルールを管理することもできます。この記事では、その方法について説明します。

PowerShellでWindowsファイアウォールのルールを管理するには、NetSecurityモジュールの جزءであるNetFirewallRuleコマンドレットを使用する必要があります。Windows PowerShellで次のコマンドを実行することで、すべてのNetSecurityコマンドレットを表示できます:

Get-Command -Module NetSecurity

Windows PowerShellには次の3種類のプロファイルがあります:

  • ドメインプロファイル
  • プライベートプロファイル
  • パブリックプロファイル

既定では、Windowsファイアウォールはこの3つのプロファイルすべてに対してオンのままです。コントロールパネルからWindows Defenderファイアウォールと高度なセキュリティUIを開くか、実行コマンドボックスで次のコマンドを使用することで、これを見ることができます:

wf.msc

Windows PowerShellを管理者として起動する必要があることに注意してください。そうしないと、コマンドは実行されず、PowerShellでエラーが発生します。

特定のWindowsファイアウォールプロファイルの設定を表示したい場合は、次のコマンドを使用します:

Get-NetFirewallProfile -Name <プロファイル名>

上記のコマンドでは、プロファイルの名前を正しく入力します。たとえば、Windows Defenderファイアウォールでドメインプロファイルの設定を表示したい場合は、コマンドは次のようになります:

Get-NetFirewallProfile -Name Domain

PowerShellを使用してWindowsファイアウォールを有効または無効にする

PowerShellを使用してWindowsファイアウォールを有効または無効にする方法を見てみましょう。すべてのプロファイルに対してWindowsファイアウォールを無効にしたい場合は、次のコマンドを使用します:

Set-NetFirewallProfile -All -Enabled False

特定のプロファイルに対してWindowsファイアウォールを有効または無効にしたい場合は、上記のコマンドのAllをそのプロファイル名に置き換える必要があります。

たとえば、パブリックプロファイルに対してWindowsファイアウォールを無効にしたい場合は、コマンドは次のようになります:

Set-NetFirewallProfile -Profile Public -Enabled False

次のコマンドを使用することで、Windowsファイアウォールプロファイルのステータスを確認できます:

Get-NetFirewallProfile | Format-Table Name, Enabled

上記のスナップショットでわかるように、PowerShellではWindowsファイアウォールパブリックプロファイルのステータスがFalseと表示されており、これはそのプロファイルに対してWindowsファイアウォールが無効であることを意味します。

Windows Defenderファイアウォールと高度なセキュリティUIでも同じことを確認できます。無効になっているプロファイルを有効にしたい場合は、Falseの代わりにTrueを使用する必要があります。たとえば、ここではWindowsファイアウォールでパブリックプロファイルを無効にしました。これを再度有効にするには、コマンドは次のようになります:

Set-NetFirewallProfile -Profile Public -Enabled True

すべてのWindows Defenderプロファイルを無効にして、もう一度すべてを有効にしたい場合は、次のコマンドを使用します:

Set-NetFirewallProfile -All -Enabled True

PowerShellを使用してWindowsファイアウォールのルールを作成および管理する

次に、PowerShellを使用してWindowsファイアウォールのルールを作成および管理する方法を見てみましょう。サードパーティのアンチウイルスを使用しており、そのアンチウイルスでファイアウォールが管理されている場合、PowerShellコマンドは機能しません。ルールを正常に作成できますが、ファイアウォールがサードパーティのアンチウイルスで管理されている場合、これらのルールは機能しません。

新しいWindowsファイアウォールのルールを作成したい場合は、次のコマンドレットを使用する必要があります:

New-NetFirewallRule

たとえば、WiFiプロファイルでプログラムがインターネットにアクセスするのをブロックしたい場合は、次のコマンドを使用します:

New-NetFirewallRule -Program “プログラムのパス” -Action Block -Profile <プロファイル名> -DisplayName “表示名を入力する” -Description “説明を入力する” -Direction Outbound

上記のコマンドは、Windows Defenderファイアウォールで必要なプログラムに対して送信ルールを作成します。上記のコマンドでは、プログラムのパスをプログラムの正しいパスに、プロファイル名を正しいWindowsファイアウォールプロファイルに置き換えます。表示名はファイアウォールルールの名前であり、説明はオプションです。

たとえば、プライベートプロファイルに対してChromeブラウザをブロックしたい場合は、コマンドは次のようになります:

New-NetFirewallRule -Program “C:\Program Files\Google\Chrome\Application\chrome.exe” -Action Block -Profile Public -DisplayName “Chromeブラウザをブロックする” -Description “Chromeブラウザがブロックされました” -Direction Outbound

ファイアウォールルールに説明を追加したくない場合は、上記のコマンドから -Description “Chromeブラウザがブロックされました” の部分を削除できます。上記のコマンドはパブリックプロファイルでのみ機能します。したがって、ネットワーク接続プロファイルがパブリックでない場合、このコマンドは機能しません。Windowsの設定でWiFi接続のプロファイルを表示できます。次の手順が役立ちます:

  1. Windows 11/10の設定を開きます。
  2. ネットワークとインターネット>Wi-Fiに進みます。
  3. インターネット接続を選択します。
  4. ネットワーク接続のプロパティタブを展開します。

そこにネットワークプロファイルの種類が表示されます。

Google Chromeなど、すべてのネットワークプロファイルでプログラムをブロックしたい場合は、カンマで区切ってすべてのプロファイル名を入力します。したがって、コマンドは次のようになります:

New-NetFirewallRule -Program “C:\Program Files\Google\Chrome\Application\chrome.exe” -Action Block -Profile Domain, Private, Public -DisplayName “Chromeブラウザをブロックする” -Description “Chromeブラウザがブロックされました” -Direction Outbound

上記のコマンドに記載されているとおり、プロファイル名はドメイン、プライベート、パブリックの順序で正確に入力する必要があることに注意してください。それ以外の場合は、エラーが発生します。

同様に、PowerShellを使用してWindows Defenderファイアウォールにルールを作成し、特定のWebサイトをブロックできます。ただし、これにはその特定のWebサイトのIPアドレスを知る必要があります。次のコマンドを使用してWebサイトのIPアドレスを取得できます:

nslookup <Webサイト名>

ブロックするWebサイトに複数のIPアドレスが表示されている場合は、これらのすべてのIPアドレスを書き込む必要があります。すべてのIPアドレスをカンマで区切ります。

Windows DefenderファイアウォールでWebサイトをブロックするためのルールを作成するために使用されるコマンドは次のとおりです:

New-NetFirewallRule -DisplayName "Webサイトをブロックする" -Description "Webサイトがブロックされました" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress IP1, IP2

上記の例は、特定のWebサイトのIPアドレスをカンマで区切る方法を示しています。

Windows PowerShellを使用してファイアウォールルールを有効、無効、削除する

ファイアウォールルールを有効、無効、または削除する場合は、PowerShellで次のコマンドレットを使用する必要があります:

Enable-NetFirewallRule
Disable-NetFirewallRule
Remove-NetFirewallRule

上記のコマンドレットのそれぞれで、ファイアウォールルールの正しい名前を入力する必要があります。たとえば、Block Chromeという名前のファイアウォールルールを作成し、それを削除したいとします。その場合、コマンドは次のようになります:

Remove-NetFirewallRule -DisplayName 'Block Chrome'

PowerShellでWindowsファイアウォールルールを表示する方法

Windowsファイアウォールで作成した送信ブロックルールを表示したい場合は、次のコマンドを使用する必要があります:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound

上記のコマンドは、アクティブなファイアウォールルールのみを一覧表示します。無効なファイアウォールルールを表示したい場合は、上記のコマンドのTrueをFalseに置き換えます。

以上です。お役に立てば幸いです。

PowerSellでファイアウォールルールを設定する方法

さまざまなNetFirewallRuleコマンドレットを使用することで、PowerShellでファイアウォールルールを設定できます。たとえば、新しいファイアウォールルールを作成したい場合は、New-NetFirewallRuleコマンドレットを使用する必要があります。